관리 메뉴

미닉스의 작은 이야기들

SSD 이야기 5.SSD와 데스크탑 본문

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

SSD 이야기 5.SSD와 데스크탑

미닉스 김인성 2008. 7. 18. 03:06

5. SSD와 데스크탑

 
 

데스크탑은 휴대용 컴퓨터에 비해서 상대적으로 고성능의 하드웨어를 사용합니다. 부품들의 크기도 별로 제한을 받지 않습니다. 고성능 파워는 필요한 만큼의 전력을 제공해줍니다. CPU는 듀얼코어에서 쿼드코어까지 발전했고, 메모리 4GB 32비트 운영체계가 다 지원하지 못할 정도로 많은 양입니다. 대형모니터와 이를 지원하기 위한 고속 그래픽 카드까지, 모든 부분이 고성능화되어 있습니다.

 

다만 하드디스크가 이 발전을 따라가지 못한 것이 문제입니다. 용량을 제외한 성능은 여전히 낮아서 다른 하드웨어를 발목잡고 있습니다. 이 장에서는 특별히 데스크탑에서 발생하는 하드디스크의 성능 문제를 해결할 몇가지 방안을 찾아 봅니다. 단순히 하드디스크를 SSD로 교체하는 것 이상의 해결책이 있을 것입니다. 데스크탑에 기본으로 설치되어 있는 하드웨어를 이용하여 최소한의 비용만으로 저장 장치의 성능을 극대화하는 것, 이 것이 이번 장의 목표입니다.

 

1. RAID

 

 

한 개의 하드디스크로는 성능이 많이 부족합니다. 가장 간단히 생각할 수 있는 것이 여러 개의 하드디스크를 엮어서 쓰는 것입니다. 사실상 지금도 이 것이 가장 현실적인 방법입니다. 레이드(RAID)는 동일한 하드디스크를 여러 개 사용하여 최대한의 대역폭을 끌어낼 수 있습니다.

 



일반적인 하드디스크의 성능은 Read 95MB/s Write 88MB/s 입니다.

 

 


두 개를 붙이면 대역폭은 2배가 늘고

 


3
, 4개 일 때는 각각 3, 4배가 늘어납니다.

 



대역폭 비교 그래프: 개수에 비례한 증가를 볼 수 있습니다. 4개 이상 24개까지도 붙일 수 있지만 극한 값은 레이드 컨트롤러의 성능과 인터페이스의 최대 대역폭에 좌우 됩니다.

 

 

그러나 대역폭은 높일 수 있지만 하드디스크를 아무리 많이 달아도 액세스 타임은 그대로 입니다. 때문에 IOPS는 하드디스크 개수가 늘어나도 큰 변화가 없습니다. 멀티타스킹이 기본이 된 요즘에는 전체적인 성능보다는 한 개 한 개의 요청에 대한 빠른 응답속도가 더 중요합니다.

 

IOPS(Input/Output Per Second):
단위 시간당 읽기/쓰기 가능한 횟수, 단위 작업 사이에 부가적인 처리 시간이 필요하기 때문에 대역폭보다는 액세스 타임에 영향을 받습니다.

 

 

하드디스크는 낮은 응답속도가 병목입니다. 데스크탑에서 하드디스크를 레이드로 엮어 쓰는 것은 여러 하드디스크를 단일 볼륨으로 쓰는 효과(레이드 0) 혹은 데이터 안정성을 위한 미러링(레이드 1) 때문입니다. 속도를 위해서 레이드 0를 쓰는 것은 기대와는 달리 큰 효과가 없다는 뜻입니다.

 

 

2. 램디스크

 

하드디스크의 응답속도를 개선시키려고 노력하는 것보다는 차라리 자주 쓰는 데이터가 저장되는 영역을 고속으로 만드는 것이 더 나은 방법일 것입니다.

 


I-RAM: PCI
에서 전원을 공급받고 오른쪽 위에 있는 빨간색 SATA 인터페이스로 데이터를 처리합니다. PC를 끄면 백업배터리가 데이터를 보존하지만 그 시간은 길지 않습니다.

 

 

 

메인 메모리 혹은 메모리 디스크 장치에 작업 중인 프로그램의 temp 디렉토리, 인터넷 파일 저장소 등으로 사용하면 성능은 비약적으로 올라갑니다. 하지만 전원이 나가면 모든 데이터가 없어지는 문제, 램 디스크보다 큰 파일을 처리할 수 없는 문제 등 항상 신경 쓰고 관리해야 하는 부담이 있습니다. 소프트웨어든 하드웨어든 일상적으로 쓰기 위해서는 한 번 설치하고 나면 그 존재를 잊고 사용할 수 있어야 하는데 그러기에는 너무 위험한 방법입니다.

 

