-->

sexta-feira, 13 de abril de 2007

Diagnosticando carga excessiva na CPU

Graças ao poder de processamento excessivo que os PCs de hoje tem, eu estava com um problema no meu micro principal há semanas e não havia notado.

A configuração, hoje (PC1)
  • Sempron 2300+;
  • MSI KT6V;
  • 1GB de RAM;
  • Windows XP;
  • Placa de Vídeo Radeon 7000 VE Dual Head

O primeiro indício surgiu quando tentei rodar vários XviD (HD) de 960x528 com áudio AC3 e não teve jeito de manter o áudio sincronizado com o vídeo em nenhum deles. Experimentei converter com o Auto Gordian Knot para uma resolução "normal" e assim pude executar o filme sem perda de sincronismo, mas a operação de converter apenas 42 minutos de filme levou 5 horas e 20 minutos. Eu liguei para um amigo que tem hardware melhor que o meu e ele me me deu a dica: "olha a carga na CPU".

Para meu espanto, era esse mesmo o problema. Meu PC, mesmo em "idle" (parado, no desktop) estava acusando uma carga de 55% na CPU, quando o normal seria 0%. Quando eu rodava os filmes HD a carga topava em 100% durante toda a execução. Daí a perda de sincronismo.

O mais estranho é que a lista de processos do XP (veja imagem mais adiante) mostrava que meu PC estava 99% ocioso. Nenhum processo aparecia usando aqueles 55% de processamento.

Primeiro comecei desligando programas que inciavam automaticamente com o XP, e nada. Desinstalei o anti-virus, que eu havia re-instalado no mesmo dia da descoberta e nada mudou também. Meu Windows estava ficando quase "pelado" e continuava acusando 55% de processamento. Se houvesse qualquer atividade de rede ou de disco eu iria concluir que havia algum malware muito esperto instalado, mas não havia mais nenhuma atividade suspeita na máquina.

Eu me recordava de que já havia esbarrado em um freeware que era bem mais minuncioso que o Gerenciador de Tarefas do XP, mas não me lembrava do nome. Mas por sorte eu tenho o hábito de guardar os programas que tem algo de "especial" em uma pasta específica e lá encontrei o que eu queria.

O freeware Process Explorer logo de cara me mostrou o que eu queria saber: os 55% de processamento estavam associados a "hardware interrupts".

O snapshot abaixo mostra o Process Explorer e o Gerenciador de Tarefas exibindo a situação no mesmo momento. Veja como apenas o primeiro indica o problema no hardware:


Baseado nessa informação eu já tinha dois suspeitos primários: minha controladora SATA, que eu havia ligado no BIOS há umas semanas atrás, mesmo sem ter nenhum HDD SATA (eu precisei testar o HDD de um cliente), e uma placa PCI com duas portas seriais baseada em chip NETMOS Nm9835cv que estava espetada no slot PCI2 há ainda mais tempo.



Como portas seriais podem mesmo provocar um consumo excessivo de CPU, comecei retirando a placa do slot (é claro que desliguei o PC antes, dâaaa).

E meu processamento em idle voltou aos 0% normais. Rodei os filmes sem perda de sincronismo e até experimentei fazer uma nova conversão, que desta vez levou apenas 3 horas e 29 minutos.

Coloquei a placa de volta. O processamento em idle voltou a 55%.

Parei por um momento para tentar entender. O consumo de CPU das portas seriais só deveria ocorrer com as portas sendo usadas, mas eu não estava usando as portas da placa...

Errr... sabe aquelas situações em que o problema está te esbofeteando mas você não consegue enxergar? Pois é... eu estava usando as portas!

Na verdade, a placa PCI estava espetada no slot acompanhada por dois pequenos acessórios:



Os dois plugues que você vê, sem nenhum cabo, são dois receptores de infravermelho montados por mim. Eles usam peças ligeiramente diferentes, mas tem exatamente o mesmo princípio de funcionamento. E era a luz captada por eles que estava ativando as portas seriais e provocando o consumo de CPU, mesmo sem haver nenhum software usando as portas. Bastou remover ambos para o problema desaparecer, mesmo com a placa no lugar.

Curiosamente, simplesmente desconectar os receptores não basta. É preciso removê-los e reiniciar a máquina.

Você talvez esteja se perguntando que finalidade teriam dois receptores infravermelho escondidos no fundo de um gabinete. O fato é que não estavam escondidos, porque eu não uso gabinetes há pelo menos 10 anos :)

Neste tópico do forumpcs você pode conferir como são meus computadores (veja as fotos). O hardware já mudou mas a "organização" continua a mesma :)

[14/04/07] Fiz mais testes e descobri que o problema só ocorre se o receptor (qualquer um) estiver conectado à placa quando o XP estiver inicializando e se não houver nenhum software depois abrindo a respectiva porta serial. Por exemplo, com o receptor na porta designada como COM4 e o consumo em 55%, bastou usar o Hyperterminal para abrir essa porta, mesma sem usá-la de fato, para o processamento cair a 0%. Fechar o Hyperterminal coloca o processamento de volta em 55%.

É mole? Não devem existir muitas situações como essa em que desligar um software pode aumentar a carga no seu PC. :)

2 comentários:

  1. Eu tive o mesmo problema com Hardware, no meu caso foi a bateria do Notebook Acer, que já há algum tempo não aguentava nem 5 minutos, eu descobri também com o Process Explorer(achei no seu blogge antigo) ao ver que era problema de hard, retirei a bateria e liguei o micro, e parou o consumo execivo.
    Depois de descoberto a fonte do problema, me atentei pro detalhe que o indicador de bateria estava indicado 0% de carga, mesmo o micro ligado na fonte externa. Pesquisando no Google, alguém informava que bastava desabilitar o drive do XP que gerencia a bateria, mas eu testei desabiliar a opção: executar ações ao ver nível baixo da bateria, em: opções de energia, e funcionou! Agora o windows não desliga mais o micro com bateria fraca, a bateria vai até o fim, dura 15min, mas o micro desliga sem aviso! Tá bom pra quem tá com a bateria "bichada".

    Jefferson, parabéns pelo seu exelente trabalho. Você é uma das pessoas que contribuem para um mundo melhor, intensivamente compartilhando informação e ajudando as pessoas. Um forte abraço!

    ResponderExcluir
  2. Ryan, poderia se monitorar a temperatura do processador também. Logo veria se tinha algo errado :D

    Daniel

    ResponderExcluir

Siga as regras do blog ou seu comentário será ignorado.