Existe-t-il un moyen de mesurer l'utilisation du processeur d'un processus spécifique par les cœurs?
Je sais que top est bon pour mesurer l'utilisation du processeur de l'ensemble du système par les cœurs et l'ensemble de tâches peut fournir des informations sur le cœur de processeur autorisé pour le processus.
Mais comment mesurer l'utilisation du processeur d'un processus spécifique par les cœurs de processeur?
I
pour basculer en mode Irix (par opposition au mode Solaris ). Quandon
, le pourcentage affiché dans la liste des processus est relatif à un thread CPU . Quandoff
, ledit pourcentage est affiché par rapport à la capacité globale du processeur (c'est-à-dire TOUS les threads - c'est-à-dire tous les cœurs).top
,man
dit pagetop -1
mais il se plaint! Ce serait bien d'obtenirtop -1 -n 1
une seule itération detop
mais avec une utilisation séparée du processeur affichée.Vous pouvez utiliser:
Il montre combien chaque noyau est occupé et il se met à jour automatiquement chaque seconde. La sortie serait quelque chose comme ceci (sur un processeur quad-core):
Cette commande ne répond pas à la question d'origine, c'est-à-dire qu'elle n'affiche pas l'utilisation du cœur du processeur pour un processus spécifique.
la source
vous pouvez utiliser
ps
.par exemple, avoir un processus python avec deux threads occupés sur un processeur double cœur:
(PSR est l'identifiant du processeur auquel le thread est actuellement affecté)
vous voyez que les threads fonctionnent sur le même cœur de processeur (à cause de GIL)
exécutant le même script python en jython, nous voyons que le script utilise les deux cœurs (et il existe de nombreux autres services ou autres threads, qui sont presque inactifs):
vous pouvez traiter la sortie et calculer le CPU total pour chaque cœur de CPU.
Malheureusement, cette approche ne semble pas être fiable à 100%, parfois je vois que dans le premier cas, les deux threads de travail sont signalés comme étant séparés de chaque cœur de processeur, ou dans ce dernier cas, les deux threads sont signalés comme étant sur le même noyau ..
la source
htop
donne un bon aperçu de l'utilisation individuelle du cœurla source
La
ps
solution était presque ce dont j'avais besoin et avec un peu de bash ajouté, fait exactement ce que la question initiale demandait: voir l'utilisation par cœur de processus spécifiquesCela montre également l'utilisation par cœur des processus multi-threads .
Utilisez comme: cpustat `pgrep processname`` pgrep otherprocessname` ...
Remarque: ces statistiques sont basées sur la durée de vie du processus , et non sur les X dernières secondes, vous devrez donc redémarrer votre processus pour réinitialiser le compteur.
la source
Vous donnera également l'utilisation du processeur des 4 premiers cœurs. Bien sûr, si vous avez 32 cœurs, cette commande devient un peu plus longue mais utile si vous ne vous intéressez qu'à quelques cœurs.
Par exemple, si vous n'êtes intéressé que par les core 3 et 7, vous pouvez
la source
J'avais juste ce problème et j'ai trouvé une réponse similaire ici .
La méthode consiste à définir
top
comme vous le souhaitez, puis à appuyer surW
(W majuscule). Cela enregistretop
la mise en page actuelle dans un fichier de configuration dans $ HOME / .toprcBien que cela puisse ne pas fonctionner si vous souhaitez en exécuter plusieurs
top
avec des configurations différentes.Donc, via ce que je considère comme un travail, vous pouvez écrire dans différents fichiers de configuration / utiliser différents fichiers de configuration en effectuant l'une des opérations suivantes ...
1) Renommez le binaire
Va maintenant
.top2rc
être écrit dans votre $ HOME2) Définissez $ HOME sur un chemin alternatif, car il écrira son fichier de configuration dans le fichier $ HOME / .binary-name.rc
Maintenant
.toprc
être écrit dans le dossier actuel.En utilisant les commentaires d'autres personnes pour ajouter les divers comptes d'utilisation en haut, vous pouvez créer une sortie par lots pour ces informations et ces dernières fusionnent les informations via un script. Peut-être pas aussi simple que votre script, mais j'ai trouvé top pour me fournir TOUS les processus afin que plus tard, je puisse récapituler et capturer un état pendant une longue période que j'aurais peut-être manqué autrement (utilisation soudaine du processeur inexpliquée en raison de processus errants)
la source
J'ai pensé que c'était
perf stat
ce dont tu avais besoin.Il montre une utilisation spécifique d'un processus lorsque vous spécifiez une
--cpu=list
option. Voici un exemple de surveillance de l'utilisation du processeur lors de la construction d'un projet à l'aide de laperf stat --cpu=0-7 --no-aggr -- make all -j
commande. La sortie est:La colonne de gauche est l'index CPU spécifique et la colonne la plus à droite est l'utilisation du CPU. Si vous ne spécifiez pas l'
--no-aggr
option, le résultat sera agrégé. L'--pid=pid
option vous aidera si vous souhaitez surveiller un processus en cours d'exécution.Essayez
-a --per-core
ou-a perf-socket
aussi, qui présentera des informations plus classifiées.Plus d'informations sur l'utilisation de
perf stat
peuvent être vues dans ce tutoriel: perf cpu statistic ,perf help stat
aidera également sur la signification des options.la source