20 votes

Existe-t-il un moyen de voir la fréquence actuelle du CPU dans MacOS à partir d'un terminal (et non du gadget d'alimentation Intel) ?

Je suis conscient de ces réponses :

https://stackoverflow.com/questions/9948987/detect-current-cpu-clock-speed-programmatically-on-os-x

Afficher la vitesse d'horloge actuelle d'un processeur dans OS X ?

Qui se réfèrent à Intel Power Gadget comme moyen d'obtenir la fréquence actuelle du CPU, existe-t-il un programme/méthode pour obtenir cette information à partir du terminal ?

sysctl hw.cpufrequency n'indique que la fréquence nominale du CPU, c'est-à-dire ce que le fabricant a déclaré. Il ne tient pas compte de Turbo Boost ou des fréquences inférieures lorsque le CPU est inactif. (Par exemple, si le processeur est un i5 à 1,4 GHz, il indiquera toujours 1,4 GHz).

Le site C solution donnée SO utilisant sysctl.h a le même effet.

18voto

ForeverWintr Points 121

Vous pouvez utiliser powermetrics pour ça :

$ sudo powermetrics | grep "CPU Average frequency as fraction of nominal"                                                                                                   

CPU Average frequency as fraction of nominal: 85.40% (1964.20 Mhz)

9voto

webmarc Points 1653

Puisque votre commentaire mentionne que vous êtes vraiment concentré sur l'activation du Terminal (ou plus exactement du non bureau)...

Je pense que le gadget Intel Power Gadget vous aidera à obtenir vos informations à partir du terminal. À partir de Intel :

Intel® Power Gadget fournit également une interface de programmation d'applications (API) C/C++ pour accéder à ces données de puissance et de fréquence dans votre programme ; l'API est prise en charge sous Windows et Mac OS X. Pour plus d'informations sur les API, voir :

Et sur cette même page, également un lien vers Utilisation de l'API Intel Power Gadget sous Mac OS X

Désolé, ce n'est pas un lien vers une solution toute faite ; j'ai passé quelques minutes avec google pour voir si je pouvais trouver quelqu'un qui a déjà fait cela, sans succès.

6voto

Oskar Points 1242

Je dois penser que c'est un peu une question X Y dans le sens où "Qu'allez-vous faire une fois que vous aurez obtenu ce chiffre ?" et je veux y répondre directement, mais plongeons un peu dans ce que vous essayez de mesurer. Les interruptions du CPU sur MacOS sont façonnées par intervalles de 150 ms et une grande partie de ces détails sont publics depuis la WWDC 2013 et plus tard sur la gestion de l'alimentation, App Nap ( ). La session 209 en particulier est à la fois bonne et accessible. ) et des optimisations de l'autonomie de la batterie sur MacOS.

timer coalescing - energy savings over a time scale of 150 ms on macOS from WWDC 2013 session 209

Étant donné que le code et chaque cœur d'un processeur peuvent changer et changeront des centaines de fois par seconde en fonction de facteurs de charge éphémères, les optimisations de puissance qui tiennent compte de ce qui est visible à l'écran, des données du réseau qui arrivent, de l l'idée qu'un processeur moderne n'a qu'une seule fréquence d'horloge "commune" à un moment donné semble simplifier la réalité à l'extrême. . Avec 8 cœurs sur de nombreux MacBook Pro et des dizaines de cœurs sur l'iMac Pro, vous réduisez une tonne de complexité à un seul chiffre.

Il est moins probable que l'on puisse mesurer facilement les boosts obtenus lorsqu'un seul cœur peut fonctionner en surrégime, mais il est possible de mesurer très simplement l'étranglement thermique grâce à l'enregistrement thermique de l'outil de mesure de la température. pmset .

pmset -g therm

Vous pouvez bien sûr enregistrer les changements spontanés de l'étranglement thermique du CPU avec pmset -g thermlog et ensuite faire correspondre cela aux spécifications du CPU si vous pouvez les rassembler ailleurs.

5voto

Matt Sephton Points 4570