I-RAM 같은 하드웨어 제품은 가격도 무시할 수 없습니다. 물론 메인 메모리의 일부를 사용하다고 해도 1GB당 가격이 고가인 것은 마찬가지입니다. 때문에 램디스크를 궁극의 해결책이라고 보기에는 어려움이 있습니다.

 

 
3. CF-SSD: PATA 방식

 

액세스 타임을 개선하는 방법 중의 하나로 최근 노트북을 중심으로 사용되기 시작한 것이 CF-SSD 입니다.

 


  

CF(CompactFlash)에는 가격이 싸고 성능이 낮은 MLC 제품(왼쪽 속도 133x 제품)과 가격이 비싸지만 성능이 좋은 SLC 제품(오른쪽 속도 266x 제품)이 있습니다.

 

CF는 소형 낸드 플래시를 사용하여 제작한 메모리 디바이스로 IDE(PATA) 인터페이스와 상위 호환성을 가집니다. 때문에 PC IDE 포트에 바로 붙여서 쓸 수 있습니다.

 


 

CF2IDE 컨버터는 변환에 있어 아무런 회로가 필요하지 않습니다. 단순히 pin2pin 연결만 시켜주면 됩니다.

 


PC
IDE 케이블에 연결하여 성능을 측정합니다. IDE는 마스터와 슬레이브 두 개를 연결할 수 있지만 한 케이블에 두 개를 연결하여 동시에 읽고 쓰면 성능이 떨어지기 때문에 케이블당 한 개만 쓰는 것이 좋습니다.

 

 






Read 38MB/s
쓰기 19MB/s로 하드디스크(R95MB/s W88MB/s)보다 대역폭은 빠르지 않지만 액세스 타임은 0.2ms60배 이상 빨라졌습니다. 만약 대역폭도 커진다면 훌륭한 하드디스크 대체품으로 사용할 수 있을 것입니다. 이를 위해서 여러 개의 CF를 레이드로 묶어서 사용하는 시도를 해 볼 수 있습니다.

 

 


예전 PC의 메인보드는 IDE 포트가 2개 이상이었는데 요즘은 1개 이상은 보기 힘듭니다. 그리고 IDE 전용 카드도 이젠 구하기도 힘들뿐더러 최대 대역폭이 100MB/s 정도이기 때문에 별로 효용성도 없습니다. 대신 아예 CF를 여러 개 꽂아 쓸 수 있는 제품이 있습니다.

 


PCI
방식의 카드 형태인데 빈 곳에 CF를 꼽으면 컨트롤러가 최대 4개까지 레이드로 묶어 줍니다. 여기에 MLC 타입 CF 4개를 사용하여 성능을 테스트 합니다.


 


생각보다 성능이 잘 나오지 않습니다. CF 네 개를 연결했는데도 두 개를 연결한 정도의 성능 밖에 나지 않습니다. MLC라서 이런 성능이 나왔을 수가 있습니다. SLC를 꼽고 성능을 측정합니다.

 

 



1
개의 SLC CF의 속도입니다. Read 48MB/s Write 37MB/s

 

 


SLC CF 4
개를 사용한 레이드 0의 속도입니다. Read 86MB/s Write 55MB/s

 

 

역시 마찬가지입니다. SLC 4개를 연결해도 두 개 연결한 정도의 성능 밖에 나오지 않습니다. 장착된 레이드 컨트롤러가 속도를 제대로 내 주지 못하기 때문입니다. CF IDE 방식으로 엮거나 간이 레이드 컨트롤러를 사용하는 방식은 별 효용성이 없습니다.

 

 

4. CF-SSD: SATA 방식

 

CF를 제대로 쓰기 위해서는 PATA가 아닌 다른 방식이 필요합니다. 다행히 CF-to-IDE 인터페이스뿐만 아니라 CF-to-SATA 인터페이스도 있습니다. CF SATA에 맞추기 위해서는 프로토콜 변환을 해야 하기 때문에 PATA-to-SATA 브릿지 칩이 장착되어 있습니다.

 


 

개당 1만원 이하에 구입할 수 있는 이 제품은 약간의 호환성 문제가 있기는 하지만 일단 인식이 되고 나면 상당한 성능을 보여 줍니다.

 

 


