Comme vous l'avez dit vous-même, vous pouvez appuyer sur Hpour afficher les threads des utilisateurs.
Juste pour référence future (et pour le plaisir), calculons l'utilisation du CPU!
Un peu d'histoire:
Dans un système d'exploitation moderne, il y a un planificateur. Il vise à garantir que tous les processus et leurs threads obtiennent une part équitable du temps de calcul. Je n'entrerai pas trop dans la programmation (c'est vraiment compliqué). Mais à la fin, il y a quelque chose appelé une file d'attente d'exécution . C'est là que toutes les instructions de tous les processus s'alignent pour attendre que leur tour soit exécuté.
Tout processus place ses "tâches" dans la file d'attente d'exécution, et une fois que le processeur est prêt, il les supprime et les exécute. Lorsqu'un programme se met en veille, par exemple, il se supprime de la file d'attente d'exécution et revient à la «fin de la ligne» une fois qu'il est prêt à s'exécuter à nouveau.
Le tri dans cette file d'attente a à voir avec la priorité des processus (également appelée "valeur intéressante" - c'est-à-dire qu'un processus est agréable à propos des ressources système).
La longueur de la file d'attente détermine la charge du système. Par exemple, une charge de 2,5 signifie qu'il y a 2,5 instructions pour chaque instruction que le processeur peut traiter en temps réel .
Sur Linux, d'ailleurs, cette charge est calculée à 10 ms d'intervalle (par défaut).
Passons maintenant aux valeurs de pourcentage d'utilisation du processeur:
Imaginez que vous avez deux horloges, une est appelée t
et représente le temps réel . Il mesure une seconde pour chaque seconde. L'autre horloge que nous appelons c
. Il ne s'exécute que s'il y a du traitement à faire. Cela signifie que ce n'est que lorsqu'un processus calcule quelque chose que l'horloge fonctionne. Ceci est également appelé temps CPU. Chaque processus du système «en a» un.
L'utilisation du processeur peut désormais être calculée pour un seul processus:
ou pour tous les processus:
Sur une machine multi-cœurs, cela peut entraîner une valeur de 3,9 bien sûr, car le processeur peut calculer quatre secondes de calcul chaque seconde, s'il est utilisé parfaitement.
Wikipedia fournit cet exemple:
Une application logicielle exécutée sur une machine UNIX à 6 CPU crée trois processus UNIX pour répondre aux besoins des utilisateurs. Chacun de ces trois processus crée deux threads. Le travail de l'application logicielle est réparti uniformément sur 6 threads d'exécution indépendants créés pour l'application. Si aucune attente de ressources n'est impliquée, le temps processeur total devrait être six fois le temps réel écoulé.
Voici un petit extrait de python qui fait cela
>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %
Dans un monde parfait, vous pouvez en déduire que la charge du système est de 100 à 66,93 = 33,1%. (Mais en réalité, ce serait faux à cause de choses complexes comme l'attente des E / S, l'inefficacité de la planification, etc.)
Contrairement à la charge , ces calculs aboutiront toujours à une valeur comprise entre 0 et le nombre de processeurs, soit entre 0 et 1 ou 0 à 100%. Il n'y a désormais aucun moyen de faire la différence entre une machine qui exécute trois tâches, en utilisant 100% de processeur, et une machine qui exécute un million de tâches, obtenant à peine le travail effectué sur l'une d'entre elles, également à 100%. Si vous essayez, par exemple, d'équilibrer un tas de processus sur de nombreux ordinateurs, l'utilisation du processeur est presque inutile. La charge est ce que vous voulez là-bas.
Maintenant, en réalité, il y a plus d'une de ces horloges de temps de traitement. Il y en a un pour attendre les E / S par exemple. Vous pouvez donc également calculer l'utilisation des ressources d'E / S.
Cela n'a peut-être pas été utile concernant la question initiale, mais j'espère que c'est intéressant. :)