Essayez top -F -n0 -s3 | grep "CPU usage"

  • top afficher et mettre à jour les informations triées sur les processus
  • -F ne pas calculer de statistiques sur les bibliothèques partagées (frameworks)
  • -n0 afficher zéro processus (parce qu'ils ne nous intéressent pas)
  • -s3 mise à jour toutes les 3 secondes (la valeur par défaut est 1)
  • grep ne nous montre que la ligne contenant la phrase Utilisation du CPU

Exemple de sortie :

$ top -F -n0 -s3 | grep "CPU usage"
CPU usage: 9.36% user, 20.0% sys, 70.63% idle 
CPU usage: 8.35% user, 8.19% sys, 83.45% idle 
CPU usage: 8.18% user, 7.77% sys, 84.4% idle 
CPU usage: 5.89% user, 8.1% sys, 86.8% idle

Vous pourriez même analyser la sortie pour l'afficher ailleurs.

Sachez que top est très gourmand en ressources lorsqu'il fonctionne.

Modifier : Ah, vous voulez de la fréquence. Je sais iStat Menus doit installer un assistant pour obtenir cette information en temps réel.

4voto

Khb Points 1002

Oui, il y a un moyen !

Gadget de puissance Intel a une histoire plutôt obscure PowerLog utilitaire de ligne de commande. Il vous permet d'accéder à toutes les données de l'interface graphique, mais ne vous oblige pas à écrire votre propre code. Après avoir installé Intel Power Gadget, l'outil se trouve à l'adresse suivante /Applications/Intel Power Gadget/PowerLog .

Il semble destiné à générer des fichiers csv pour une analyse ultérieure, PowerLog.csv par défaut, mais avec l'option -verbose flag vous pouvez obtenir les données directement dans le shell.

Donc pour obtenir votre fréquence actuelle, cela devrait fonctionner :

$ /Applications/Intel\ Power\ Gadget/PowerLog -duration 1 -verbose  | grep "IA frequency:"  | head -1
IA frequency: 1655 (1200..2600) MHz, request: 1650 (1300..2600) MHz

Mais aussi, comme d'autres l'ont dit, chercher une seule fréquence, c'est trop simplifier les choses. Si vous regardez la sortie complète d'un échantillon, vous pouvez voir la fréquence de chaque noyau.

$ /Applications/Intel\ Power\ Gadget/PowerLog -resolution 1000 -duration 1 -verbose
Num Packages: 1
Using Package: 0
Num Cores: 16
GT Available? 1
IA Energy Available? 1
DRAM Energy Available? 1
Max Temperature: 100 degrees Celcius
IA Base Frequency: 2400 MHz
IA Max Frequency: 5000 MHz
TDP: 45.00 W
package temperature: 60.00 degrees Celsius
--------------------------
GT frequency: 0 MHz
GT frequency request: 0 MHz
package temperature: 57.00 degrees Celsius
IA temperature: 56.69 (55..59) degrees Celsius
IA metrics per-core:
    core 0 request: 2091 MHz temperature: 57 degrees Celcius
    core 1 request: 1767 MHz temperature: 58 degrees Celcius
    core 2 request: 1856 MHz temperature: 57 degrees Celcius
    core 3 request: 2000 MHz temperature: 57 degrees Celcius
    core 4 request: 1969 MHz temperature: 56 degrees Celcius
    core 5 request: 2000 MHz temperature: 56 degrees Celcius
    core 6 request: 1976 MHz temperature: 55 degrees Celcius
    core 7
    core 8 request: 1825 MHz temperature: 55 degrees Celcius
    core 9
    core 10 request: 1650 MHz temperature: 56 degrees Celcius
    core 11
    core 12 request: 1825 MHz temperature: 56 degrees Celcius
    core 13 request: 2000 MHz temperature: 56 degrees Celcius
    core 14 request: 1650 MHz temperature: 56 degrees Celcius
    core 15
--------------------------
IA frequency: 2070 (1200..3600) MHz, request: 2266 (1300..5000) MHz
GT frequency: 0 MHz
GT frequency request: 0 MHz
package power: 5.46 Watts, energy: 5.47 Joules
IA power: 2.84 Watts, energy: 2.85 Joules
DRAM power: 1.34 Watts, energy: 1.34 Joules
package temperature: 57.00 degrees Celsius
IA temperature: 56.74 (54..60) degrees Celsius
IA utilization: 0.78 %
IA metrics per-core:
    core 0 frequency: 1836 MHz request: 1915 MHz temperature: 57 degrees Celcius utilization: 4.56 %
    core 1 frequency: 1805 MHz request: 1650 MHz temperature: 57 degrees Celcius utilization: 0.04 %
    core 2 frequency: 2380 MHz request: 2763 MHz temperature: 57 degrees Celcius utilization: 4.76 %
    core 3 frequency: 1930 MHz request: 1300 MHz temperature: 57 degrees Celcius utilization: 0.02 %
    core 4 frequency: 2036 MHz request: 2127 MHz temperature: 55 degrees Celcius utilization: 1.24 %
    core 5 frequency: 1902 MHz request: 2550 MHz temperature: 55 degrees Celcius utilization: 0.04 %
    core 6 frequency: 1951 MHz request: 2075 MHz temperature: 55 degrees Celcius utilization: 0.84 %
    core 7 frequency: 1691 MHz request: 2000 MHz temperature: 55 degrees Celcius utilization: 0.02 %
    core 8 frequency: 1891 MHz request: 1991 MHz temperature: 55 degrees Celcius utilization: 0.46 %
    core 9
    core 10 frequency: 1592 MHz request: 1620 MHz temperature: 55 degrees Celcius utilization: 0.21 %
    core 11
    core 12 frequency: 1859 MHz request: 1860 MHz temperature: 56 degrees Celcius utilization: 0.11 %
    core 13 frequency: 2214 MHz request: 1300 MHz temperature: 56 degrees Celcius utilization: 0.02 %
    core 14 frequency: 1684 MHz request: 1580 MHz temperature: 55 degrees Celcius utilization: 0.11 %
    core 15
Done

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X