관리 메뉴

미닉스의 작은 이야기들

SSD 이야기 2.액세스 타임이란 무엇인가? 본문

김인성의 삽질기/3. SSD 이야기

SSD 이야기 2.액세스 타임이란 무엇인가?

미닉스 김인성 2007. 8. 1. 22:05
 

2. 액세스 타임이란 무엇인가?

 

 

 

보조 저장 장치의 역사 속에서 중요한 두 개념인 전송률과 액세스 타임에 대해서 알아 봅니다. 조금 어려운 용어들이 나오겠지만 쉽게 설명하도록 노력해 보겠습니다.

 

 

2.1 전송률

 

 

전송률(transfer rate)는 단위 시간당 전송할 수 있는 데이터 량입니다. 전송률 최대값을 기준으로 본다면 대역폭(bandwidth)과 비슷한 개념입니다.

 

회사나 가정의 네트워크 속도가 보통 최대 전송률로 표현됩니다. 일반 VDSL 인터넷은 초당 5Mb, 10Mb등이지만 요즘 선전하는 광랜은 100Mb/s 입니다. (여기서도 Mb MB 표기법 장난이 들어갑니다. 광랜은 100Mb/s의 속도를 가지는데 바이트로 표현하면 10MB/s에 불과합니다)

 

인터넷에서 블루레이 디스크 용량인 50GB(50,000MB) 크기의 파일을 다운 받는다고 할 때

 

    1MB/s 네트워크에서는 50,000초가 걸리고

   10MB/s 네트워크로는    5000초가 걸리겠지요.

 

즉 낮은 전송률을 가진 느린 네트워크에서는 833분이 걸리고

   높은 전송률을 가진 빠른 네트워크에서는 83분이면 됩니다.

 

우리가 90분짜리 블루레이나 HD-DVD 품질의 VOD를 인터넷으로 서비스한다고 가정하면 전송률이 낮은 네트워크에서는 실시간 서비스를 할 수가 없다는 뜻입니다.

 

 

 



느린 네트워크: 700MB 파일 전송에 4000초가 남았음. 거의 세월입니다.

 

 

 

이미 다 알고 계신 분들도 많겠지만 아직 감이 안 잡히는 분들이 있을지도 모르겠습니다. 복잡해서 이해가 가지 않는다면 전송률이란 그냥 단순하게 물을 흘려 보낼 파이프의 굵기라고 생각하셔도 됩니다.

 

 

2.2 전송률 높이기

 

 

전송률을 높이는 방법은 많습니다. 4차선 도로를 8차선 16차선으로 넓히면 됩니다. 도로를 통과하는 차들의 속도를 높여도 됩니다. CPU의 속도를 1GHz에서 2GHz로 높이고 네트워크 대역폭을 100Mb/s로 다시 1Gb/s로 또다시 10Gb/s로 높이면 됩니다.

 

속도에 대한 욕구는 언제나 인간의 본능을 자극했습니다. 컴퓨터의 성능을 극한으로 높여도 결코 인간을 만족시킬 수 없었습니다. 컴퓨터의 역사는 전송률 향상의 역사였습니다.

 

80년대 초 16비트 IBM XT 8086 CPU의 속도는 5MHz(4.77)에 불과했었지만 현재 64비트 3000MHz까지 높아졌습니다. 각 가정마다 광랜이 들어가고 메모리는 SDRAM에서 DDR로 다시 DDR2, DDR3까지 높아졌습니다. Isa, vesa, pci, agp, pci-express로 그래픽 카드는 하루가 다르게 고성능이 됩니다. PC가 나온 이래 그 성능은 정말 입이 다물어지지 않을 정도로 고속화되었습니다.

 

하드디스크는 33MB/s의 전송률을 시작으로 66MB/s에서 133MB/s까지 그리고 SATA로 넘어 오면서 1.5Gb/s에서 3Gb/s까지 높아졌습니다. 서버용으로 따지면 SCSI 인터페이스는 현재 320MB/s까지 나와 있으며 더욱 속도를 높이기 위하여 시리얼 방식의 SAS로 진화 중에 있습니다.

 

 

 



