Picos desagradáveis da CPU que não estão conectados a nenhum processo visível

7

Problema realmente estranho aqui. Eu fico intermitentemente recebendo picos de CPU realmente desagradáveis, onde a CPU chega a 80-90% ocupada em todos os núcleos por cerca de 5 minutos. Quando eu olho para o conky, no htop ou no monitor do sistema, e classifico por% CPU, não consigo ver nenhum processo responsável por esse uso de CPU.

As únicas coisas que mudei desde o início são:

  • eu mudei para a versão do kernel 2.6.35 (home compilado, acima de 2.6.24-1)
  • eu instalei o driver Nvidia 256.44 (acima de 256.34)

Agora, estou disposto a rebaixar um / ambos para encontrar o problema, mas prefiro fazer isso da forma mais científica possível e descobrir o que está causando a explosão da CPU antes de fazer o downgrade.

Edit: Meu problema preciso parece uma regressão nvidia em seu driver mais recente. Outras pessoas estão recebendo picos similares .

    
por Oli 07.08.2010 / 19:58

6 respostas

1

Pode ser um encadeamento do kernel, esses estão ocultos por padrão na maioria dos monitores de desempenho. No htop você pode ocultar / mostrar tópicos do kernel com "K" (shift + k).

    
por JanC 07.08.2010 / 20:07
3

"a CPU chega a 80-90% ocupada em todos os núcleos por cerca de 5 minutos"

Esse uso muito possivelmente permitiria identificar o culpado usando o pidstat disponível no pacote sysstat.

Basta executar pidstat -u | sort -nr -k 7,7 | head -10 e o processo que usou mais CPU deve ser a linha superior.

    
por Li Lo 08.08.2010 / 00:03
2

Eu tentaria encontrar a causa do problema com algum script de shell:

#!/bin/sh
MAXLOAD=100
CURRLOAD='uptime | sed '[email protected]*load average: \([^,]*\).*@@' | sed '[email protected]\?.0\[email protected]@''

if [ $CURRLOAD -gt $MAXLOAD ]; then                                             
  ps -eo tid,pcpu,comm | sort -n -k 2 | tail -n 5 | \
    mail -s "High load" -e [email protected]
fi

O script tem duas variáveis MAXLOAD e CURRLOAD . O primeiro deve ser uma carga alta multiplicada por 100. Portanto, se você encontrar um pico e ver o carregamento do sistema subir para 2 ou 3, deverá definir MAXLOAD para algum valor em torno de 200. $CURRLOAD obtém a saída de uptime , procura a carga e remove o ponto, bem como os zeros à esquerda.

Se a carga em algum momento for alta, ela imprimirá os cinco processos com maior utilização de CPU e os enviará para [email protected] .

Este script deve ajudá-lo a encontrar o motivo de um pico e, se você souber, poderá resolver o problema.

    
por qbi 08.08.2010 / 13:35
1

Para obter a saída do topo que você pode salvar: top -b -n1

Coloque isso em um cronjob e você poderá ver a minuciosa lista de processos mesmo depois que o problema desaparecer. Exemplo de entrada de crontab:

* * * * * top -b -n1 > /tmp/top_output_$(date +%Y-%m-%d_%H:%M:%S)

Isto irá salvá-lo em um arquivo por minuto em / tmp

    
por Dennis Kaarsemaker 07.08.2010 / 22:46
1

Existem alguns bugs corrigidos recentemente que podem corrigir esse problema. Se você está rodando o Ubuntu, eu sugiro ficar com o kernel do Ubuntu para pegar os patches através de atualizações regulares. Eu recomendaria a instalação do Lucid para suporte e estabilidade. Você pode ir com o Maverick se houver recursos que você saiba que não estão no Lucid que você precisa.

    
por Brad Figg 22.08.2010 / 00:22
0

Eu acho que isso é um problema no kernel. Eu voltaria para uma versão oficialmente testada.

    
por Thorbjørn Ravn Andersen 08.08.2010 / 13:13