it-swarm-pt.tech

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

Questão realmente estranha aqui. Eu intermitentemente fico 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 eu mudei desde que isso começou 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 se parece com uma regressão nvidia em seu driver mais recente. Outras pessoas estão recebendo picos similares .

7
Oli

Pode ser um encadeamento de 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).

1
JanC

"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.

3
Li Lo

Eu tentaria encontrar a causa do problema com algum script Shell:

#!/bin/sh
MAXLOAD=100
CURRLOAD=`uptime | sed '[email protected]*load average: \([^,]*\).*@\[email protected]' | 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. Então, se você encontrar um pico e ver o carregamento do sistema subir para 2 ou 3, você deve definir MAXLOAD para algum valor em torno de 200. $CURRLOAD pega a saída de uptime, procura por a carga e remove o ponto, bem como os zeros à esquerda.

Se a carga em algum ponto for alta, ele imprimirá os cinco processos com a 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.

2
qbi

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 as correções 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.

1
Brad Figg

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

Cole isso em um cronjob e você pode olhar para o processlist minuciosamente mesmo depois que o problema foi embora. Exemplo de entrada 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

1
Dennis Kaarsemaker

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

0
Thorbjørn Ravn Andersen