본격적인 메모리 튜닝에 앞서 먼저 레지스트리 편집기를 이용해 윈도우XP의 메모리 부분을 변경한다. 윈도우XP는 레지스트리 편집만으로도 커널을 메모리에 로드하거나 버퍼 크기 등 고급 항목까지 자유자재로 설정할 수 있다. 두 번째는 메모리를 이용한 램 디스크로 윈도우XP의 전체 퍼포먼스를 향상시키자고 하는 것이다. 물론 램 디스크를 사용하지 않더라도 윈도우XP의 캐시 논리는 윈도우9x와 달리 꽤 효율적으로 동작되도록 설계되어 있으므로, 필요성을 느끼지 못할 수도 있다. 그러나 대량의 압축파일이나 동영상 편집 작업을 많이 하는 사용자에게는 최적의 성능을 제공한다.
어드레스 공간 |
64비트 에디션 |
32비트 에디션 |
페이징 파일 |
16TB |
4GB |
하이퍼 스페이스 |
8GB |
4MB |
페이지 풀 |
128GB |
470MB |
비페이지 풀 |
128GB |
256MB |
시스템 캐시 |
1TB |
1GB |
64비트 아키텍처와 32비트 아키텍처의 비교
덧붙여 윈도우XP가 인식할 수 있는 메모리는 최대 4GB이다. 그 때문에 최대 장착할 수 있는 메모리 용량도 4GB로 생각하기 십상이나 현실적으로는 그리 간단치 않다. 이는 메인보드의 디자인이나 칩셋과의 궁합 등에 따른 문제로 안정적으로 작동 가능한 메모리 용량은 1GB 내지 2GB에 불과하다(이번 실험도 당초 4GB를 장착할 예정이었지만, 안정성을 높이기 위해 2GB를 장착했다). 따라서 메인보드의 최대 용량과 메모리 슬롯을 고려해 512MB×4나 1GB×2 구성으로 장착하는 것이 최적의 방법이다. 그럼 메모리 용량이 적은 유저는 ‘OS 설정과 레지스트리 튜닝으로 파워 업’을, 메모리를 늘렸거나 늘릴 예정인 유저는 ‘램 디스크로 파워 업’을 각각 참고하여 성능을 향상시켜 보도록 하자.
OS 설정과 레지스트리 튜닝으로 파워 업 (1)페이징 파일을 없애자 대용량 메모리를 장착한 경우 페이징 파일(가상 메모리)이 불필요하다고 느끼는 유저가 적지 않을 것이다. 원래 페이징 파일은 메모리가 비쌌던 90년대, 대형 애플리케이션을 조금이나마 빠르게 동작할 수 있게끔 고안된 기능이다. 예를 들면 메모리 512MB를 장착한 시스템 환경에서 인터넷 익스플로러 100개를 실행하면 그 중 약 절반은 페이징 파일을 이용해 작동하게 된다. 이처럼 100이라는 수는 인터넷 익스플로러 실행이나 어도비 포토샵 등의 대형 애플리케이션으로 수십 MB의 이미지 파일을 수정하는 등의 특수 케이스가 아닌 이상 불필요한 셈이다. |
 |
▲ 윈도우XP의 페이징 파일을 없애자. 제어판이나 내 컴퓨터의 오른쪽 클릭 메뉴에서 시스템 등록정보를 실행한다. ‘고급-성능’ 섹션의 설정 버튼을 클릭한 다음 성능 옵션창의 ‘고급-가상 메모리’ 섹션을 선택한다. |
|
 |
▲ 가상 메모리 창에서 페이징 파일이 설정되어 있는 드라이브를 선택한 다음 ‘페이징 파일 없음’에 체크한다. 그런 다음 확인 버튼을 클릭하고 윈도우XP를 재시작하면 페이징 파일이 삭제된다. |
이번 설정은 일반적인 사용 환경에서는 그만큼의 성능 향상을 체감할 수 없겠지만 장시간 여러 가지 애플리케이션을 실행하다보면 효과를 느낄 수 있을 것이다. 다만 장착 메모리 용량이 적은 경우는 ‘메모리 부족 때문에 이 프로그램을 실행할 수 없습니다’는 에러 메시지가 표시되므로, 실행 중인 프로그램을 종료하고 다시 실행하면 된다.
(2)커널 메모리의 페이지 풀을 물리 메모리에 저장 윈도우XP의 코어용 커널이 사용하는 메모리 영역은 페이지 풀과 비페이지 풀로 구분되며 페이지 풀 부분은 가상 메모리를, 비페이지 풀 부분은 물리 메모리의 사용량을 각각 의미한다. 작업 관리자의 성능 탭을 보면 커널 메모리 섹션에는 ‘페이지 됨’과 ‘페이지 안 됨’으로 구분되는데 KB단위로 현재 사용 용량을 표시해준다. 화면에는 약 71MB를 사용 중이다. |
 |
