Comment puis-je savoir si un processus est lié au processeur, à la mémoire ou au disque?
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.
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.
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?
Lire d'autres questions sur les étiquettes performance