Question Comment enregistrer l'utilisation du processeur par processus?


J'ai une boîte sur Linode qui traverse un comportement étrange. De temps en temps, les E / S du disque et du processeur atteignent 100%, le serveur ne répond plus et doit être démarré. J'aimerais mieux enquêter sur ce qui se passe, mais je ne sais pas comment trouver qui est responsable de tout ce processeur et de ces E / S. Je suis sous Gentoo 2.6.18.


16
2017-10-10 14:43


origine




Réponses:


Vous pouvez essayer de faire quelque chose comme ça:

while true; do ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10 >> logfile.txt; printf "\n" >> logfile.txt; sleep 3; done

cela vous montrerait les dix processus les plus importants en termes d'utilisation du processeur. Vous pouvez modifier le nombre de processus affichés en modifiant le nombre de 10 dans "tête -10" en un nombre différent, ainsi que la fréquence de mise à jour de ce nombre en modifiant le paramètre "3 en" sommeil 3 "ou en supprimant entièrement la partie" sommeil 3 ".


17
2017-10-10 16:42



Assurez-vous de bien dormir, sinon il y a de fortes chances pour que votre processus shell soit toujours dans le top 10. :) - jedberg
je pense sort -nr ferait mieux de trier numériquement (au moins sur ma boîte ubuntu / debian) - sehe
En passant, vous devriez donner la priorité la plus haute à ce processus, pour qu'il reste utile pendant les pics de charge élevée (qui est le point de sa vie, après tout). - spacediver


Découvrez au sommet il écrira un journal binaire contenant à peu près tout ce que vous voudrez probablement et vous pourrez ensuite utiliser un top comme gui pour parcourir les tranches de temps de la journée (par défaut, les données sont collectées toutes les 5 minutes). http://www.atcomputing.nl/Tools/atop/


12
2017-10-13 07:09





je pense que Munin C’est l’un des bons outils de surveillance qui vous aidera à obtenir des informations sur les activités de votre boîte. En outre, il existe des outils en ligne de commande comme sar, iostat, ps, haut pour une telle utilisation.


6
2017-10-10 14:53





Les autres réponses vous ont seulement montré comment vous pouvez regarder ce qui se passe actuellement, ce qui n’aide en rien si le système a été redémarré.

Si vous souhaitez que ces informations soient enregistrées pour la postérité (ou pour la facturation, ou pour tout autre usage que vous puissiez avoir), vous souhaitez une comptabilité de processus.

Voici un HOWTO que j'ai trouvé, mais je vais être franc: cela fait une décennie que je n'ai pas utilisé la comptabilité des processus.

http://tldp.org/HOWTO/Process-Accounting/


5
2017-10-10 17:35





Une approche plus conviviale de la solution de shawn pour la surveillance en temps quasi réel:

while true; do clear; ps -eo pcpu,pmem,pid,user,args --sort=-pcpu c|head -20; sleep 1; done

Cela fournira une vue statique des 20 processus les plus importants qui seront actualisés toutes les 1 s. L'option "c" dans la commande ps affichera le nom de l'exécutable du processus plutôt que la commande entière args. Vous pouvez omettre cette option si vous avez plutôt besoin des informations de commande complètes. La colonne% d'utilisation de la mémoire a également été ajoutée.


2
2017-11-15 10:32





Gentoo n’a-t-il pas la commande "top" aussi bien?

machine:~/# top

devrait vous donner les statistiques d'exécution des programmes qui causent le plus de charge.


1
2017-10-10 14:49



Oui, je sais, mais j'aimerais que ce soit enregistré afin que je puisse voir l'historique plus tard. Lorsque le processeur augmente, la machine ne répond plus, je ne peux donc pas me connecter et exécuter top pour voir qui est le coupable. Je veux vérifier plus tard et voir quel processus l'a fait. - hsribei