CF2SATA
의 제 성능을 끌어내기 위해서 외장 레이드를 사용합니다.

 



1개의 CF2SATA SLC 버전의 속도: Read 47MB/s Write 39MB/s, 인터페이스 변환을 거쳤지만 큰 성능 저하는 없습니다. 이 것을 4개 연결하고 레이드 컨트롤러 셋업에서 단일 볼륨으로 만들어 성능을 측정합니다.

 



4
개의 SLC CF2SATA 속도: Read 168MB/s Write 113MB/s, 상당히 좋은 성능을 보이고 있습니다. 1개 일 때에 비해 읽기/쓰기가 거의 4배 정도 나왔습니다.


 

레이드로 사용할 때는 각각의 CF(혹은 하드디스크)로 데이터를 나누는 단위 용량(Chunk Size)보다 더 큰 용량의 데이터를 써야 레이드 0의 분산 효과가 나타나 성능 향상이 있습니다. 때문에 64KB 이상의 데이터를 쓸 때부터 최대 분산 효과가 나타나 대역폭이 높아 졌습니다.

 


MLC 4
개를 묶어도 성능 향상이 있습니다. Read 150MB/s Write 69MB/s.

 

 

SLC에 비해서 읽기 속도는 88%, 쓰기 속도는 60% 수준으로 많이 떨어집니다. 특히 작은 블럭 쓰기에서 극악의 속도가 나옵니다. 때문에 현재 SSD MLC로 만든 것은 스팩과 다르게 실 사용에 있어서 성능 저하가 심합니다. MLC 버전은 당분간 성능이 개선될 때까지 기다리는 것이 좋을 것으로 생각됩니다.

 

MLC 8G의 가격은 2008 7월 기준으로 33,000원입니다. 4개의 CF2SATA 인터페이스를 합치면 172,000입니다. MLC는 사실 성능이나 안정성 면에서 별로 좋은 선택이 아닙니다. 가격이 조금 비싸지만 SLC 타입의 CF를 사용해야 문제가 없을 것으로 보입니다. SLC 4개의 가격은 40만원입니다.

 

여기에 더해 레이드카드도 필요합니다. 싼 제품은 65,000원짜리도 있지만 그나마 제 성능을 내려면 150,000원 이상은 들여야 합니다. 이렇게 SLC CF-SSD 4개를 구성하는데 550,000이 듭니다.

 

SLC CF-SSD의 성능은 상당히 좋습니다. 문제는 가격이 싸지 않다는데 있습니다. 본격적으로 하드디스크 대용으로 만든 것이 아니라서 여러 가지 부가적인 비용이 들기 때문에 잘못하면 같은 용량의 SSD보다 비싸질 우려가 있습니다. CF-SSD를 저렴하게 쓰기 위해서는 또 다른 노력이 필요합니다.

 

5. 외장 레이드, 보드 레이드, 소프트웨어 레이드

 

CF-SSD를 쓰기 위해서 꼭 레이드 컨트롤러가 있어야 할까요? 최근에는 메인보드에 IDE가 없는 대신 SATA 포트가 여러 개 있습니다. 또 많은 경우 보드에 레이드 컨트롤러가 내장되어 있습니다. 물론 전용 드라이버를 통해서 CPU 자원을 사용하는 준 소프트웨어 레이드지만 성능은 뛰어납니다.

 

인텔 칩셋을 사용하는 경우 ICH(7,8,9.10)R 이라고 마지막에 R이 붙으면 레이드 기능이 있는 보드입니다. Nvidia 보드에도 물론 레이드 기능이 있습니다. 메인보드의 레이드가 제 성능이 나온다면 비싼 외장 레이드 컨트롤러 가격을 절약할 수 있을 것입니다.

 



내장 레이드 속도: Read 155MB/s Write 71MB/s(외장 레이드 Read 150MB/s, Write 69MB/s)

 

메인보드의 SATA 레이드 컨트롤러도 전용 레이드 컨트롤러에 못지 않은 성능을 내줍니다. 일부 구간에서는 더 빠른 성능이 나옵니다. 만약 보드에 레이드 기능이 있다면 저렴하게 SATA 방식 CF-SSD를 고속으로 사용할 수 있다는 뜻입니다.

 

외장 레이드 컨트롤러도 없고 레이드 기능이 내장된 메인보드도 없다면 어떻게 해야 할까요? 그럴 때는 소프트웨어 레이드를 시도해 볼 수 있습니다. 윈도우와 리눅스 운영체제에는 raid-0, raid-1 심지어 raid-5까지 지원하는 소프트웨어 레이드 레이어가 내장되어 있습니다. 이 것의 성능은 어떨까요?

 


