티스토리 툴바

윈도우7 64bit의 토렌트로 인한 메모리 부족 문제 해결

2009/10/03 02:04

얼마전에 윈도우7 64bit로 OS를 바꾸었다. XP를 주력으로 사용하면서 윈7을 멀티로 사용하여 조금씩 이전을 하고 있었는데, 메인 OS로 사용해도 별 문제가 없다고 판단하여 완전히 밀고 윈7을 주력으로 설치하였다. 꽤나 좋은 최적화와 풍부한 드라이버 지원 등이 마음에 꼭 들었다. 백그라운드 환경도 나름 쾌적하여 윈7로 갈아타기를 잘했다고 생각했을즈음, 시스템이 조금씩 느려지는 느낌이 들기 시작했다.


1. 문제 발견

시스템을 장시간 사용하면 처음 부팅했을때의 쾌적한 느낌과는 달리 버벅이는 현상이 나타났다. OS를 설치한지 일주일도 안된 시점이라 프로그램이 과도하게 설치된 것도 아니었다. 불필요한 서비스도 모두 죽여두었고 프로세스를 확인해봐도 메모리를 많이 먹는 프로그램도 없었을 뿐더러 프로세스의 동작과 상관없이 메모리가 소모되고 있었다. 마치 누수가 생긴듯 하였다.

윈7에 버그가 있나 싶어서 구글링을 해보았지만 chkdsk 메모리 누수 버그만 나타날뿐 비슷한 사례를 찾을수가 없었다. 리소스 모니터를 아무리 들여다봐도 원인을 도무지 알 수가 없었다. 여유 메모리는 0으로 떨어졌고 사용 가능 메모리도 0에 가까운 수치로 떨어져 페이징파일 액세스를 위한 하드디스크 동작이 빈번히 발생하였다.


2. 원인 조사

본인의 시스템은 간략히 다음과 같다. XP에서는 전혀 겪어보지 못한 문제였기 때문에 사양탓은 아니라고 생각했다.
- 프로푸스 620
- 4기가 메모리
- 윈도우7 64bit Ultimate K

윈7 시스템상의 문제는 아니라 가정하고 타겟을 다시 현재 실행중인 프로세스로 잡았다. 기존 프로그램들과의 호환성 문제로 비정상적인 동작을 할 수도 있다고 생각하였다. 가장 빈번하게 사용하는 프로그램들을 정리해보니 몇개 되지 않았다.
- 웹마 브라우저 : 탭브라우저라 하나의 프로세스의 메모리 사용이 상당히 큰 편
- 아바스트 백신 : 항상 상주하여 메모리를 점유하나 아바스트는 윈7에 호환성 검증이 끝난 상태
- 뮤토렌트 : 토렌트 Ratio 유지를 위해 항상 사용

또한 메모리 부족 현상의 특징으로는 다음과 같다.
- 특정 프로그램을 실행해서 급격한 메모리 소모가 발생하지는 않음
- 아주 천천히 소량의 지속적인 메모리 소모가 발생
- 여유 메모리가 0까지 소모된 후, 사용 가능 메모리도 100MB 이하로 줄어듬

이쯤되니 대충 감이 잡힌다. 시스템에서 가장 활발한 활동을 하는 프로세스는 뮤토렌트이다. 네트웍을 통한 업다운이 활발하고 하드디스크 액세스도 항상 이루어진다. 빠르고 지속적인 액세스를 위해서는 캐쉬가 필요하고 이것은 메모리를 사용하게된다. 네트워크 - 메모리 - 하드디스크로 이어지는 캐쉬는 100메가 광랜을 사용하는 시스템에서는 더욱 자원소모가 많을거라 생각된다. 하지만 캐쉬는 액세스가 일어날 때만 사용하고 아이들시에는 반환될텐데?


3. 뮤토렌트 테스트

빗톡에 토렌트 캐쉬에 대한 글이 있었다. '토렌트 디스크 캐쉬설정과 과부하'를 살펴보면 뮤토렌트 고급설정에 대한 상세한 설명이 되어있다. 그중 주목할 부분은 '윈도우즈의 디스크 읽기 캐시 비활성' 부분이다. 기본 설정으로는 쓰기 캐시 부분에는 체크가 되어있으나 읽기 캐시 부분은 사용되지 않는다. 왜 그런지 무엇이 중요한 것인지는 인용문을 읽어보자.

"윈도우즈의 디스크 쓰기 캐시 비활성(Disable Windows caching of disk writes)"

: 말그대로 윈도우의 본래의 디스크 쓰기 캐시를 비활성화 시킵니다. 이 옵션은 윈도우 디스크 캐시가 토런트 사용시 빨리 다운로드 하는 동안 메모리 소실이 클 때 도와줍니다. 왜냐하면 캐시가 토런트의 증가된 디스크 쓰기 속도를 견딜수 없기때문이라고 합니다. 메모리를 모두 사용했을때, 페이지 스왑핑이 일어나며, 그리고 감속의 원인이 될수 있습니다. 다른한편으로 이 옵션의 사용은 디스크 읽기 증가의 원인되기도하며 토렌트의 디스크 캐시가 가득찼을 때 전송율이 감소됩니다.
좀 광범위 하지만 요약하면 CPU의 메모리 관리방법 중 윈도우에서 사용하는 페이징의 경우 OS와 연동해서 스왑파일을 가상메모리에 포함하는데 여러가지 이유가 있지만 결론적으로 윈도우 캐시를 쓰지않고 토렌트의 캐시만을 사용하여 스왑파일을 사용하지 않기 위한 옵션입니다. 이 부분은 설명하자면 분량이 많습니다.아시는 분은 설명이 필요없을테고 모르시는 분은 대략 이해 하셨으리라 판단하고 생략합니다.

