[부사리]Prefetch폴더관련

By | 2009년 1월 14일
Print Friendly, PDF & Email

Prefetch폴더안에 생기게 되는데요…

인터넷을 이용하게 되면 생기는 파일이구요..

왠만한 분들 다들 주기적으로 삭제하거나 레지스트리수정으로 안생기게 하는데요..

삭제하면 부팅속도가 향상은 되지만 삭제안하는걸 추천드립니다..

레지스트리역시 수정안하는걸 추천드리구요..

Prefetch 란 ‘미리 불러오기’ 기능입니다.
즉 Cache의 기능을 하고 있는것이죠.
너무 간단한가요?
이게 전부인것이 사실입니다.
하지만 많은 분들이 간과하고 있는것중 하나가,
Prefetch 는 크게 2가지가 있으며, 세부적으로 3가지로 분류가 된다는 사실,
이것을 제대로 논한 글은 보지 못했다 생각합니다.

크게는 Application-Launch Prefetching 과, Boot Prefetching 로 나누어집니다만,
디스크 접근성을 향상시키는 역할을 하는 부분도 있으므로.
곧, 3가지로 보시면 됩니다.
물론 여기서는 3가지 기준으로 설명하고요.

1. Boot Prefetching
부팅(지렁이 이후)시 함께 사용되는 파일들을 주로 fetching 합니다.
이 파일들은 윈도우가 스스로 꾸준히 감시해가며 정해나가죠.
단, 윈도우 최초 설치시에는 이러한 정보가 적으므로.
최소 3번 이상 부팅을 해야 가동이 본격적으로 시작됩니다.
특별히 이쪽은 3일 단위로 갱신됩니다.

2. Application-Launch Prefetching
응용프로그램 사용 빈도를 감시하여 높은것들 위주로 fetching 합니다.
주로 감시가 시작되는 시기는 새 프로그램이 설치될때죠.
이것의 효과는 실로 큽니다.
prefetch 된 프로그램과 그렇지 않은 프로그램의 구동속도차이는,
85~90% 에 달합니다.

3. 디스크 접근성 최적화
이부분은 정식 Prefetch 의 역할을 하는것은 아닙니다만,
Boot Prefetching, Application-Launch Prefetching 모두에 적용될수가 있습니다.
혹은 그밖의 파일까지 말이죠.
디스크의 물리적인 한계를 극복하기 위해 사용됩니다.
주로 조각난 (Fragmented) 파일에 많이 걸리게 되죠.
이유는 다음의 예를 참고하시면 쉬울겁니다.

파일이 2개로 조각나있고,
한조각은 하드디스크의 안쪽끝(Inside) 에. 한조각은 바깥쪽끝(Outside) 에 위치할경우,
이 파일을 읽을려면 하드디스크가 안쪽끝에서 반을 읽고 바깥쪽끝까지 이동해야 하겠죠.
이 과정중에 접근시간(Seektime)이 늘어나 버리는 결과를 초래하는 것이고요.
이럴경우에 조각난 파일을 새로 Fetch 시켜버리는겁니다.
매번 조각난파일을 쫒아다니지 않도록 하기 위해서 말이죠.

잠시 쉽게 정리를 해볼까요?
1번항목은 윈도우 로그인 화면에서 바탕화면이뜨고 모든 파일이 로딩되기까지
즉, Standby 상태까지의 속도향상에 기여하고,
2번항목은 부팅이후 응용프로그램의 실행속도에 기여합니다.
뭐, 3번항목은 전반적이겠죠.

이시점에서 지렁이 이야기를 하죠.
Prefetch된 파일들은 지렁이가 지나가는 시점에 로드가 됩니다.
때문에 Prefetch 파일이 많을수록 지렁이수가 증가하는건 당연하겠죠.

Prefetch를 삭제하고 리부팅했다고 가정해볼까요?
당연히 지렁이수는 줄어들겠죠.
하지만 위에서 말한 로그인화면에서 Standby 까지의 시간은 당연히 길어집니다.
그건 그렇다 치고 더 큰 로드가 걸리게 된다는 사실은 아시나요?
+@ 로 Prefetch를 새로 만듭니다.
이작업은 단순한 카피가 아닌 컴파일이죠. 즉 CPU로드가 발생한다는 겁니다.
따라서 이덕분에 본전도 못빼는 결과가 나오게되는거죠.

게다가 부팅 후에도 응용프로그램 실행시역시 +@가 걸리는건 마찬가지겠죠.

Prefetch는 사용자 관할이 아닌 O/S의 영역입니다.
즉, 손댈필요가 없는 부분이죠.
Boot 부분은 3일마다 업데이트된다고 설명했고,
그밖에는 사용빈도에따라 꾸준히 생성되고 사라지고 합니다.
물론 프로그램의 Setup 파일등의 불필요한 Fetch도 올라가기는 합니다만,
시간이 지나면 O/S가 알아서 삭제해주죠.
굳이 삭제를 하겠다면 불필요한 Fetch를 제때 삭제하는방법이 가장 좋은 성능을 보이겠지만,
불필요한 PreFetch파일을 구별하는 작업이 더 괴로울거라 생각이 드는군요.

관련 레지스트리
[HKLMSYSTEMCurrentControlSetControlSession Manager
Memory ManagementPrefetchParametersEnablePrefetcher]
값 : 0 – 사용안함
1 – Application-Launch Prefetching만 사용
2 – Boot Prefetching만 사용
3 – Both
(MS사는 3번을 추천하고 있습니다. 초기값은 3)

댓글 남기기(글만 입력하셔도되요. 이메일,이름,웹사이트 미입력 가능)

This site uses Akismet to reduce spam. Learn how your comment data is processed.