대역폭 그래프: 컴퓨터 내부의 부품끼리의 데이터 전송률에 관한 그래프. 성능은 극한까지 향상되어 거의 빛의 속도가 장애가 될 정도로 한계까지 도달해 있습니다.

이미지 출처: http://www.tomshardware.com/2006/11/13/shootout_at_the_core_2_corral/

 

 

 


실제 제품: 위의 그래프로 설명되고 있는 ICH8이라는 인텔의 칩셋으로 만든 PC용 메인보드. 예전과 비교하면 가히 슈퍼컴퓨터 급입니다.

이미지 출처: http://www.asus.com

 

 

 

PC의 전송률은 CPU 속도가 4.77MHz에서 4000MHz(4GHz)로 커졌기 때문에 거의 1000배 정도 높아 졌다고 할 수 있다. 거기에 더해 16비트에서 64비트로 처리량이 확장되고, 1CPU당 내장 CPU 모듈이 1개에서 4개로 늘어남으로써 전송률이 약 16000배가 증가했다고 볼 수 있다.

 

 

2.3 하드디스크 전송률의 역사

 

 

하드디스크의 전송률도 많이 향상되었습니다. 최초의 PC용 하드디스크의 전송률은 0.6MB/s 였습니다.

 

 

 



PC
용 하드디스크: mfm 방식의 st-225 21.4MB로써 한 번에 플로피 디스켓 20장 분량의 데이터를 저장할 수 있었습니다. 3600rpm의 고속으로 동작하며 시크타임(seek time) 또한 플로피와는 비교할 수도 없이 빨랐습니다.

이미지 출처: http://phantom.sannata.ru/konkurs/img/andy001/027.jpg

 

 

 

내장 하드디스크는 플로피 디스켓을 몰아냈지만 곧 용량의 한계에 부딪혔지요. 그러나 사용자의 원성에도 불구하고 DOS 640KB 메모리 한계와 함께 40MB의 장벽은 길게 계속되었습니다. 그 후 드디어 새로운 방식의 80MB 하드디스크가 대중화되면서 고용량 시대가 열립니다. 다시 528MB가 한계였던 바이오스 하드디스크 용량 최대값이 깨어지면서 1GB를 넘어갑니다. 또 다시 나타난 8.4GB, 137GB의 한계를 넘고 나서도 고용량화는 계속되어 드디어 1TB(1000GB, 1000000MB) 하드디스크가 등장했습니다.

 

 

 



1
테라바이트 하드디스크: 히다찌 데스크스타 7k1000; 20MB 하드디스크에 비해 오만 배의 용량을 가지고 있습니다. 앞으로 삼십 년 후에는 다시 이것의 오만 배로 용량이 늘어날 수 있을까요? 인터넷에는 하드디스크의 길고 재미있는 역사에 대한 글이 많습니다. 찾아 보시기를
……

이미지 출처: http://www.extremetech.com/article2/0,1697,2131552,00.asp

 

 

 

그 동안 고속화도 진행되어 5400rpm에서 7200rpm 그리고 10000rpm, 15000rpm의 하드가 등장합니다. 인터페이스의 최대 전송률도 3Gb/s(300MB/s)까지 확장되었습니다.

 

 

삼십 년 동안 하드디스크는 발전을 거듭하여 기록 밀도를 높이고 크기와 무게를 줄였다. 용량은 50000배가 늘어났고 전송률은 0.6MB/s에서 100MB/s 160배 증가했다.


 

2.4 레이드: 여러 개의 하드디스크로 전송률 향상 시키기

 

 

한 개의 하드 디스크만으로 전송률을 높이는데 한계에 부딪히자 여러 개의 하드디스크를 묶어서 동시에 쓰고 읽게 함으로써 대역폭을 개선하는 방법이 개발되었습니다.

 

 

 



