Comment lire htop

9

J'ai du mal à comprendre les informations affichées par htople remplacement populaire de la commande Linux top.

vidage d'écran htop

Dans la capture d'écran ci-dessus, de nombreuses instances Java sont répertoriées, mais seule la mère utilise le temps CPU. Quels sont les autres?

Pourquoi les barres d'utilisation du processeur affichent-elles de tels cœurs occupés lorsque la colonne% CPU indique que peu de choses se produisent dans tous les processus? En fait, ils se déplacent sans corrélation la plupart du temps.

Pourquoi la charge moyenne, en haut à droite, qui, je suppose, est un historique en 3 étapes, est-elle si faible lorsque les cœurs sont presque toujours verts et semblent occupés?

Quelqu'un serait-il si gentil pour expliquer comment lire ces informations?

Je vous remercie!

Luke Puplett
la source
J'ai fait quelques changements qui aident beaucoup. Affichez les threads dans une couleur diff, affichez les noms des threads, mettez à jour les noms des processus lors de l'actualisation et surtout, changez le délai à 2/10 secondes. La vitesse de mise à jour par défaut montre juste un décalage énorme entre les compteurs CPU et les processus.
Luke Puplett
1
Pour la moyenne de charge au moins, ce n'est pas nécessairement une valeur faible. La charge est essentiellement un indicateur si le système doit attendre pour faire quelque chose. Une valeur acceptable est inférieure au nombre de cœurs, dans ce cas 4. Ces moyennes sont donc raisonnables. Ce sont les dernières 1, 5 et 15 minutes. Pour plus d'informations, voir [Wikipedia] ( en.wikipedia.org/wiki/Load_(computing))
ssmy

Réponses:

5
  1. Concernant "Load" et CPU%, wikipedia a une explication détaillée et un exemple, ce qui suit est une citation partielle

    Un ordinateur inactif a un numéro de charge de 0 et chaque processus utilisant ou en attente de CPU (la file d'attente prête ou la file d'attente d'exécution) incrémente le nombre de charge de 1. La plupart des systèmes UNIX ne comptent que les processus en cours d'exécution (sur CPU) ou exécutables (en attente de CPU). Cependant, Linux inclut également des processus dans des états de veille sans interruption (généralement en attente d'activité de disque), ce qui peut conduire à des résultats nettement différents si de nombreux processus restent bloqués dans les E / S en raison d'un système d'E / S occupé ou bloqué. Cela inclut, par exemple, le blocage des processus en raison d'une défaillance du serveur NFS ou d'un ralentissement des supports (par exemple, les périphériques de stockage USB 1.x). De telles circonstances peuvent entraîner une charge moyenne élevée, ce qui ne reflète pas une augmentation réelle de l'utilisation du processeur (mais donne toujours une idée du temps que les utilisateurs doivent attendre).

    Les systèmes calculent la moyenne de la charge comme la moyenne mobile exponentiellement amortie / pondérée du nombre de charge. Les trois valeurs de moyenne de charge se réfèrent aux dernières minutes, cinq et quinze minutes de fonctionnement du système.

    Pour les systèmes à processeur unique qui sont liés au processeur, on peut considérer la moyenne de charge comme un pourcentage d'utilisation du système pendant la période de temps respective. Pour les systèmes avec plusieurs processeurs, il faut diviser le nombre par le nombre de processeurs afin d'obtenir un pourcentage comparable.

    Les barres peuvent être occupées à bouger, mais elles n'atteignent jamais 100%, ce qui indiquera que le processeur / noyau est pleinement utilisé. La barre n'est qu'une visualisation du pourcentage d'utilisation du processeur, qui est de 27%, 26,5%, 24,5%, 24,7% et 71,7%. Tous les cœurs de processeur ont encore du pouvoir de «rechange». Ils sont tous sous-utilisés à ce stade.

    Un système à 5 cœurs / CPU entièrement utilisé aura une charge de 5 ou plus.

  2. Concernant les lignes Java, ce sont des processus parents (PID = 5073) et enfants. Je ne peux pas expliquer pourquoi le parent accumule le plus de temps processeur. Cela dépend vraiment de la logique interne du programme. Cependant, selon TIME +, ces processus enfants ont consommé du temps CPU, le dernier (PID = 5074) ayant le plus accumulé.

John Siu
la source
Est-il possible que les processus enfants soient le pool de threads JVM? Lorsque j'ai défini l'option pour afficher les noms de threads, ils sont tous nommés de la même manière. Je suis un programmeur Windows + .NET, fyi.
Luke Puplett
Oui, il est possible que ce soit du fil.
John Siu