web-dev-qa-db-fra.com

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

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

41
ssanj

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

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

  • Si le processeur et la mémoire sont disponibles, mais que les disques sont très occupés ou que la latence IO semble élevée, il est probable que sa IO soit liée. Voir si l'ajout de disques supplémentaires (RAID?) Est utile.

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

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

Il y a une raison pour laquelle nous avons tout un laboratoire pour les ingénieurs de performance dans la plupart des entreprises traitant de produits sensibles à la performance!

Utilisez des outils tels que sar, vmstat, iostat, oprofile, lockstat, dtrace, des outils de contrôle de performances spécifiques à un produit, etc., pour résoudre les problèmes de performances.

16
Sudhanshu

découvrez iotop, peut être utile

11
ithkuil

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.

9
JanC

En plus des autres outils mentionnés, exécutez ps l PID en insérant l’ID de processus correspondant ou consultez les colonnes STATE et WCHAN en haut ou htop.

S'il est à l'état D (pour le disque), il s'agit du fichier IO. Cela peut être dû au fait qu’il lit beaucoup de fichiers ou qu’il utilise beaucoup de mémoire et d’échange. La colonne WCHAN vous indiquera la fonction du noyau à l'intérieur. googler pour eux ou demander ici peut vous donner une idée de ce qu’ils veulent dire.

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

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

Voir aussi Quel est le "canal en attente" d'un processus?

4
poolie

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

2
psusi