일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 게임개발
- linear difference equation
- DP
- 유스케이스
- TSet
- Race condition
- 게임 개발
- 운영체제
- 언리얼엔진
- 배경 그림
- dtft
- RBAC
- stride
- CTF
- dirty cow
- AINCAA
- frequency-domain spectrum analysis
- 메카님
- sampling theory
- Unity #Indie Game
- Security
- 유니티
- Double free
- Rr
- MLFQ
- ret2libc
- pdlc
- MAC
- DSP
- STCF
- Today
- Total
다양한 기록
Hard Disk Drive / Time io, Time rate / Disk Scheduling 본문
하드 디스크는 기본적으로 섹터(512 바이트)의 집합임
플래터의 표면 서피스에 데이터를 저장하고, 트랙이 몇천개가 있고, 하나하나 섹터가 있음
섹터 번호를 주고 읽어달라고 하면 읽어주게 될 것
물리적은 읽는 건 서피스마다 존재하는 헤드가 해 줄 것
그리고 암(arm)이 가야하는 섹터로 헤드를 이동시킴 (Seek)
회전은 Rotation
데이터 액세스: Seek time + Rotaion latancy + Transfer time
** 실린더는 여러 원판에서 같은 위치에 있는 트랙들의 집합을 의미
파일 시스템에서 데이터들을 찾을 때 시크 타임이 필요가 없어짐
디스크 액세스 예시
10000 rpm (rotation per minute)
10000 rotation/ms / 60000 ms -> 6ms
한바퀴 도는데 6ms 걸림
평균은 반바퀴니까 3ms가 걸릴 것
멀티플 트랙
보통 시크하는동안 로테이션도 같이 하니까 데이터 액세스 타임에 곧이 곧대로 시간을 다 더하진 않음
Track Skew
트랙에 섹터가 12(0번부터 시작)개 있다고 가정
0번 섹터와 12번 섹터는 각 트랙의 시작 번호가 되겠으나, 12가 0 바로 밑에 있는 건 아니고 위치가 좀 달라짐
대략 2블록 차이
Metrics
- I/O time (latency) : Tio = Tseek + Trotation + Ttransfer
- I/O rate (bandwidth, MB/s) : Rio = SizeTransfer / Tio
** 레이턴시: 실제 입출력하는데 시간이 얼마나
** 대역폭: 정해진 시간 동안 얼마나 많이 읽거나 쓰느냐
Workload
- Random : 랜덤한 위치에 있는 작은 사이즈의 데이터를 읽는 경우 (예: 4KB)
- Sequential : 연속적인 위치에 있는 많은 양의 섹터를 읽음 (예: 100MB)
두가지 디스크 예시
치타와 바라쿠다
치타 | 바라쿠다 | |
용량 | 300 GB | 1 TB |
rpm | 15000 | 7200 |
평균 seek time | 4 ms | 9 ms |
Max Transfer | 125 MB/s | 105 MB/s |
Cache | 16 MB | 16 or 32 MB |
Connects via | SCSI (서버나 워크스테이션으로 연결) | SATA (PC나 서버와 연결) |
1. 치타 기준 분석
a) 랜덤 워크로드 (4KB)
15000 / 60000 = 1/4
4 ms에 한 바퀴 -> 평균 rotation time = 2ms (반바퀴니까)
트랜스퍼 타임: 4 * 1000 KB / 125 * 1000 KB/ms = 0.032 ms
I/O time = 4ms + 2ms + 0.032 ms = 6.032 ms..
I/O rate = 4 KB / 6 ms = 0.66 MB/s
* 6.032 -> 6은 그냥 0.032가 너무 작으니까 무시
b) 순차 워크로드 (100MB)
100 MB / 125 MB/s = 0.8 s -> 800 ms
I/O time = 4 + 2 + 800 = 806 ms
I/O rate = 100 MB / 0.8 s = 125 MB/s
2. 바라쿠다
a) 랜덤 워크로드 (4KB)
7200 / 60000 ms -> 0.12
1ms에 0.12 바퀴 -> 100/12 ms에 1바퀴 .. 평균 구하면 대략 4.17 ms
트랜스퍼 타임: 4 / 105 .. 대략 0.038
Time i/o = 9 ms + 4.17 ms + 0.038 ms = 13.208 ms.. 대략 13 ms
Time rate = 4000 / 13000 = 0.307.. 대략 0.31 MB/s
b) 시퀀셜 워크로드
트랜스퍼 타임: 100 MB / 105 MB/s = 20/21 s (대략 952 ms)
Time i/o : 작은 값 무시하고 20000 / 21 ms
Time rate : 100 MB / (20/21) s = 105 MB/s
여기서 얻을 수 있는 것
시퀀셜이 랜덤보다 훨씬 빠르다
파일 시스템을 접근할 때 시퀀셜하게 접근하도록 하면 성능이 더 좋다.
Disk Scheduler
I/O 요청이 여러개 왔을 때 어떤 순서로 서비스해줄 것이냐
I/O queue
FCFS(First Come First Serve): 먼저 온 요청부터 처리
장점 - 단순
단점 - 시크 타임이 너무 길어질 수 있음
SSTF(Shortest Seek Time First) : 시크 타임이 짧게 걸리는 것부터 처리
장점: seek distance 줄이기 가능
단점: unfair - 먼저 온 요청이 맨 나중에 처리되는 일이 있을 수 있음
특히, 가장자리의 트랙들은 가운데 있는 트랙에 비해 서비스를 덜 받게 됨
SCAN (혹은 Elevator)
한쪽 방향으로 움직이면서 그때 도착한 요청들을 쭉 수행
올라가면서 있는 서비스를 다 해주고, 반대쪽으로 가면서 다시 쭉 수행..
Move back and forth across all tracks
장점: 시크 디스턴스도 적고 형평성도 좋음
C-SCAN
SCAN이 공평하긴 한데, 가운데 있는 트랙들은 두번씩 서비스받는데
양 끝단의 트랙은 상대적으로 덜 서비스 받게 됨
-> 한쪽 방향으로만 서비스
끝나면 다시 안으로 돌아오는데, 돌아올 때는 서비스를 안함
=> 양 끝단의 unfairness 해결
SPTF (Shortest Positioning Time First)
로테이션 타임까지 고려
왜 시크타임만 고려하면 문제가 되는가?
로테이션 방향은 한 방향..
시크가 짧아도 로테이션하고 오는데 굉장히 긴 시간이 걸릴 수 있음
시크만 고려하다가 오히려 길어질 수 있음
시크 타임과 로테이션 타임의 합을 고려해서 스케줄링하는게 SPTF
이밖의 여러가지 이슈 ..
머지: 33, 4, 34 섹터 요청 -> 33번과 34번은 연속된 섹터니까 한 번에 처리
Anticipatory
서비스 중 가장 안쪽에 있는 트랙에서 서비스하다가 다음 리퀘스트가 가장 바깥쪽 트랙인 경우
-> 안쪽에서 잠시 머무름. 안쪽에 요청이 또 오면 그걸 처리하고 가는 것이 나을 것
'운영체제' 카테고리의 다른 글
파일 - 인터페이스 (0) | 2024.05.20 |
---|---|
파일과 디렉토리 (0) | 2024.05.19 |
I/O Device, Device Driver (0) | 2024.05.06 |
데드락 (0) | 2024.05.06 |
Semaphore (세마포) (0) | 2024.04.18 |