GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation du processeur Linux et historique d'exécution des processus

Solution 1 :

Il existe plusieurs façons de procéder. Notez qu'il est tout à fait possible que de nombreux processus dans un scénario d'emballement provoquent cela, et non un seul.

La première consiste à configurer pidstat pour qu'il s'exécute en arrière-plan et produise des données.

pidstat -u 600 >/var/log/pidstats.log & disown $!

Cela vous donnera un aperçu assez détaillé du fonctionnement du système à des intervalles de dix minutes. Je suggérerais que ce soit votre premier port d'escale car il produit les données les plus précieuses/fiables avec lesquelles travailler.

Il y a un problème avec cela, principalement si la boîte entre dans une boucle de processeur incontrôlable et produit une charge énorme - vous n'êtes pas assuré que votre processus réel s'exécutera en temps opportun pendant le chargement (le cas échéant) afin que vous puissiez réellement manquer la sortie !

La deuxième façon de rechercher cela consiste à activer la comptabilité des processus. Peut-être plus une option à long terme.

accton on

Cela activera la comptabilisation des processus (si elle n'a pas déjà été ajoutée). S'il ne fonctionnait pas avant, il lui faudra du temps pour s'exécuter.

Après avoir été exécuté, disons 24 heures - vous pouvez ensuite exécuter une telle commande (qui produira une sortie comme celle-ci)

# sa --percentages --separate-times
     108  100.00%       7.84re  100.00%       0.00u  100.00%       0.00s  100.00%         0avio     19803k
       2    1.85%       0.00re    0.05%       0.00u   75.00%       0.00s    0.00%         0avio     29328k   troff
       2    1.85%       0.37re    4.73%       0.00u   25.00%       0.00s   44.44%         0avio     29632k   man
       7    6.48%       0.00re    0.01%       0.00u    0.00%       0.00s   44.44%         0avio     28400k   ps
       4    3.70%       0.00re    0.02%       0.00u    0.00%       0.00s   11.11%         0avio      9753k   ***other*
      26   24.07%       0.08re    1.01%       0.00u    0.00%       0.00s    0.00%         0avio      1130k   sa
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28544k   ksmtuned*
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28096k   awk
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     29623k   man*
       7    6.48%       7.00re   89.26%       0.00u    0.00%       0.00s    

Les colonnes sont ordonnées comme telles :

  1. Nombre d'appels
  2. Pourcentage d'appels
  3. Quantité de temps réel consacrée à tous les processus de ce type.
  4. Pourcentage.
  5. Temps CPU utilisateur
  6. Pourcentage
  7. Temps CPU du système.
  8. Appels E/S moyens.
  9. Pourcentage
  10. Nom de la commande

Ce que vous recherchez, ce sont les types de processus qui génèrent le plus de temps CPU utilisateur/système.

Cela décompose les données en tant que quantité totale de temps CPU (la ligne du haut), puis comment ce temps CPU a été divisé. La comptabilisation des processus ne tient compte correctement que lorsqu'elle est activée lorsque les processus apparaissent, il est donc probablement préférable de redémarrer le système après l'avoir activé pour s'assurer que tous les services sont pris en compte.

Cela ne vous donne en aucun cas une idée précise du processus qui pourrait être à l'origine de ce problème, mais cela peut vous donner une bonne idée. Comme il pourrait s'agir d'un instantané de 24 heures, il est possible que les résultats soient faussés, alors gardez cela à l'esprit. Il doit également toujours se connecter car il s'agit d'une fonctionnalité du noyau et, contrairement à pidstat, il produira toujours une sortie même en cas de charge importante.

La dernière option disponible utilise également la comptabilité des processus, vous pouvez donc l'activer comme ci-dessus, mais utilisez ensuite le programme "lastcomm" pour produire des statistiques sur les processus exécutés au moment du problème, ainsi que des statistiques sur le processeur pour chaque processus.

lastcomm | grep "May  8 22:[01234]"
kworker/1:0       F    root     __         0.00 secs Tue May  8 22:20
sleep                  root     __         0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                   X root     pts/0      0.00 secs Tue May  8 22:49
ksmtuned          F    root     __         0.00 secs Tue May  8 22:49
awk                    root     __         0.00 secs Tue May  8 22:49

Cela pourrait également vous donner des indices sur ce qui pourrait être à l'origine du problème.

Solution 2 :

Atop est un démon particulièrement pratique pour examiner les détails au niveau du processus et archive par défaut ces données pendant 28 jours. En plus de présenter une superbe interface de surveillance en temps réel, vous pouvez spécifier les fichiers journaux à ouvrir et les parcourir.

L'article donne une idée des fonctionnalités, et vous pouvez en trouver plus dans la page de manuel.

C'est vraiment un merveilleux logiciel.

Solution 3 :

Des programmes tels que psmon et monit peuvent vous être utiles. Ceux-ci peuvent surveiller les processus en cours d'exécution sur votre système et si un seuil (utilisation du processeur, utilisation de la mémoire...) est dépassé, vous pouvez les configurer pour qu'ils vous envoient un rapport par e-mail sur ce qui se passe.

Il est également possible de redémarrer automatiquement les processus qui se comportent mal.


Linux
  1. Trouver les processus en cours d'exécution les plus élevés en fonction de la mémoire et de l'utilisation du processeur les plus élevées sous Linux

  2. Trouver le temps d'exécution d'une commande ou d'un processus sous Linux

  3. Comment limiter l'utilisation du processeur d'un processus sous Linux

  4. utilisation des caractères génériques linux dans cp et mv

  5. Comment l'utilisation de la mémoire est-elle signalée sous Linux ?

3 astuces pour améliorer les performances des processus Linux avec priorité et affinité

Comment obtenir l'utilisation du processeur d'un seul processus sous Linux

Histoire Unix et Linux

Comment trouver les principaux processus en cours d'exécution par utilisation de la mémoire et du processeur sous Linux

Comment vérifier l'utilisation ou l'utilisation du processeur Linux

Ubuntu Linux :traiter la mémoire d'échange et l'utilisation de la mémoire