RAID0:
데이터를 두 개의 하드디스크에 나누어 씀으로써 두 배의 쓰기 속도를 얻을 수 있습니다. 읽어야 할 데이터를 반씩 나누어 읽어 옴으로써 읽기 속도 또한 두 배로 증가시킬 수 있습니다.

이미지 출처: http://www.matbe.com/articles/lire/85/le-raid-theorie-et-pratique/page2.php

 

 





외장 레이드 박스: 하드디스크를 10개 이상 붙이면 초고속의 전송량을 얻을 수 있습니다. 이 정도가 되면 인터페이스가 허용하는 대역폭을 넘어가게 되므로 데이터를 읽고 쓰면서 동시에 다른 작업을 할 수 있는 여유가 생기지요. 때문에 이런 장비는 에라 교정과 데이터 안정성과 같은 특별한 기능도 훌륭하게 수행할 수 있습니다.

이미지 출처: www.cepoint.com/images/16B-SA-8600.jpg

 

 




랩터 레이드0: 초고속을 자랑하는 랩터 4개를 엮어서 레이드를 만듭니다. 최대 전송량을 얻기 위한 비싼 노력.

 


4개의 랩터 레이드로 평균 데이터 전송량 220MB/s에 육박하는 값을 얻을 수 있습니다. 좀 더 튜닝 하면 더 속도를 끌어 올릴 수 있겠지만 이 정도도 훌륭합니다.

 

 

 

전송률에 대한 결론은 다음과 같습니다.

 

레이드를 포함한 다양한 방법으로 하드디스크도 고속화되었다. 전송률로만 따지면 성능의 극한까지 왔다고 말할 수 있다.

 

 

 


그러나 그림에서 보듯이 한 개의 하드디스크의 액세스 타임(1)과 같은 하드디스크 4개로 묶은 레이드의 액세스 타임(2)이 차이가 없습니다. 앞에서 테스트한 저 성능 하드디스크의 액세스 타임(17.6ms)에 비해 2.5배 정도 빠를 뿐입니다. 따져본다면 최초로 PC에 장착된 구형 하드디스크의 액세스 타임(65ms)에 비해 삼십 년 동안 열 배도 늘지 못했습니다.

 

 

 

자 이제 이것에 대해 알아봅시다. 도대체 액세스 타임이란 무엇일까요?

 

 

2.5 액세스 타임

 

 

액세스 타임(access time)은 전송 요청에 대해 데이터가 전달될 때까지 걸리는 시간입니다. 이해를 위해서 또다시 비유로 설명해야 하는 것을 이해해 주시기를……

 

 

 


생활 속의 액세스 타임: 엘리베이터는 언제나 다른 층에 가 있습니다. 버튼을 누르고 기다려야 탈 수 있지요. 재수가 좋으면 엘리베이터의 액세스 타임이 0이지만 대부분은 건물의 중간층에서 일층까지 내려오는데 필요한 시간만큼입니다. 물론 중간에 타는 사람들이 많거나 모든 층을 다 눌러 놓고 내린 개념 없는 초딩이 있었다면 액세스 타임은 세월입니다.

이미지 출처: http://www.worth1000.com/web/media/242993/elevator-original.jpg

 

 

 


인터넷의 액세스 타임: 웹서버가 느리게 반응하거나 응답하지 않으면 에러가 뜹니다. 100Mb/s의 광랜이든 전화 접속 네트워크든 상관없습니다. 높은 전송률을 가지고 있더라도 요청에 답변하지 않는다면 액세스 타임은 무한히 길게 됩니다.

 

 

 



소프트 매체의 액세스 타임: 처음부터 볼 때는 아무런 지연을 느낄 수 없습니다. 누군가 보고 나서 되감지 않았다면 끝까지 가 있는 테이프를 되돌려야 하는 지루한 시간이 필요합니다. 중간에 보고 싶은 부분만을 보려고 하면 리모컨을 들고 복잡한 조작을 해야 합니다. 물론 처음부터 보더라도 광고를 피하기 위해서는 빨리 감기도 필요하지요. 한 시간짜리 테이프이라고 할 때 빨리 감기 속도 10배속이라고 하면 평균 액세스 타임은 3(전체를 감는 시간 6분의 반)입니다.

 

 

 



