[비스타2] ReadyBoost USB메모리로 성능향상을!
Written by Youngil Kim, C#.NET Developer
Microsoft Windows Vista는 일반적인 작업의 성능향상을 위해 새로운 기술을 내장하고 있습니다. 그중에 하나가 바로 고가의 메모리를 추가로 사용하지 않고 USB플래쉬메모리 장치를 사용하여 성능향상을 도모하는 ReadyBoost라는 기술입니다.
그러나 새롭게 나온 기술이라서 많이 생소할 것이라고 생각이 듭니다. 그래서 이에 대한 아키텍쳐와 실제 성능테스트를 가지고 설명해보겠습니다.

여기서, ReadyBoost와 ReadyDrive의 차이는 다음과 같습니다.
ReadyBoost: USB메모리를 기반으로 성능향샹을 가져오며 USB메모리를 메인메모리로 이용하지 않고 HDD캐쉬를 사용합니다. 외장형 USB메모리형태도 있지만 아래와 같이 내장된 모델도 있습니다.

ReadyDrive: HDD내부에 플래쉬 메모리를 내장한 하이브리드 HDD(플래쉬메모리+HDD)라고 불리우며 이를 통해 고속처리를 해주는 장치입니다. 그러나 아직까지 ReadyDrive는 출시하지 않아 볼 수가 없습니다 ㅠ_ㅠ;
Microsoft사의 설명으로는 운영체제 부팅할 때, 빠른 처리를 위해 부팅관련 데이터를 하이브리드 HDD의 플래쉬멤리 영역에 별도로 저장하고 HDD를 읽고쓰는 캐쉬로 이용된다고 설명하고 있습니다.
이 기술은 Windows XP에 도입되었던 PreFetch기술을 기초로 만들어졌으며 Windows Vista에서 새롭게 채용한 SuperFetch기술을 말합니다.
Windows 운영체제의 메모리 관리구조는 가상 기억 시스템을 내장하고 있습니다. 운영체제가 응용프로그램을 실행할 때, HDD로부터 프로그램이나 데이터를 메인 메모리로 읽어들입니다. 그러나 Windows 운영체제는 실행하고 있는 응용프로그램의 프로그램이나 데이터를 전부 한번에 메인메모리로 읽어들이는 것이 아니라, 실행에 필요한 부분만 메인 메모리로 읽어들인 다음, 다른 부분은 HDD의 가상 메모리 영역(페이징파일,Swap파일)에 저장합니다.
이 메모리 내용의 HDD를 스왑이라고 합니다.
가상 기억을 사용하는 장점으로는 HDD를 가상으로 메모리공간으로 이용할 수 있기 때문에, 실제 메인메모리 용량보다 큰 용량을 이용할 수 있는 것입니다. 참고로 Windows XP는 메모리 내용이 64KB단위로 HDD에 저장되고 Windows Vista는 최대 64MB로 확장되었습니다.
가상기억 시스템은 메인메모리의 제한을 넘어도 사용자가 느끼는 것은 그리 많이 않을 것입니다. 예로 메인메모리 용량이 512MB로 응용프로그램이 사용할 수 있는 용량이 256MB밖에 쓸 수 없는 PC에서 500MB메모리를 사용하는 메일 소프트를 사용할 경우 메모리양이 모자르기 때문에 불필요하게 HDD에 기록하게 됩니다. 그런데 이런 상태에서 또, 500MB메모리를 사용하는 워드프로세스를 실행하면 HDD액세스가 높아져 버립니다.
페이징 파일은 당연히 HDD위에 있기 때문에 CPU나 메인메모리를 비교해보면 HDD로부터 읽는 것은 많은 대기시간이 필요로 합니다. 이 때문에 메인 메로리가 적은 컴퓨터로 메모리 용량을 오버하게 되면 HDD접근 빈도가 올랐다가 떨어지게 됩니다.
Windows XP에서는 PreFetch(%SystemRoot%PreFetch)라는 기능을 준비하여 페이지관리시 HDD 접근을 제한시키는 것으로 PreFetch는 운영체제 시작후, 각 응용프로그램에 의한 HDD 접근을 로그에 기록합니다. 응용프로그램이 이를 사용하려고 할 때, HDD읽기 및 응용프로그램 시작을 빠르게 할 수 있습니다.
2007년 3월 10일 드디어 ReadyBoost(레디부스트)기능을 실제로 테스트해보았습니다.
P4 2.66GHz, RAM 512MB기반의 환경에 2GB USB메모리를 가지고 실험을 해보았는데 성능은 정말 놀라울 정도로 뛰어났습니다. ^^
그외 소프트웨어는 Windows Vista Ultimate, Office 2007, 한글2007, Norton AntiVirus 10.0을 설치하였습니다.
USB메모리는 용량이 2GB 메모리브제품인데 생각보다 괜찮습니다. 현재 1만원대의 제품으로 저렴하죠 ^^;
일단 컴퓨터에 USB메모리를 연결하면 다음과 같은 화면이 나오게 되는데 만약 USB메모리 성능이 ReadyBoost기준에 미달되면 아래화면처럼 나오지 않기 때문에 바로 레디부스트용으로 사용할 수 있을지 확인할 수 있습니다.



