수퍼페치(Superfetch): 비스타의 수많은 하드 디스크 I/O의 원인

@codemaru · August 22, 2007 · 6 min read

제가 비스타를 시스템에 설치해서 사용한지는 꽤 되었습니다. 64비트 컴퓨터를 산지가 꽤 됐으니까 말이죠. ㅋ 그런데 비스타를 처음 깔아서 쓸때부터 지금까지 느꼈던 엄청난 단점이 있었습니다. 바로 엄청난 양의 디스크 I/O 였습니다. 제 컴퓨터는 빠방한 AMD 64비트 듀얼 코어에, 2기가 램을 가지고 있습니다. 그런데도 비스타는 저의 하드를 엄청나게 긁어 대는 것이었습니다. 상식적으론 도저히 납득이 되질 않죠. 무엇이 부족해서 그리도 디스크를 읽는단 말이냐? 하고 늘 생각했습니다.

그래서 처음 설치하고 쉽게 떠오르는 인덱싱 서비스나 디펜더 서비스를 중지 시켰습니다. 당연히 클린 시스템이니 자동 실행 프로그램이 많을리 없습니다. 이제는 조용하겠지? 하고는 재부팅을 했는데 소용없는 노릇이었습니다. 그렇게 몇 달간을 포기하고 지냈습니다. 회사 컴퓨터였으면 어떻게든 고쳤을텐데 집 컴퓨터라 할 시간이 많지 않아 그냥 두고 있었죠. 오늘 집에 와서 부팅을 시켰는데 이 놈 또 부팅하자마자 20분을 혼자 디스크를 긁고 있습니다. 조용해졌다 싶어서 작업을 좀 해볼까 하면 또 연나 긁어댑니다. 주기도 없고, 규칙도 없고 마음대로 긁어대는 거죠.

그래서 오늘 안되겠다 싶어서 구글님과 집중 면담을 했습니다. 그 결과 원인이 무엇인지 알아냈습니다. 휴우 ㅋㅋ 원인은 바로 비스타에서 새로 생긴 수퍼페치(Superfetch)라는 기능 때문이었습니다. 수퍼라... 먼가 좋아보이지 않나요? ㅎㅎ

수퍼페치가 하는 일을 아주 간단히 설명하면 메모리에 자주 사용하는 것들을 미리 올려두어서 사용하자 필요하는 시점에 그것들을 바로바로 제공해 주는 것입니다. 메모리를 캐시로 사용하겠다는 생각이죠. I/O 병목 지점에서 미리 읽어둔다면 실행 속도가 엄청 빨라질겁니다. 와우. 훌륭한 기능이죠. 물론 아이디어는 좋습니다. 하지만 수퍼페치의 기능을 몇 달간 체험해 본 바로 제가 느낀 점은 "너무 공격적이다"라는 것 입니다. 메모리를 아낌없이 사용하며, 디스크 I/O는 시도때도 해버리는 그런 존재인 것이죠. 제가 봤을때 수퍼페치를 설계한 사람들이 결정적으로 간과한 한 가지 사실은 하드디스크 소음입니다. 그 엄청난 I/O에서 발생하는 소음 공해들. 작업에 집중할 수 없는 환경을 만들어 줍니다. 이런 연유로 저는 오늘 당장 수퍼페치를 중지 시켰고 매우 만족스럽게 사용하고 있습니다. 이제야 조용한 컴퓨터가 되었네요.

그렇다면 수퍼페치는 어떻게 중지시키나요?

     Superfetch                  IO     md 0

우선 제일 중요한 작업은 수퍼페치 서비스를 중지하는 것 입니다. 서비스 관리에 들어가서 Superfetch를 찾은 다음 속성을 누릅니다. 그리고는 과감하게 사용안함으로 바꾼다음 확인을 누르면 됩니다. 위와같이 표시된다면 정상적으로 중지된 것 입니다.

     Superfetch                  IO     md 1

서비스만 중지해도 되는데 전 조금 찜찜해서 레지까지 수정했습니다.
HKLM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters에 들어갑니다. 거기서 오른쪽에 표시되는 항목 중에 EnableSuperfetch 값을 0으로 변경해 줍니다. 참고로 값이 의미하는 바는 0은 중지, 1은 부팅 과정 수행, 2는 응용프로그램 수행, 3은 둘 다 수행입니다.

조용한 비스타를 원하시는 분들은 한번쯤 중지시켜 보세요.
분명 만족하실 겁니다.

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중