하드디스크의 액세스 타임: 전자 데이터가 물리적인 헤더(, 기계팔)를 통해 자기 데이터로 변환됩니다. 오른편 사진의 헤드가 디스크의 한쪽 끝에서 반대쪽 끝까지 이동하는 시간의 반이 바로 시크 타임(seek time)입니다. 여기에 더해 추가적인 지연 시간을 합치면 바로 액세스 타임이 됩니다.

이미지 출처: http://www.pro.or.jp/~fuji/pasocomlife/1997-12-16.html

 

액세스 타임은 요청에 응답할 때까지 걸리는 시간이다. 이 값은 반응속도로 생각할 수 있다. 액세스 타임이 길면 느린 응답으로 인해 다른 작업들이 대기해야 하며 기다리는 사용자 입장에서는 답답함을 느끼게 된다.

 

 

2.6 하드디스크의 액세스 타임이 만드는 문제들

 

 

사용자 삽입 이미지



하드디스크에는 파일들이 그림과 같이 저장되어 있습니다. 컴퓨터를 사용하는 동안 각종 파일들을 수시로 읽고 쓰며 삭제하다 보면 실린더 헤드가 디스크의 여기 저기로 이동해야 합니다.

 

 

 

각각 흩어져 있는 14개의 파일을 읽는다고 가정할 때

 

  총 파일의 크기 : 100MB ( 20MB x 2, 10MB x 4, 5MB x 3, 1MB x 5)

 

액세스 타임이 없을 때 걸리는 시간: 1 (하드디스크 전송률이 100MB/s 이므로)

 

액세스 타임이 있을 때 걸리는 시간: 2

 

320GB 하드 디스크 일 때 데이터를 쓰는 디스크 수 2, 양면이므로 총 4,

한 면당 데이터 수는 80GB, 40000개의 동심원(트랙)이 있으며 트랙당

평균 2MB 정도의 데이터를 가지고 있음.

 

100MB 50개의 트랙이 필요하며 조각난 정도가 30%라고 가정하면, 한 트랙

보다 큰 파일이 차지하는 다수개의 트랙, 한 트랙보다 적은 파일들이 분산되어

있는 다수개의 트랙을 계산하면 약 100개의 트랙에 분산되어 있다고 할 수 있음.

 

모든 파일을 읽기 위해 트랙을 왕복한다면 시크타임 10ms로 가정했을 때 약

1초가 걸림.

 

하드디스크의 액세스 타임은 데이터 전송에 걸리는 시간을 두 배로 만들고 전송률을 반으로 떨어뜨린다.

 

어떻게 보면 이 정도의 시간은 별로 문제 될 것 같지도 않습니다. 그러나 상황은 좀 더 복잡합니다. 한 번에 여러 작업을 하는 윈도우 시대에 들어옴으로써 언제나 하드디스크를 액세스하려는 프로세스들이 줄을 서서 대기하고 있습니다.

 

 

 


수 많은 프로세스들은 각자 CPU를 차지하기 위해 싸우며 하드디스크를 혼자 쓰려고 시도합니다. 바이러스 체크 프로그램은 모든 데이터를 일일이 감시합니다. 웹서핑을 도와주는 익스플로러는 웹페이지 하나 열 때마다 하드디스크를 뒤져서 이전에 받아 놓은 데이터와 일치하는지 검사합니다. 임시로 받은 파일은 임시 디렉토리에 저장되며 메모리가 모자라면 하드디스크를 메모리처럼 쓰는 가상메모리가 동작하여 컴퓨터의 성능을 극적으로 떨어뜨립니다.

 

 

 

몇 개의 프로세스가 도는 상황을 생각해 보겠습니다.

 

1.       P2P 프로그램이 돌고,

2.       하드디스크에서 하드디스크로 파일 복사 중이고

