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?
Réponses:
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, cela peut être 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 double cœur, un processus à un seul thread ne dépassera pas 50% de l'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 des entrées / sorties semble élevée, il est probable que ses entrées / sorties soient liées. Voir si l'ajout de disques supplémentaires (RAID?) Peut aider.
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 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.
Outre les autres outils mentionnés, exécutez ps l PID
en insérant l'identifiant de processus correspondant ou consultez les colonnes STATE et WCHAN en haut ou en haut.
S'il est à l'état D (pour le disque), le fichier IO est en cours. 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 soit en train de dormir, soit en train d'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 en attente" d'un processus?