Other/Extra...

PIO모드 때문 윈도우즈가 갑자기 느려졌다면 ??? (펌)

파에 2008. 7. 6. 05:08

잘 사용하던 윈도우즈가 갑자기 버벅이기 시작했다. 당연히 바이러스가 의심되어 카스퍼스키를 이용해서 대략 하루하고도 16시간 24분만에 모든 검사를 완료했으나(검사된 파일수가 240만개였다. -_-;) 안타깝게도 바이러스는 단 한.건.도. 발견되지 않았다. 도대체 어느 프로세스가 CPU를 점령하고 있는지 윈도우즈 내장 유틸리티인 작업관리자를 통하여 확인해봤지만 너무나도 정상적이였다. Process Idle Process가 90~100%를 유지하고 있는 매우 평온한 상태였다. 그런데 어째서 마우스를 움직이면 마우스가 끊길정도록 랙이 걸리는것일까? 윈도우즈에서 타이머인터럽트 다음으로 우선순위가 높은 인터럽트는 마우스 인터럽트로 알고 있다. 그렇다는 얘기는 절대 유저모드의 프로그램 �문에 마우스가 끊기는 현상은 있을 수 없다는 얘기였다. 이대로 포멧하고 다시 윈도우즈를 설치해야할것인가? 위에서도 언급했지만 내 하드에 있는 파일 수는 무려 240만개에 육박한다. 이 많은 자료를 어디에다가 백업해둬야할것인가? 일단 가능성을 다 살펴보자. 커널쪽에 문제는 확실해보였다. 윈도우즈 로그인화면에서 조차도 마우스가 버벅였기에 시스템에 설치된 모든 디바이스 드라이버를 검사하기 시작했다. 특별히 의심되는 드라이버는 없었다. 인터넷에서 검색해 본 결과 Process Idle Time에 디스크 색인을 한다는 글을 보고선 디스크색인 서비스를 종료해봤다. 역시나 버벅였다. 좀더 강력한 프로세서 매니저가 필요했다. Process Explorer 라는 프로그램을 다운받아서 확인해보았다.
[http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx] 에서 다운 받을 수 있다.

 

 

SysInternals 은 이외 커널을 모니터링 할 수 있는 많은 툴들을 제공하므로 눈여겨 보길... 자 다운 받은 Process Explorer은 친절하게도 하드웨어 인터럽트를 수행하는데 사용된 CPU 점유를 계산해주고 있다. 빨간박스로 강조해 놓은 부분이 CPU 점유율이다. 지금은 해결 했기 �문에 3.85%로 매우 노말한 상태를 확인할 수 있다. 이 문제를 해결하기전에는 무려 40~50%를 하드웨어 인터럽트를 처리하는데 사용하고 있었다. 그랬다. 역시나 커널쪽에서 문제가 발생하고 있던 것이다. 이제 경우의 수가 많이 좁혀졌다. 사실 커널쪽에 문제라는거는 처음에 육감으로만 파악한 사실이였고 이제 확실한 물증이 생긴것이다. 도대체 어느 인터럽트를 처리하기 위해서 저렇게 CPU를 많이 사용한다는 말인가!

 

  결국 PC의 본체를 뜯기로 결심했다. 메모리를 분리하고 하드디스크 및 시디롬을 분리했다. 먼지를 털고 조심스럽게 조립을 했다. 인터럽트를 줄이기 위해서 마우스와 랜선은 일부러 연결하지 않았다. 떨리는 마음으로 재부팅을 했다. 로그인 화면이 나오고 난 직감적으로 알 수 있었다. 해결되지 않았다는 것을... 그랬다. 문제는 여전히 답보 상태였다. 결국 검색 키워드를 변경했다.

 

검색 키워드 공개: Hardware Interrupt CPU high
 
물론 검색 엔진은 우리의 구글!!!!! 검색된 자료를 쭈욱 보다보면 Lousy Performance, High Hardware Interrupt Usage라는 제목에 글을 볼 수 있을 것이다. 문제의 해결책이 이 글에 숨어있다.
링크는 [http://frazzleddad.blogspot.com/2006/03/lousy-performance-high-hardware.html]

 

 결론은 하드디스크가 DMA를 지원하지 않도록 설정이 변경된 것이였다. MS측에서도 이 사실을 이슈화 하고 있다. MS고객 지원 센터에서 제공하는 글을 읽어보기 바란다. [http://support.microsoft.com/kb/817472]

 

Windows IDE/ATAPI 포트 드라이버(Atapi.sys)에서 시간 초과 또는 CRC(순환 중복 검사) 오류가 누적되어 총 6번 나타나면 드라이버는 가장 높은 DMA(직접 메모리 액세스) 모드에서 좀 더 낮은 DMA 모드로 통신 속도(전송 모드)를 낮춥니다. 드라이버에서 시간 초과 또는 CRC 오류가 계속 나타나면 드라이버는 결국 전송 모드를 가장 느린 모드(PIO 모드)로 낮춥니다.

 

PIO모드로 동작을 했기 때문에 Direct Memory Access를 하지 못했고 결국 CPU가 나서서 이 연산을 수행하고 있었던 것이다. 오래전 Ultra-DMA가 나왔을때 대단하다라는 기사를 잡지에서 많이 접했었는데 오늘 DMA의 중요성을 몸으로 느낄 수 있었다. 자 PIO모드를 해지하는 방법은 위에 링크건 MS고객지원에서 설명하고있지만 언제 또 링크가 변경될지 모르니깐 아래 설명을 끝으로 글을 마친다.

 

[내 컴퓨터] -> [속성] -> [하드웨어] -> [장치관리자] -> [IDE ATA/ATAPI 컨트롤러] -> [기본 IDE 채널] -> [속성] : 고급설정 탭에 표시되는 장치들중 현재전송모드가 PIO모드로 설정되어있다면 해당 드라이버를 삭제하고 윈도우즈 재부팅 :)

'Other > Extra...' 카테고리의 다른 글

종이 싸이즈  (0) 2008.07.23
봉투서식  (0) 2008.07.23
공학에 사용되는 SI 단위  (0) 2008.07.23
특수문자의 발음  (0) 2008.07.23
Bios 버젼 확인 및 모델명 확인법  (0) 2008.05.28