web-dev-qa-db-fra.com

Pics de processeur méchants qui ne sont connectés à aucun processus visible

Vraiment étrange question ici. Je continue de façon intermittente à avoir des pics de processeur vraiment désagréables, où le processeur est occupé à 80-90% sur tous les cœurs pendant environ 5 minutes. Lorsque je regarde conky, dans htop ou le moniteur système, et que je trie par% CPU, je ne vois aucun processus prenant en compte cette utilisation importante du processeur.

Les seules choses que j'ai changées depuis le début sont:

  • J'ai migré vers la version 2.6.35 du noyau (compilée à partir de la version 2.6.24-1)
  • J'ai installé le pilote Nvidia 256.44 (à partir de 256.34)

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

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

7
Oli

Il peut s'agir d'un thread du noyau, ceux-ci sont masqués par défaut dans la plupart des analyseurs de performances. Dans htop, vous pouvez masquer/afficher les threads du noyau avec "K" (shift + k).

1
JanC

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

Cela pourrait vous permettre d'identifier le coupable en utilisant pidstat disponible dans le paquet sysstat.

Il suffit d’exécuter pidstat -u | sort -nr -k 7,7 | head -10 et le processus qui utilise le plus le processeur devrait être la ligne du haut.

3
Li Lo

Je voudrais essayer de trouver la cause du problème avec un script 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 [email protected]
fi

Le script a deux variables MAXLOAD et CURRLOAD. Le premier doit être une charge élevée multipliée par 100. Ainsi, si vous rencontrez un pic et que la charge du système augmente à 2 ou 3, vous devez définir MAXLOAD sur une valeur autour de 200. $CURRLOAD prend la sortie de uptime, cherche la charge et supprime le point ainsi que les zéros non significatifs.

Si la charge est trop élevée à un moment donné, elle imprime les cinq processus avec la plus grande utilisation de la CPU et les envoie à [email protected].

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

2
qbi

Il y a des bogues récemment corrigés qui pourraient corriger ce problème. Si vous utilisez Ubuntu, je vous conseillerais de vous en tenir au noyau Ubuntu pour récupérer les correctifs via des mises à jour régulières. Je recommanderais d'installer Lucid pour le support et la stabilité. Vous pouvez utiliser Maverick si vous connaissez certaines fonctionnalités dont vous n'avez pas besoin dans Lucid.

1
Brad Figg

Pour obtenir une sortie du haut que vous pouvez enregistrer: top -b -n1

Collez ceci dans un travail cron et vous pourrez consulter la liste minutieuse des processus même après la résolution du problème. Exemple d'entrée dans la crontab:

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

Cela le sauvera dans un fichier par minute dans/tmp

1
Dennis Kaarsemaker

Je pense que c'est un problème de noyau. Je reviendrais à une version testée officiellement.