* 실행을 빠르게 도와주는 SuperFetch
Windows Vista부터 추가된 이 기능은 자세하게 Microsoft사가 공개하지는 않았지만 PreFetch는 단일 프로세스만 분석하고 SuperFetch는 여러 프로세스를 동시에 분석하고 스왑페이지를 관리합니다. 즉, SuperFetch는 사용자가 어떻게 Windows Vista를 사용하고 있는지 확인하고 응용프로그램 시작도 빨리집니다.
SuperFetch는 운영체제가 시작할 때 바로 움직였고 사용자가 응용프로그램을 어느정도 사용하는지 확인할 수 있기 때문에 SuperFetch는 이용빈도가 높은 응용프로그램의 메모리상의 이미지를 우선적으로 처리하고 HDD로부터 미리 읽도록 하여 동작하게 합니다.
사용자가 다양한 응용프로그램을 사용하여 SuperFetch 데이터가 모이면, 사용자 사용패턴을 이해하고 메모리관리가 편리해져 성능향상을 가져오게 됩니다. 즉, SuperFetch는 페이징파일이나 데이터베이스를 HDD만 사용하는게 아니라 플래쉬메모리에도 저장하여 빠른 플래쉬메모리에서 읽어들여 보다 빠른 처리를 도와주는 역할인 것입니다.
또한, SuperFetch알고리즘을 살펴보면 요일 및 시간요소가 있기 때문에 컴퓨터를 사용하는 사용자가 사용하는 주 프로그램도 요일마다 틀리거나 주말에 주로 사용하는 프로그램이 있을 것입니다. 이런 차이를 SuperFetch는 체크하여 성능개선에 이용합니다. 또한 사용자 계정을 저장하고 체크하기 때문에 여러 사용자가 한대의 컴퓨터를 사용하여도 계정이 다르면 그에 맞춰 성능개선을 하게 됩니다. 즉 SuperFetch는 매일 컴퓨터를 사용한 상황을 데이터베이스화하기 때문에 자주 사용하는 프로그램은 미리 메모리상에 준비시켜두기 때문에 해당 프로그램을 빠르게 사용할 수 있는 장점을 가지게 되는 것입니다.
그외 PreFetch의 경우 대기(idle)상태에서 사용중인 상태로 변화가 될 때, 많은 디스크 스왑이 발생합니다. 예를 들어 점심시간에 밥을 먹을 때 컴퓨터는 전원을 끄지 않는다면 백그라운드에서 V3와 같은 바이러스프로그램들이 동작하기 때문에 컴퓨터 화면이 다소 느리게 동작하거나 하드디스크가 프로그램도 실행하지 않았는데 읽어지는 동작이 나오는 경우를 보셨을 것입니다. 이는 PreFetch가 직전까지 사용한 프로그램 상태만 저장하기 때문에 이전 상태로 되돌리기 위해 다소 시간이 걸리게 되는 것입니다.
이와 반대로 SuperFetch는 백그라운드에서 실행되는 V3와 같은 프로그램이 실행완료되었다는 것이 확인되면 대기상태가 되기 전의 메모리상태로 되돌려주도록 설계가 되어 있고 대기상태인 동안 데스크톱 검색인덱스데이터를 생성하도록 되어 있는 Windows Vista는 성능저하를 막는데 많은 노력을 한 것으로 생각되어 집니다.
또하나, SuperFetch는 자주 사용되는 프로그램의 메모리 이미지를 우선적으로 메모리에 할당하여 실행하기 위해 슬립상태나 중지상태에서 복귀를 빠르게 처리하도록 처리되어 있다고 합니다. 솔직히 이론으로 이렇게 Microsoft사가 주장하지만 실제로 사용해보면 Windows Vista에 채택된 Low-Priority I/O를 이용한 것은 우선순위가 낮은 I/O조작을 일반 응용프로그램에서 HDD접근을 하지 않고 있는 상태를 골라 접근하도록 처리하게 하여 우선적으로 실행되는 프로그램의 성능에 최대한 영향을 주지 않도록 되어 있습니다.