▲ 작업 관리자에서 현재 어느 정도의 커널 메모리를 사용하고 있는지 확인할 수 있다. |
페이지 풀이라는 것은 시스템에서 페이지 인/아웃 할 수 있는 시스템 공간의 가상 메모리 영역을 의미하고, 비페이지 풀은 항시 물리 메모리에 존재하는 시스템의 가상 어드레스 영역을 말한다. 즉 가상 메모리 영역에 있는 페이지 풀 영역을 물리 메모리상에 옮겨 윈도우XP 전체의 퍼포먼스를 향상시키는 것이 이번 튜닝의 목적이다. 레지스트리 편집기에서 HKEY_LOCAL_MACHINE→SYSTEM→CurrentControlSet→Control→Session Manager→Memory Management에 해당하는 키를 찾는다. 그리고 DWORD값인 ‘DisablePagingExecutive’(없는 경우 만든다)를 열어 ‘단위’는 16진수를, ‘값 데이터’는 1을 입력한다(그림 4). |
 |
▲ 레지스트리 편집기로 ‘DisablePagingExecutive’ 값을 설정한다. |
(3)입출력용 메모리 크기를 늘려 파일 시스템을 고속화 하드디스크로 대표되는 하드웨어 장치는 장치 드라이버를 거쳐 데이터의 읽고, 쓰기를 실시한다. 좀 더 구체적으로 말하면 애플리케이션에서 파일을 저장했을 경우 Win32 하부조직을 경유해 장치 드라이버에 명령을 보내면 하드디스크에 저장되는 원리이다. 물론 애플리케이션은 그 대부분이 물리 메모리상에서 실행되기 때문에 물리 메모리에서 장치에의 전달 영역이 중요하다. 여기서 설정하는 ‘IoPageLockLimit’는 이 장치와 물리 메모리간의 읽고/쓰기 속도의 최대치, 즉 장치 드라이버가 사용할 수 있는 최대 I/O버퍼 크기를 지정하기 위한 키다. 때문에 하드디스크의 액세스가 빈번한 경우 이 값을 늘리면 퍼포먼스가 향상되기도 한다. 레지스트리 편집기에서 HKEY_LOCAL_MACHINE→SYSTEM→CurrentControlSet→Control→Session Manager→Memory Management를 찾는다. 그리고 DWORD값인 ‘IoPageLockLimit’(없는 경우 작성한다)을 열어 ‘단위’는 10진수를, ‘값 데이터’는 임의의 수치를 입력한 후 확인 버튼을 클릭한다. |
 |
▲ DWORD값 ‘IoPageLockLimit’를 설정한다. |
그런데 이 임의의 값이라는 것은 바이트 단위로 설정하며 장착되어 있는 물리 메모리 이상의 수치는 설정할 수 없다. 512MB 이상 물리 메모리를 장착한 PC는 4000000, 즉 버퍼 크기를 약 4MB로 설정할 수 있다. 이는 사용자의 시스템 환경과도 연관되는 부분이므로 시행착오를 거쳐 가장 알맞은 값을 찾아야 한다. ‘IoPageLockLimit’키가 없는 경우, 기본 캐시용량은 512KB이다.
(4)애플리케이션 실행용 메모리를 오픈한다 마지막으로 소개하는 튜닝 방법은 그다지 실용적이지는 않지만 메모리 위주의 튜닝이라 함께 소개한다. 윈도우XP는 애플리케이션 실행용 메모리로 초기 약 4MB 정도의 메모리를 확보한다. 이는 장착 메모리가 64MB이하일 경우 효율적으로 사용되지만, 128MB 이상의 환경, 고 사양 PC에서는 쓸데없는 스왑처리가 발생하는 원인이 되기도 한다. 이러한 애플리케이션 실행용으로 확보된 메모리를 물리 메모리로 전환하면 약간의 퍼포먼스 향상을 얻을 수 있다. 레지스터리 편집기에서 HKEY_LOCAL_MACHINE→SYSTEM→CurrentControlSet→Control→Session Manager→Memory Management를 찾는다. 그리고 DWORD값 ‘LargeSystemCache’(없는 경우 작성한다)을 열어 ‘값 데이터’란에 1을 입력한다(그림 6). 레지스트리 편집이 완료되면 윈도우XP를 재시작 한다. |
 |
▲ DWORD값 LargeSystemCache를 변경한다 | |