ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.