아마도 Microsoft사에서도 인지하고 있겠지만 이 SuperFetch도 완벽한 기능은 아닐 것이라고 생각하고 있기에 이렇게 하나의 서비스로서 사용자에게 선택권을 주도록 배려한 것이 아닐까라는 생각을 해봅니다.
그럼 여기서 SuperFetch캐시를 USB메모리에 쓰는 것이 ReadyBoost일까요?
Windows Vista의 SuperFetch는 스왑인/아웃하는 저장매체를 HDD를 사용합니다. 그러나, CPU나 메인메모리속도에 비추어 보면 HDD액세스는 엄청난 시간이 걸립니다. 이렇기 때문에 SuperFetch로 응용프로그램의 성능을 개선한다고 하여도 컴퓨터 전체 성능을 높이는 것은 한계가 잇습니다. 이것을 보완하기 위해 나온 것이 바로 ReadyBoost라고 보시면 될 것같습니다.
사실 플래쉬메모리의 읽고 쓰는 속도는 메인메모리에 비해서는 느리지만 HDD의 속도에 비해서는 엄청나게 빠릅니다.
즉, ReadyBoost라는 것은 느린 HDD에 대비하여 대용량 저가격인 플래쉬메모리를 SuperFetch액세스를 우선적으로 사용하게 하는 것을 말한다고 보시면 될 것같습니다.
USB메모리를 Windows Vista에 연결하면 하나의 외장 저장장치로 인식되면 속성창에서 ReadtBoost용으로 설정하면 USB메모리안에 ReadyBoost.sfcache라는 파일이 생성됩니다. 이것이 SuperFetch액세스를 할 때 사용되는 ReadyBoost캐시입니다. 그런데 일반적인 HDD의 페이징파일과는 다르게 ReadyBoost는 USB메모리에 직접 쓰기를 하지 않습니다. 이유는 실행 중에 예기치못한 오류로 인해 문제가 발생할 소지가 있기 때문입니다. 즉 USB메모리의 ReadyBoost캐시는 읽기전용으로 사용되고 캐시쓰기는 운영체제가 처리하기 됩니다.
즉, 쓰기는 일단 HDD에 저장하고 나서 Low-Priority I/O를 이용하여 USB메모리에 저장되기 때문에 성능에 최소한 영향만 미치도록 배려되어 있다고 봅니다.
ReadyBoost캐시는 AES 128Bit로 암호화가 되어 있기 때문에 USB메모리를 잃어버려도 해킹될 염려는 안해도 될 것입니다. 그리고 이 캐시내용은 1.8~2.3배로 압축되어 있다고 합니다.
그럼 여기서 ReadyBoost용으로 사용할 수 있는 USB메모리는 무엇이 있을까요?
GOM도 처음에는 모든 USB메모리가 사용될 수 있을 것이라고 생각했으나 아닙니다. =_=;
일단 USB메모리뿐만 아니라 SD카드, CF, 메모리스틱 모두 사용가능합니다만 다음과 같은 조건을 만족시켜야 사용가능합니다.
"메모리 용량은 512M이상(최대 4GB)이고 4KB블럭 랜덤읽기가 2.5MB/Sec이상, 512KB블록의 랜덤읽기가 1.75MB/Sec이상되면 모두 ReadyBoost로 이용가능한 플래쉬메모리입니다."
단, 주의해야 할 점은 디지탈 카메라용으로 나온 고배속의 플래쉬메모리는 시퀀셜 액세스가 고속이지만 랜덤액세스성능이 떨어지기 때문에 ReadyBoost용으로 사용하기 어렵습니다.
또한, USB 2.0에 대응되는 모든 USB메모리가 모두 ReadyBoost용으로 사용할 수 있는 것도 아니었습니다.(GOM이 가지고 있는 USB메모리 몇가지를 테스트해보았지만 모두 조건에 충족하지 못하여 사용하지 못하엿습니다 ㅠ_ㅠ 오늘 ReadyBoost 조건에 충족하는 플래쉬메모리를 찾아봐야할 것같습니다.)
그리고 최대용량이 4GB인 것은 FAT포멧의 한계이기 때문에 스펙지원한계때문이라고 보시면 될 것같습니다. 참고로 Microsoft사에서는 FAT32포멧으로 된 USB메모리는 테스트하고 있지만 NTFS포멧으로 된 USB메모리는 테스트하고 있지 않다고 합니다. =_=;
Microsoft사가 권장하는 ReadyBoost대응 제품을 구분하는 조건으로 아래 "Works with Windows Vista"로고가 있는 제품을 권장한다고 합니다.