SLC CF 8GB 4
개를 윈도우의 동적 볼륨 중 스트라이핑(stripe) 모드로 묶습니다. 이 것은 소프트웨어 레이드 0에 해당됩니다.

 

 


소프트웨어 레이드 성능: Read 179MB/s Write 128MB/s,

 

 

소프트웨어 레이드의 성능이 외장 레이드, 보드 내장 레이드와 거의 차이가 없습니다. CF-SSD 개수에 비례하여 성능이 증가합니다. 물론 CPU 사용량도 커지지만 듀얼 CPU인 경우 이 것도 크게 문제가 되지 않습니다.

 




외장 레이드, 보드에 내장된 레이드(보드 레이드), 운영체계가 제공하는 소프트웨어 레이드(OS 레이드)에 각각 SSD, CF SLC, CF MLC, 하드디스크를 사용하여 대역폭 변화를 테스트 한 것입니다. 읽기 성능은 모든 장치에 대해서 개수에 비례하여 증가하였으며 성능은 SSD > HDD > SLC CF > MLC CF 순이었고 레이드 효율은 OS 소프트웨어 레이드 > 외장 레이드 > 보드 레이드 순이었습니다.

 

 


쓰기 성능은 SSD > HDD > SLC CF > MLC CF 순이었으며 레이드 효율은 OS > 내장 = 외장 순이었습니다.

 

 

SATA PATA 레이드 컨트롤러는 기본적으로 소프트웨어 레이드입니다. 일부 고가의 하드웨어 레이드 컨트롤러 제품을 제외하고는 디바이스 드라이버가 메모리에 상주하며 CPU 자원의 일부를 레이드로 주고 받을 데이터 처리에 사용합니다. 때문에 CPU가 고성능화된 지금 오히려 OS에서 제공하는 레이드 0,1이 레이드 컨트롤러에서 데이터를 처리하는 것보다 더 효율적으로 동작합니다.

 

현재 SSD를 제외하고 가장 저 비용으로 고성능을 낼 수 있는 방법은 CF 2~4개를 CF2SATA 인터페이스를 사용하여 보드의 SATA 포트에 연결한 다음 운영체계가 지원하는 소프트웨어 레이드 방식을 사용하는 것입니다. 가격이 정말 문제가 된다면 MLC 타입을, 성능을 우선시 한다면 SLC 타입을 사용하면 됩니다. MLC로 이렇게 32GB CF-SSD로 꾸미는데 2008 7월 기준으로 17만원 정도, SLC로 꾸미는데 40만원 정도가 듭니다

 

6. SSD

 

CF-SSD 레이드로 빠른 응답속도와 넓은 대역폭을 얻을 수 있지만 사실 최선의 선택은 아닙니다. CF를 하드디스크 대용으로 쓰는 것이 안정적인지 의문스럽습니다. 순차 읽기 쓰기에 최적화된 CF가 랜덤 읽기 쓰기에도 빠른지는 사용해보면 금방 알 수 있습니다.

 

더구나 CF CF2SATA 어댑터를 합치면 SSD에 비해서 싸지도 않습니다. 가격 경쟁이 붙은 지금 CF-SSD 레이드보다 같은 용량의 SSD가 더 낮은 가격에 팔립니다. 그러므로 안정성을 생각한다면 당연히 SSD로 가는 것이 정답입니다. 아마 데스크탑에서 다음과 같이 사용하는 것이 일반적일 것입니다.

 


부팅과 임시 데이터 저장소등으로 SSD를 사용하고 대용량의 데이터를 위해 1TB 이상의 하드디스크를 사용합니다. 속도와 용량, 가격과 안정성 등을 두루 확보할 수 있는 최선의 선택입니다.

 

 

그러나 이렇게 사용하다 보면 하드디스크와의 차이를 별로 느끼지 못합니다. 처음에는 부팅 속도도 빠르고 프로그램도 빨리 뜨지만 좀 사용하다 보면 운영체계가 엉키고 초기 실행 파일이 많아져서 속도가 떨어집니다. SSD만 믿고 최적화를 하지 않고 쓰다 보면 온갖 잡다한 프로그램들이 돌고 있고 실시간 바이러스 감시 프로그램이 여러 개 떠 있기도 합니다. 메모리가 모자라 스왑이 생기기 시작하면 아무리 SSD라도 체감적으로 성능 저하를 느끼게 됩니다.

 

