7 votes

Des pics d'activité du CPU qui ne sont pas liés à des processus visibles.

Un problème vraiment étrange ici. Je continue par intermittence à avoir des pics de CPU vraiment désagréables, où le CPU est occupé à 80-90% sur tous les cœurs pendant environ 5 minutes. Lorsque je regarde conky, dans htop ou system monitor, et que je trie par % de CPU, je ne vois aucun processus qui représente une telle utilisation du CPU.

Les seules choses que j'ai changées depuis que ça a commencé sont :

  • Je suis passé à la version 2.6.35 du noyau (compilé à domicile, depuis 2.6.24-1).
  • J'ai installé le pilote Nvidia 256.44 (au lieu de 256.34).

Maintenant, je suis prêt à rétrograder l'un ou l'autre ou les deux pour trouver le problème, mais je préférerais le faire de manière aussi scientifique que possible et trouver ce qui cause l'explosion du processeur avant de rétrograder.

Edit : Mon problème précis ressemble à une régression de nvidia dans leur dernier pilote. D'autres personnes ont des pics similaires .

3voto

alastairs Points 3045

"Le CPU est occupé à 80-90% sur tous les cœurs pendant environ 5 minutes"

Une telle utilisation pourrait vous permettre de localiser le coupable en utilisant pidstat disponible dans le paquet sysstat.

Il suffit de courir pidstat -u | sort -nr -k 7,7 | head -10 et le processus qui a utilisé le plus de CPU devrait être la ligne du haut.

2voto

cbp Points 229

J'essaierais de trouver la cause du problème avec un Shell Shell :

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

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

Le script a deux variables MAXLOAD y CURRLOAD . La première devrait être une charge élevée multipliée par 100. Ainsi, si vous rencontrez un pic et que vous voyez la charge du système monter à 2 ou 3, vous devez définir les paramètres suivants MAXLOAD à une valeur d'environ 200. $CURRLOAD prend la sortie de uptime cherche la charge et supprime le point ainsi que les zéros de tête.

Si la charge est trop élevée à un moment donné, il imprime les cinq processus qui utilisent le plus le CPU et les envoie à l'adresse suivante your@addre.ss .

Ce script devrait vous aider à trouver la raison d'un pic et si vous la connaissez, vous pourrez peut-être résoudre votre problème.

1voto

Eric Points 266

Il peut s'agir d'un thread du noyau, qui est caché par défaut dans la plupart des moniteurs de performance. Dans htop, vous pouvez masquer/afficher les threads du noyau avec "K" (shift+k).

1voto

Clyde Points 3881

Pour obtenir la sortie de top que vous pouvez sauvegarder : top -b -n1

Placez cela dans un cronjob et vous pourrez regarder la liste des processus minutieux même après que le problème ait disparu. Exemple d'entrée crontab :

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

Ceci va le sauvegarder dans un fichier par minute dans /tmp

1voto

Sekhat Points 2555

Il y a quelques bogues récemment corrigés qui pourraient corriger ce problème. Si vous utilisez Ubuntu, je vous suggère d'utiliser le noyau Ubuntu pour obtenir les correctifs grâce aux mises à jour régulières. Je vous recommande d'installer Lucid pour le support et la stabilité. Vous pouvez opter pour Maverick s'il y a des fonctionnalités dont vous avez connaissance et qui ne sont pas dans Lucid dont vous avez besoin.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X