GOM은 현재 가격도 저렴한 MEMORIVE 4GB제품을 사용하는데 인식도 안되네여 =_=;
Microsoft가 메인메모리와 ReadyBoost용량 관계를 고려하여 추천하는 것은 메인메모리의 2배가 되는 용량을 권장한다고합니다. 즉, 메인메모리가 1GB이면 ReadyBoost용 USB메모리는 2GB를 사용하는 것이 가장 좋은 성능을 보여주며 최대 3배까지는 성능향상을 기대할 수 있지만 그 이상 오버할 경우 그다지 성능차이는 없다고 합니다.
또한가지, ReadyBoost로 사용할 수 있는 장치는 컴퓨터 한대당 한개만 사용가능하며 여러개의 USB메모리를 연결한다고 해서 다 사용할 수는 없습니다. 그리고 컴퓨터A에서 만들어진 ReadyBoost캐시를 컴퓨터B에서 사용할 수는 없고 새로 생성해야 합니다. 또한 두개의 다른 ReadyBoost를 하나의 메모리에 넣고 장시간 사용한다면 USB하드웨어가 문제를 일으킨다고 보고된 바 있습니다. 그렇기 때문에 다른 컴퓨터에 사용할 경우 기존 ReadyBoost는 포멧하고 사용하길 권장하고 싶습니다.
그리고 ReadyBoost용으로 사용하는 USB메모리는 수명이 짧아진다는 의심을 가질 수 있는데 Microsoft사의 연구에 따르면 10년이상된 메모리에서도 이상없이 작동한다고 합니다.
또한, ReadyBoost캐시가 오류가 나더라도 곧바로 HDD로 캐시를 리턴하여 사용자가 문제없이 운영체제를 사용하도록 배려되어 있고 사용중이던 USB메모리를 뽑아도 운영체제에는 어떠한 영향을 미치지 않도록 하였다고 합니다.
* ReadyBoost에 적합한 메모리는?
GOM이 생각한 ReadyBoost는 인터페이스 전송속도보단 플래쉬메모리 자체 속도가 중요하다고 봅니다. 물론 ReadyBoost용으로 사용할 수 있는 것은 USB메모리, SD카드, CF카드, ExpressCard등이 있으며 다양한 장치를 지원합니다.
그중에서 ExpressCard타입이 가장 성능이 좋을 것이라고 판단됩니다. 왜냐하면, 일반적인 USB메모리보다는 빠른 액세스가 인터페이스부터 지원하고 완전히 메인보드에 내장하기 때문이죠... 그리고 USB메모리의 경우 ReadyBoost 대응 모델을 구입하여 사용하는 것을 권장하며 그중에서도 랜덤액세스성능이 높은 제품을 추천하고 싶습니다. 이유는 성능향상을 기대할 수 있기 때문입니다.
확실히 ReadyBoost는 메인메모리가 적은 컴퓨터에서는 성능개선이 되지만, 진짜로 메인메모리를 대신하는 역할은 아니기 때문에 맹목적으로 메인메모리보단 대용량의 USB메모리를 사용하는 것이 비효율적일 수 있기 때문에 주의해야 합니다.
참고로 찾아보니까 ELECOM MF-MU2모델이 ReadyBoost에 대응된다고 합니다.
[2007.7.27 정보!@Today에 소개되었습니다]
언제나 그대의 벗 봄나라ⓑⓞⓜⓝⓐⓡⓐ 미룸클리닉 계란한판 물망초 곱게 피던날 그린맘 남자라면 핑크!! 길위의 인생 n스킨샵 고무신
