45 votes

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

Comment savoir si un processus est lié à l'unité centrale, à la mémoire ou au disque ?

19voto

Brad Leach Points 9012

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.

12voto

Ryan Shripat Points 2330

Vérifier iotop peut être utile

9voto

Eric Points 266

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

4voto

John Nolan Points 16633

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 ?

2voto

psusi Points 35613

Exécuter top et regardez la ligne d'utilisation du processeur. Un pourcentage d'utilisation élevé indique que le système est lié au processeur. Un pourcentage d'attente élevé indique qu'il est lié aux entrées-sorties.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X