domingo, 17 de abril de 2011

Windows XP lento com 100% CPU nas interrupções (hardware interrupts)

Depois de sofrer com lentidão do meu micro por uma semana, e depois de ler uma dezena de posts em blogs de todo o mundo, e usar diversos anti-virus, anti-malware, etc. sem encontrar nada, passei para uma etapa "marreta" apagando programas desnecessários, defragmentando meu HDD, e várias outras tentativas, para perceber ao fim um detalhe que estava ficando esquecida: a CPU quase sempre próximo de 100% devido as interrupções constantes (hardware interrupt).   O diagnóstico foi feito usando o "Process Explorer v14.1" que é gratuito e que já é bem conhecido dos usuários do Windows XP.

Olhando com mais detalhes, clicar sobre "Meu Computador" > Propriedades > Hardware > Device Manager > IDE ATA/ATAPI controllers > Primary IDE Channel

Neste ponto use o botão da direita "Propriedades" e na orelha "Advanced Settings" veja o estado do seu dispositivo.  Se estiver indicado PIO, você encontrou o problema.

O que ocorre é que quando o Windows encontra um certo número de erros no seu barramento ele muda automaticamente de DMA para PIO, como forma de resolver a questão.

Depois de pesquisar um pouco o assunto identifiquei algumas causas deste problema, e que destaco os principais abaixo:
  • Cabo do IDE/ATA usado não é blindado ou está "muito amassado"
  • Aquecimento anormal do HDD
  • Conflito com outros disponsitivos que usam o barramento - confira todas as suas placas PCI e AGP.
Bastou esta informação para encontrar na internet uma solução que funcionou para o meu caso, e que pode ser resumido (apesar haver outras possibilidades para a causa do problema) em apagar um registro do windows e pronto! Tudo voltou ao normal.

O que eu fiz ?  Bem use o "regedit" do windows e procure pela chave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}

Note que ela tem várias subchaves 0000, 0001, 0002, etc.  Normalmente o canal principal da primeira IDE (onde está meu HD) é a subchave 0001 (verifique o seu caso).

Apague a entrada MasterIdDataChecksum (eu por garantia, apenas mudei o nome para  "_Master...").

E pronto.  Resolvido!   Mas o motivo de ter acontecido esta mudança, foi o que me chamou atenção para detalhes.  Lendo os blogs e comentários que encontrei conclui que o motivo que levou o Windows a mudar de DMA (rápido) para PIO (lento) foi algum erro entre a IDE e o HDD.

Mais detalhes aqui:  DMA reverts to PIO

Cautela extra:  Sempre faça um backup antes de mexer nos seus registradores.

Espero que ajude outros usuários do Windows XP com o mesmo problema.

Nenhum comentário:

Postar um comentário