"윈도우즈의 디스크 읽기 캐시 비활성(Disable Windows caching of disk read)"


: 위의 기능과 비슷합니다 말그대로 윈도우의 본래의 디스크 읽기 캐시를 비활성화 시킵니다. 이 옵션은 윈도우 디스크 캐시가 토런트 사용시 빨리 업로드 하는 동안 메모리 소실이 클 때 도와줍니다. 왜냐하면 캐시가 토런트의 증가된 디스크 읽기 속도를 견딜수 없기때문입니다. 역시 메모리를 모두 사용했을때, 페이지 스왑핑이 일어나며, 그리고 감속의 원인이 될수 있습니다. 다른 한편으로는, 이 옵션의 활성화는 디스크 읽기 증가의 원인될 것이며 토렌트의 디스크 캐시가 가득찼을 때 전송율이 감소할 것입니다. 보통 고속다운 때문에 쓰기 개쉬만 비활성화(체크)되어있는데 읽기 캐쉬는 대칭사용자분들이 10mb/s로 고속시딩을 지속하게 된다면 꺼주는게 메모리 누수에 도움이 됩니다. 특히 64비트 OS 사용하시는 분들 중에 고속시딩 때문에 비정상적으로 메모리 사용이 증가하는 경우에는 이 부분은 체크해주시면 도움이 될겁니다.

쓰기 캐시가 다운로드 캐시라면 읽기 캐시는 업로드 캐시로 이해할 수 있다. 비대칭 회선의 경우는 업로드속도가 다운로드보다 현저히 느리기 때문에 업로드 캐시인 읽기 캐시를 사용하여도 메모리에는 부담이 없다. 다만 대칭 회선의 경우는 업다운이 비슷한 속도를 가지며 고속의 업로드를 하기 때문에 읽기 캐시를 사용하게 되면 메모리의 사용량이 더욱이 증가하게 된다. 64비트 OS에서는 비정상적인 메모리 사용이 증가한다는 정보도 있어 바로 적용해보았다.




읽기 캐시 비활성에 체크를 하고 장시간동안 토렌트를 사용하는 상태로 모니터링 하였다. 토렌트의 동작이 이전처럼 매우 빈번하고 지속적인 네트워크 동작과 하드디스크 액세스가 이루어짐에도 여유 메모리와 사용 가능 메모리는 매우 정상적인 수치로 나타났다. 시스템의 버벅이는 현상은 없었으며 메모리가 지속적으로 소모되는 현상은 나타나지 않았다.




다시 읽기 캐시 비활성 설정을 끄고 모니터링을 하였다. 읽기 캐시를 사용한다고 해서 바로 메모리가 증가하는 것은 아니었지만 어느정도 시간이 흐른뒤에는 점차 메모리 사용량이 증가하기 시작하였다. 여유 메모리는 0까지 떨어졌고 이후에는 사용 가능 메모리도 100 이하로 떨어져 심한 버벅거림이 나타났다. 최종적으로는 메모리 사용량이 90%까지 육박하였고 다시 읽기 캐쉬를 비활성화하고 몇분뒤 정상수치로 되돌아왔다.


메모리 사용 현황이 매우 천천히 지속적으로 증가하여 여유 메모리와 사용 가능 메모리가 0에 가깝게 떨어지게 된다.




4. 정리

이번 윈도우7에서의 메모리 부족 문제는 뮤토렌트의 캐쉬 문제로 밝혀졌고 간단히 읽기 캐쉬를 비활성화 함으로서 문제가 해결되었다. 왜 64bit OS에서 읽기 캐쉬가 과도한 메모리 사용을 하게 되는지는 알 수가 없었다. 프로그램 하나가 전체 시스템에 영향을 줄 정도로 리소스를 사용하는것이 과연 정상적인 동작인지 의문이 간다. 시스템에 악영향을 주는 동작은 OS에서 제어할 수 없는 영역인가?

아무튼 뜬금없는 메모리 부족 소란에 한바탕 난리를 치고 문제가 해결되니 개운하다. 윈도우7으로 옮긴지 얼마 되지 않아 발생한 문제라 최신 OS에 대한 신뢰가 떨어질'뻔' 했었지만 그나마 선방했다. 자잘한 문제가 하나 둘씩 생겨 최신 OS로서의 이름이 조금씩 더렵혀질지도 모르겠지만 아직까지는 양호한 수준인듯 하다. 사실은 이 문제로 인해서 다시 XP를 깔게되지 않은게 다행인거다.

 ps. 비전문가로서 관련된 전문적인 내용은 오류가 있을수 있다.

관련 링크 : 파코즈 테크니컬 팁 게시판 (http://www.parkoz.com/zboard/view.php?id=my_tips&no=13329)
참고 원문 : 토렌트 디스크 캐쉬설정과 과부하 - 블링블링 (http://bittalk.org/thread30156.html)

저작자 표시 비영리 변경 금지

밥짓는아이 테크노트/Windows , , , , , ,