반응형

윈도우XP의 지렁이의 갯수는 c:\windows\Prefetch 안의 .pf 파일의 갯수와 밀접한 관련이 있습니다.

여기서 pf파일이란 디스크의 I/O를 줄여보려는 노력에서 나온 산물이며 실제 프로그램 로딩의 경우 prefetch가 작동중이면

prefetch폴더 안의 파일을 찾아 메모리로 바로 불러올수 있게 만든 파일입니다.

(pre<미리>+fetch<가지고오다>)

이 파일에 대한 크기는 4~64K로 제한되며(하드웨어 리소스 제한크기와 같죠.)

layout.inf에 정의된 실제 메모리로 올라갈 블럭, 파일의 위치등에 대한 정보를 담고 있습니다.

프로그래밍을 하셨던 분이면 상당히 좋은 기술이라 생각하실것으로 믿습니다.

메모리 영역과 데이터 영역을 따로 나누어 메모리 영역을 해당 파일에서 나누는것이 아니라

실제 메모리와 파일의 위치로 나누어 메모리는 바로 올려버리고 그 파일에서 데이터를 참조하게 만들어버린.. 상당히 강력하고도 효율적인 기술입니다.

이 prefetch시스템의 문제는 install이나 setup조차도 pf로 만들어버린다는데 있죠. (레벨1,3의경우)

(그렇기 때문에 c:\windows\prefetch 폴더를 가끔씩은 정리 해주셔야 합니다.)

이것들을 제대로 최적화 해줄 경우 실제 사용자가 입력하는 시간이 상당히 줄어듭니다.

단지 화면 띄우는 시간이 지렁이1~3이 된다해도 실제 기동이 16초 정도 소요되는 반면

prefetch를 사용할 경우 지렁이 6~10개가 되지만 실제 기동시간은 12초 정도로 줄어들게 됩니다.

*.pf 파일들은 윈도우 시작시 불러들이는 소스와 정보를 가지고 있습니다..

소스와 정보가 아닌 실제 메모리의 위치와 파일에 관한 정보를 가지고 있다라고 수정되어야 하며

이 글의 부분도 시작시 불러들인다는 설정은 prefetch 2레벨인 시스템 기동에 관한 ntosboot-????????.pf 파일만이 해당됩니다.

XP의 경우에는 응용프로그램까지 포함하는 3레벨이 기본값입니다.

이에 대해서 잘못 알려진 사실이 레벨 3을 사용하다가 레벨 2로 낮출 경우 현재 가지고 있는 pf만 정의된다고 그것이 효율적이라 알고 계신 분들이 대다수입니다.

하지만 레벨 2로 낮출 경우 실제 ntosboot-????????.pf만이 적용되며 나머지는 있어도 아무런 의미가 없는 파일들이 됩니다.

실제 사용 목적이 단순 프로그램에 있다면 prefetch가 상당한 효용이 있지만 이런 prefetch가 별 효용이 없는 초대형 프로그램을 사용하시는 분들도 많습니다.

이럴땐 prefetch레벨을 2로 두시고 인덱스서비스를 기동하는것이 접근이나 메모리 효율이 훨씬 좋습니다.

인덱스서비스를 기동하면 느려진다는 분들이 많이 계신데 레벨2의 설정을 하고 계시면 인덱스에 관한 정보나 수집에 관한 메모리 또한

시스템에 관련된 부분이기때문에 레벨 2인 ntosboot-......pf안에 포함되게 됩니다.

즉, 상황에 따라서 자신이 판단해야겠죠..

일반 사용자라면 prefetch 레벨3(기본값)으로 두시는것이 좋고

(부팅관련파일,응용프로그램 모두포함/insstall.exe, setup.exe등까지도 포함),

덩치큰 프로그램을 자주돌리시는 분은 prefetch 레벨2 (부팅관련파일만 포함) ,

일반 사용자중에 부팅속도와 관계없이 리소스에 조금이나마 여유를 두고자하시는분은

prefetch 레벨1 (부팅관련파일은 제외, 응용프로그램만을 포함)

지렁이 기어가는게 죽어도 보기싫으면 prefetch 레벨0으로 하시면 됩니다.

(pf사용안함/지렁이는약0.5~1개 밖에 안보입니다./프로그램을불러들일때성능저하가 있을수있습니다.)

prefetch 레벨을 변경하는 방법은 아래 4줄을 메모장에 붙여넣기하시고 "아무이름.reg"로 저장하셔서 더블클릭후 등록하시면 됩니다. 여기서 맨 마지막 숫자 (여기서는 "2") 가 레벨값입니다.


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\Prefetch\Parameters]
"EnablePrefetcher"=dword:00000002


ps. 글중에 레벨값과 관련된부분에서 오,탈구문이 발견되어 수정했습니다. 13:19

아래링크에는 prefetch 사용유무에 따른 차이점이 그래프로 간략히 설명되어있습니다.

참고 http://www.microsoft.com/korea/windowsxp/pro/techinfo/planning/performance/startup.asp#pre

원본출처 :

Microsoft기술문서 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/appendix/hh/appendix/enhancements5_0eecebea-e58b-4c95-8520-9b1dc2bc6196.xml.asp

관련글 ==>http://blog.naver.com/yamwoo/22417424

반응형
l