Comment puis-je savoir si un processus est CPU, Memory ou Disk-bound?

38

Comment puis-je savoir si un processus est lié au processeur, à la mémoire ou au disque?

    
posée ssanj 07.08.2010 - 07:01
la source

5 réponses

14

Cela nécessite du vaudou. Ça dépend. Exemple:

  • S'il y a suffisamment de mémoire et que les disques ne semblent pas trop occupés, peut être lié ​​au processeur. Regardez l'utilisation du processeur et si sa limite à 100%, il est lié au processeur. S'il n'y a pas de goulot d'étranglement artificiel dans la mise en œuvre. Par exemple. sur un processeur dual-core, un seul processus thread ne dépassera pas 50% d'utilisation du processeur.

  • Si le CPU et la mémoire sont disponibles, mais que les disques sont très occupés ou que la latence des E / S semble élevée, il est probable que leur IO soit lié. Voir si l'ajout de plusieurs disques (RAID?) Aide.

  • Aucune de ces réponses? Vérifiez la mémoire disponible.

  • Assez de mémoire? Il y a peut-être un goulot d'étranglement artificiel dans le processus lui-même, c'est-à-dire que quelqu'un a peut-être oublié de dormir (1)? Naah n'est pas si facile que ça. ;)

Il existe une raison pour laquelle nous avons tout un laboratoire pour les ingénieurs de performance dans la plupart des entreprises qui traitent des produits sensibles aux performances!

Utilisez des outils comme sar, vmstat, iostat, oprofile, lockstat, dtrace, des outils de surveillance de perf spécifiques aux produits, etc. pour déboguer les problèmes de perf.

    
réponse donnée Sudhanshu 07.08.2010 - 07:54
la source
9

consultez iotop , peut être utile

    
réponse donnée ithkuil 06.09.2010 - 01:32
la source
8

Un outil qui peut être utile pour vérifier en temps réel un certain nombre de statistiques de processus (mémoire, utilisation du processeur, E / S, etc.) est htop . Il ne remplace pas les outils plus spécialisés nommés par Sudhanshu, mais pourrait être un bon début.

    
réponse donnée JanC 07.08.2010 - 19:04
la source
3

Outre les autres outils mentionnés, exécutez ps l PID , en insérant l'ID de processus approprié ou en consultant les colonnes STATE et WCHAN en haut ou en htop.

Si c'est dans l'état D (pour le disque), alors il fait le fichier IO. Cela peut être dû au fait qu’elle lit beaucoup de fichiers ou parce qu’elle utilise beaucoup de mémoire et d’échange. La colonne WCHAN vous indiquera le fonctionnement du noyau à l'intérieur; les chercher sur Google ou leur demander ici peut vous donner une idée de ce qu’ils veulent dire.

S'il est dans l'état R (run), il utilise le CPU dans l'espace utilisateur, c'est-à-dire qu'il est lié au CPU à ce moment-là.

S'il est en état S (sleep), il se trouve dans un appel système interruptible, ce qui peut signifier qu'il est en train de dormir ou qu'il fait quelque chose comme attendre le trafic réseau ou un verrou. Encore une fois, regarder le wchan spécifique vous en dira plus.

Voir aussi Qu'est-ce que le "canal d'attente" d'un processus?

    
réponse donnée poolie 17.11.2010 - 02:40
la source
2

Exécutez top et regardez la ligne d'utilisation du processeur. Un utilisateur haut% indique qu'il est lié au processeur. Une attente élevée% indique qu’elle est liée à IO.

    
réponse donnée psusi 31.01.2012 - 21:48
la source

Lire d'autres questions sur les étiquettes