Comment savoir si un processus est lié à l'unité centrale, à la mémoire ou au disque ?
Réponses
Trop de publicités?Cela nécessite des compétences d'expert. Cela dépend. Exemple :
-
S'il y a suffisamment de mémoire et que les disques ne semblent pas trop occupés, il est possible de le faire. peut être Limité par le processeur. Regardez l'utilisation du processeur et si elle est proche de 100 %, c'est qu'il est lié au processeur. Si ce n'est pas le cas, il y a un goulot d'étranglement artificiel dans l'implémentation. Par exemple, sur un processeur à deux cœurs, un processus à un seul thread 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 le système soit lié à l'IO. Voyez si l'ajout de disques (RAID ?) peut aider.
-
Rien de tout cela ? Vérifiez la mémoire disponible.
-
Suffisamment 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 sleep(1) ? Naah, ce n'est pas si simple d'habitude ;)
Ce n'est pas pour rien que la plupart des entreprises qui fabriquent des produits sensibles à la performance disposent d'un laboratoire entier pour les ingénieurs de la performance !
Utiliser des outils tels que sar, vmstat, iostat, oprofile, lockstat, dtrace, des outils de surveillance de la performance spécifiques au produit, etc. pour déboguer les problèmes de performance.
En plus des autres outils mentionnés, lancez ps l PID
en insérant l'identifiant du processus concerné, ou en consultant les colonnes STATE et WCHAN dans top ou htop.
S'il est dans l'état D (pour disque), il effectue des entrées-sorties de fichiers. Cela peut être dû au fait qu'il lit beaucoup de fichiers, ou qu'il utilise beaucoup de mémoire et qu'il fait du swapping. La colonne WCHAN vous indiquera dans quelle fonction du noyau il se trouve ; en cherchant sur Google ou en posant des questions ici, vous aurez peut-être une idée de ce qu'ils signifient.
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 dans l'état S (sleep), il se trouve à l'intérieur d'un appel système interruptible, ce qui peut signifier qu'il dort réellement ou qu'il fait quelque chose comme attendre du trafic réseau ou un verrou. Encore une fois, l'examen du wchan spécifique vous en dira plus.
Voir aussi Qu'est-ce que le "canal d'attente" d'un processus ?
- Réponses précédentes
- Plus de réponses