100MB/s 정도의 대역폭은 한 두 개의 프로그램만 돌아도 금방 병목이 됩니다. 동시 작업이 빈번하게 되면 대역폭이 장애가 되어 응답 속도도 느려집니다. 다시 기다리는 시간이 길어지고, 답답해서 컴퓨터 본체를 발로 차며 신경질을 내게 되지요. 인간의 욕심은 끝이 없어서 빠르면 빠를수록 좀 더 로드를 걸게 되고 그 로드를 감당하지 못하는 SSD에 화를 내게 되어 있습니다.

 

데스크탑에서 SSD에게 가장 요구되는 것은 빠른 응답속도를 확보해 줄 수 있는 높은 대역폭입니다. 그 것은 다수의 SSD를 병렬 연결하여 전체 대역폭을 높여주는 것으로 해결할 수 있습니다.

 

사용자 삽입 이미지

32GB SSD 4개를 레이드 0로 연결하여 최대 대역폭을 확보하고 그에 따른 응답속도를 하드디스크와 비교합니다.

 

 

앞에서 보여준 저장장치 읽기/쓰기 성능 비교표에 의하면 레이드에 연결한 다수개의 SSD와 하드디스크의 대역폭은 거의 비슷했습니다. (SSD: Read 460MB/s, Write 333MB/s, 하드디스크: Read 344MB/s, Write 327MB/s)

 

CF-SSD는 대역폭에서 하드디스크에 훨씬 못 미쳤습니다. (SLC CF-SSD: Read 180MB/s Write 128MB/s)

 

하지만 실제 사용에 있어서 하드디스크보다 CF-SSD가 체감적으로 훨씬 빠르게 느껴집니다. 이 것은 CF-SSD 60배 이상 빠른 액세스 타임을 가지고 있기 때문입니다.

 


IOPS
비교: 1개일 때는 SSD가 단위 시간당 읽기 횟수가 하드디스크에 비해 5배 정도 빠릅니다. 하드디스크는 여러 개를 묶어도 성능 증가가 거의 없는 반면 SSD 4개를 사용했을 때 10~15배 이상 더 커집니다. 이 차이는 개수가 증가할수록 더 크게 벌어집니다.

 




마찬가지로 단위 시간당 쓰기 횟수도 많이 연결할수록 더 크게 벌어집니다. 적절한 크기의 파일 쓰기에 있어서 성능은 극적으로 향상되어 거의 10배 이상 빨라집니다.

 

 

SSD 레이드는 하드디스크에 비해서 100배 이상 빠른 액세스 타임을 가지면서도 대역폭도 훨씬 높습니다. 아마 여러분들도 SSD 레이드를 사용해보신다면 궁극의 속도에 대해서 감탄하게 될 것입니다.

 

업체들은 낸드플래시를 병렬화 시킴으로써 SSD의 성능 증가를 꾀하고 있습니다. 현재 100MB/s 대에서 속도 경쟁이 진행 중이며 각 업체들은 차세대 컨트롤러를 통해 2배 이상의 병렬화로 속도 경쟁에서 승리하기 위해서 노력하고 있습니다. 때문에 미미한 컨트롤러 수준의 속도 증가를 얻기 위해 우리들이 SSD에 지불해야 하는 비용은 엄청나게 커집니다.

 

SSD를 사용하는데 있어서 SSD 컨트롤러가 낸드를 더 많이 병렬화를 해주도록 기다리는 것 보다는 값싼 보드레이드 혹은 운영체계의 소프트웨어 레이드를 사용하여 SSD 외부에서 병렬화를 시키는 것이 더 나은 선택일 수 있습니다. 물론 현 시점에서 한 개도 비싼 SSD를 여러 개 사용한다는 것은 대단한 사치로 보일 수 있습니다. 그러나 포토샵이나 3D 렌더링을 위한 임시 파일을 위해서 SSD 레이드를 한 번이라도 사용해 본다면 그 필요성에 대해서 공감할 수 있을 것입니다.

 

지금은 비싼 대안이지만 아마 미래에는 상식이 되어 있을 것입니다. 그리고 저희들은 이런 미래를 오늘에 구현하기 위해서 노력하는 자들입니다. 기대하시기를, SSD의 병렬성을 극대화시키면서도 가격 문제까지 해결한 제품을 준비하고 있는 사람들이 있습니다. 어쩌면 이런 특이한 제품을 여러분 자신도 모르게 장바구니에 담게 될 날이 바로 내일일지도 모르겠습니다.

 

인성.

Comments