다양한 기록

Hard Disk Drive / Time io, Time rate / Disk Scheduling 본문

운영체제

Hard Disk Drive / Time io, Time rate / Disk Scheduling

라구넹 2024. 5. 19. 21:38

하드 디스크는 기본적으로 섹터(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