3.       백그라운드로 백신 프로그램이 돌고 있으며

4.       익스플로러로 웹서핑을 하는 상황입니다.

 

P2P 프로그램은 파일을 무수히 조각 내어 저장함으로써 한 개의 파일이 하드디스크 전체에 분산되도록 만듭니다. 액세스 타임의 대부분을 잡아먹는 주범입니다. 이 때 하드디스크에서 하드디스크로 파일을 복사하면 헤드는 0.5초 동안 P2P 프로그램이 원하는 파일 저장을 위해 움직이고 0.5초 동안은 파일 복사를 위해 움직입니다.

 

P2P 프로그램은 분산 저장이 많기 때문에 작업 시간의 대부분을 헤드 이동에 소모합니다. 파일 복사는 파일을 읽고 쓰기 위해 헤드가 이동해야 합니다. 그러므로 P2P 프로세스와  시간을 나누어 써야 하므로 복사 작업만을 할 때보다 작업 시간이 두 배가 걸리고 P2P 프로그램의 데이터 전송 작업 중에 제어를 넘겨 받아 복사 작업을 위해 헤드가 이동되어야 하므로 실제 작업을 준비하기 위한 시간이 필요합니다.

 

한 편 백신 프로그램은 하드디스크를 뒤져 파일 하나하나를 검사하고 있습니다. 그와 동시에 웹서핑을 위해 익스플로러가 동작하면 웹페이지의 파일들을 받아 놓은 파일과 비교하기 위해서 하드디스크를 뒤집니다. 그 사이사이에 백그라운드로 윈도우 내장 서비스 프로그램이 하드디스크를 사용합니다.

 

이 모두를 종합하여 모든 프로세스는 매 1초마다 각각 0.1(100ms)동안만 컴퓨터를 지배하고 하드디스크를 쓸 수 있다고 가정합니다.

 

100ms의 처음에 다른 프로세스 때문에 엉뚱한 곳으로 가 있는 하드디스크 헤드를 옮겨 오는 10ms가 필요합니다. 하드디스크는 사실 즉각적으로 응답하지 않습니다. 한 번 쓰기나 읽기 작업이 시작되면 끝날 때까지 모든 프로세스는 기다려야 합니다. 다른 프로세스가 시킨 작업이 오래 걸릴 것으로 예상되면 현재의 프로세스는 작업을 포기하고 제어권을 다른 프로세스에 넘깁니다. (지금도 충분히 복잡한 이야기를 하고 있지만 이보다 더 복잡해지지 않기 위해서 더 깊은 부분은 포기합니다.)

 

홀로 복사 작업을 한다면 10초면 끝나겠지만 작업 시간을 다른 프로세스와 나누어 써야 하므로 예상 시간만 해도 그 열 배인 100초로 늘어납니다. 여기에 배정받은 작업 시간에 복사를 진행할 수 있도록 하드디스크 등을 다시 준비하는 시간이 들어갑니다. 오버헤드는 점점 커지고 작업 완료 시간은 예측할 수 없을 정도로 늘어집니다.

 

복사는 알아서 하기 때문에 그렇다고 치지만 익스플로러는 링크를 누른 후에 웹 페이지가 뜰 때까지 견딜 수 없을 만큼 긴 시간을 멍하니 기다리고 있어야 합니다. 답답하고 환장할 일입니다. 애꿎은 마우스와 키보드를 괴롭히고 본체를 발로 차보기도 합니다. 참다 못해 모니터를 집어 던지는 사람들도 있지요.

 

액세스 타임은 프로세스들이 본 작업을 위해 써야 할 시간을 대기 시간으로 소모하게 만든다. 이 것은 작업 프로세스가 많아질수록 급격하게 증가하여 컴퓨터가 거의 반응하지 않을 수준으로까지 효율을 떨어뜨린다.

 

 

2.7 하드디스크: 살아 있는 전자 화석

 

 

