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:
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 .
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).
"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.
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.
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.
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
Je pense que c'est un problème de noyau. Je reviendrais à une version testée officiellement.