탭앤테크

Windows XP Prefetch

작성자 정보

  • 소다팝 작성
  • 작성일

컨텐츠 정보

본문

김형욱 [yurius] 님의 글입니다.

국내 정보사이트에 도는 윈도우 팁들이 다 그렇지만,
긍정적인 부분보다는 부정적인 부분이 더 많습니다.
이유는 이렇죠.

 

어째서, 왜 이렇게 된다. 라는 정보는 전혀 없고,
'일단 이렇게 고치면 빨라질 것이다.' 라는 대책없는 팁들이 대부분이죠.
게다가 문제는 대다수의 사람들이 이것들을 무의식적으로 따라하게 되고,
이로인해 O/S가 꼬여 역효과가 일어나는 사람들도 있죠.
그런사람들은 또 Q/A 에 내컴고쳐놔라 식의 질문을 올리죠.
즉, 악순환이 반복되고 있다는 문제가 분명히 존재합니다.

 

그래서 하나하나 종지부를 찍어보려 글을 써볼까 합니다.

 

많은 사람들이 인지하지 못하는 부분이 있는데,
윈도우의 기본(디폴트) 세팅부분입니다.
값을 간단히 교체하면 무조건 좋아지는줄로 착각하시는 분도 많죠.
(예외 : 물론 비주얼쪽 부분은 무조건 좋아집니다. 표현을 간략히 하는거니까요.)

 

하지만 여기서 왜 MS가 더 좋은 세팅을 놔두고,
나쁜 디폴트 세팅을 해놓았는지 생각해보신적이 있으신지요?
유감스럽고, 인정하기는 싫지만,
적어도 MS는 우리들보다는 똘똘하죠.
즉, 자잘한것 하나하나도 이유가 있어 그렇게 설정을 해 놓은겁니다.

 

최근 윈도우 부팅속도 빠르게 하기라며 올라오는 Prefetch 삭제법이 있습니다.
이걸 삭제하면 부팅속도가 향상된다는 팁이 돌아다니죠.
심지어, 매번 부팅시마다 삭제시키는 스크립트를 짜는분도 있고...
위의 논리를 생각해서 비교해볼까요?

 

정말로 100% 맞는 팁이라면, MS의 Prefetch 기술은 자동으로 쓰레기가 되는겁니다.
이럴바에는 Prefetch 생성기능을 아예 안넣었으면 더 좋았게요?

 

왜 대부분의 사람들은 Prefetch 를 삭제하면 빨라진다. 라는 하나는 알고,
Prefetch가 무엇을 하는지, 왜 필요한지에 대한 둘은 알려하지 않는지 이해가 안됩니다.

 

어쨌든 이제 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파일을 구별하는 작업이 더 괴로울거라 생각이 드는군요.

 

이번에는 이쯤 끝내도록 하지요.
누누히 말씀드리지만, 모든 패치성 팁들의 사용은 자신의 책임입니다.
스스로 한번쯤 확실히 알아보시고 적용하시기를 바랍니다.
Q/A의 답변자 분들은 꼬인 시스템 A/S 하는 사람이 아닙니다.

 

참고

관련 레지스트리
[HKLM\SYSTEM\CurrentControlSet\Control\Session Manager
     \Memory Management\PrefetchParameters\EnablePrefetcher]
값 : 0 - 사용안함
      1 - Application-Launch Prefetching만 사용
      2 - Boot Prefetching만 사용
      3 - Both
      (MS사는 3번을 추천하고 있습니다. 디폴트는 3)

 

참고 문서

Microsoft - Benchmarking on Windows XP
(home.gifhttp://www.microsoft.com/whdc/hwdev/platform/performance/benchmark.mspx)

 

참고 뉴스그룹

microsoft.public.windowsxp.perform_maintain

관련자료

댓글 0
등록된 댓글이 없습니다.

최근글


새댓글


  • 댓글이 없습니다.