데이터 전송률이 엄청나게 높아지고 CPU의 성능이 눈부시게 발전했으며, 브라운관에서 LCD로 모니터가 변화하고 있는 동안 하드디스크는 최초 PC에 장착될 때에 비해서 크게 변한 것이 없습니다. 3600rpm의 회전률이 7200rpm으로 두 배 증가한 정도지요. 액세스 타임은 10배 정도 늘어났지만 이건 요즘의 멀티태스킹 환경을 감안한다면 전혀 늘어난 것이 아닙니다.

 

 

 


Mdir: 도스 시절의 대표적인 쉘, 간편한 사용법, 빠른 응답속도 윈도우가 지배하기 전에도 이렇게 훌륭한 환경이 존재 했었다.

이미지 출처: http://www.zdnet.co.kr/i/microsite/aspirin/blog/mdir/mdir.gif

 

 

 

도스 시절에는 한 번에 한 개의 프로그램만 사용했습니다. 프로그램의 크기도 1M 정도로 별로 크지 않았습니다. 처리하는 데이터도 그 정도였습니다. 단 한 개 프로세스가 10MHz CPU를 홀로 다 쓰면서 20MB의 용량에 65ms의 액세스 타임을 가지고 있는 하드디스크에 1M 단위로 데이터를 전송했기 때문에 컴퓨터가 느리다고 느낄 이유가 없었습니다. 텍스트 전용 화면 혹은 간단한 그래픽 환경은 즉각적으로 반응했고 게임이든 사무용 프로그램이든 아무런 딜레이 없이 초고속으로 사용할 수 있었습니다.

 

 


윈도우 비스타: 높아진 전송률과 빨라진 액세스 타임을 오에스가 다잡아 먹는다. 일단 오에스가 배를 불리고 혹시 남는 것이 있으면 다른 프로그램에 할당해 줄 수도 있다. 시스템이 느리다구? 빨리 가서 업그레이드 해. 씨피유랑 메모리도 늘리고 그래픽 카드도 좋은 것으로 장만해야지, 이번 기회에 하드디스크도 넉넉히 1TB 정도 되는 것으로 갖춰보라구. 모니터는 당연히 24인치 와이드로 가야 하는 거 알지?

이미지 출처: http://minaddikts.free.fr/?page_id=50

 

 

그러나 좋았던 도스 시절에 비해 윈도우 시대가 더 낫다고 말하기 힘듭니다. 인터넷은 높은 전송률에도 불구하고 느리게 반응합니다. 온갖 바이러스와 스파이웨어가 시스템 자원을 잡아 먹고, 알 수 없는 프로그램이 돌고 있으며, 동영상 한 개도 1G에 육박해서 500GB 하드디스크도 모자랍니다. 파일 하나 복사하는데도 몇 십 분씩 걸립니다. 파일 복사는 그냥 복사만 열심히 하면 되지 윈도우는 전송 과정을 그래픽으로 보여 주겠다고 종이를 날려대는 그림을 표시하느라고 시스템 자원을 다 잡아 먹습니다. 비스타는 오에스 자체가 바이러스가 아닌지 의심스러울 정도로 쓸데없는 부분에 집중하여 필요한 작업에 자원을 배분하지 못하게 되었습니다.

 

멀티타스킹 환경의 다중 작업에, 늘어난 데이터량 때문에 열 배 남짓 늘어난 하드디스크의 액세스 타임은 최대의 병목으로 작용해 여태까지의 컴퓨터 성능 향상을 무의미한 것으로 만들고 있습니다.

 

그러나 가격대 성능비로 따졌을 때 아직까지는 하드디스크를 이길 만한 것이 없습니다. 애물단지이기는 하지만 하드디스크를 버릴 수는 없었으므로 그것은 그대로 두고 성능을 개선하려는 시도가 있어왔습니다. 선사 시대의 유물을 끌어 안고 미봉책으로나마 액세스 타임을 줄여보려 했던 눈물겨운 삽질의 역사에 대해 한 번 들어보시겠습니까?

 

김인성.


Comments