Gibt es eine Möglichkeit, die aktuelle CPU-Frequenz in macOS vom Terminal aus anzuzeigen (nicht das Intel Power Gadget)?

14

Mir sind diese Antworten bekannt:

/programming/9948987/detect-current-cpu-clock-speed-programmatic-on-os-x

Aktuelle Taktrate einer CPU in OS X anzeigen?

Gibt Intel Power Gadgetes ein Programm / eine Methode, um diese Informationen vom Terminal abzurufen?

sysctl hw.cpufrequencyzeigt nur die Nennfrequenz der CPU an, dh was der Hersteller angegeben hat. Turbo Boost oder niedrigere Frequenzen werden nicht berücksichtigt, wenn die CPU im Leerlauf ist. (Wenn die CPU beispielsweise i5, 1,4 GHz ist, wird immer 1,4 GHz angegeben.)

Die CLösung, die es SO verwendet, sysctl.hhat den gleichen Effekt.

Amanusk
quelle
Die Antworten hinter dem StackOverflow-Link enthalten eine Terminal-basierte Antwort. Können Sie beschreiben, wie das bei Ihnen nicht funktioniert?
Nohillside
Alle Lösungen auf SO zeigen nur die nominale CPU-Frequenz an, sie ändert sich nicht entsprechend der tatsächlichen Frequenz und korreliert nicht mit Power Gadget
amanusk
Siehe auch
Allan
Soweit ich weiß, wird die "Frequenz" anhand einer Reihe von Faktoren berechnet. Es ist keine "Sonde" an die CPU angeschlossen, um in Echtzeit zu messen, wie hoch die Frequenz tatsächlich ist.
Allan
1
Wenn es unter Linux funktioniert, wäre es eine Option, sich den Quellcode dort anzusehen?
Nohillside

Antworten:

4

Da in Ihrem Kommentar erwähnt wird, dass Sie sich wirklich nur darauf konzentrieren, Terminal (oder genauer gesagt nicht Desktop) zu aktivieren ...

Ich denke, dass das Intel Power Gadget Ihnen helfen wird, Ihre Informationen vom Terminal zu erhalten. Von Intel :

Intel® Power Gadget bietet außerdem eine C / C ++ - API (Application Programming Interface) für den Zugriff auf diese Leistungs- und Frequenzdaten in Ihrem Programm. Die API wird unter Windows und Mac OS X unterstützt. Weitere Informationen zu den APIs finden Sie unter:

Und auf derselben Seite auch einen Link zur Verwendung der Intel Power Gadget-API unter Mac OS X.

Dies ist leider kein Link zu einer sofort einsatzbereiten Lösung. Ich habe ein paar Minuten mit Google verbracht, um zu sehen, ob ich jemanden finden konnte, der dies bereits ohne Glück getan hat.

Webmarc
quelle
1
Dies ist die bisher beste Antwort. Ich hatte gehofft, dass es eine Möglichkeit gibt, Frequenzinformationen zu erhalten, ohne externe Software (mit so etwas wie sysctl) oder Open-Source-Software zu installieren .
Amanusk
2

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

topAnzeigen und Aktualisieren sortierter Informationen zu Prozessen
-FBerechnen Sie keine Statistiken zu gemeinsam genutzten Bibliotheken (Frameworks).
-n0Zeigen Sie keine Prozesse an (da wir nicht an ihnen interessiert sind).
-s3Aktualisieren Sie alle 3 Sekunden (Standard ist 1).
grepZeigt nur die Zeile an, die den Ausdruck CPU-Auslastung enthält

Beispielausgabe:

$ 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

Sie können die Ausgabe sogar für die Anzeige an anderer Stelle analysieren.

Beachten Sie, dass dies topwährend des Betriebs sehr ressourcenintensiv ist.

Edit: Ah, du willst Frequenz. Ich weiß iStat Menus, dass ein Helfer installiert werden muss, um diese Informationen in Echtzeit zu erhalten.

Matt Sephton
quelle
2
In der Tat ist Frequenz das Problem, top und htop bieten das leider nicht.
Amanusk
2

Ich muss denken, dass dies eine Art XY-Frage ist: "Was wirst du tun, wenn du diese Nummer hast?" und möchten das direkt beantworten, aber lassen Sie uns ein wenig in das eintauchen, was Sie messen möchten. CPU-Interrupts unter macOS werden in Intervallen von 150 ms geformt. Viele dieser Details sind ab WWDC 2013 und später über Power Management, App Nap (insbesondere Sitzung 209 ist sowohl gut als auch zugänglich ) und die Optimierung der Akkulaufzeit unter macOS öffentlich .

Timer Coalescing - Energieeinsparung über eine Zeitskala von 150 ms unter macOS ab WWDC 2013 Sitzung 209

Da sich der Code und jeder Kern einer CPU hunderte Male pro Sekunde ändern kann und wird, basierend auf kurzlebigen Lastfaktoren, Leistungsoptimierungen, die berücksichtigen, was auf dem Bildschirm sichtbar ist, welche Netzwerkdaten eintreffen, die Idee, dass eine moderne CPU sogar eine "gemeinsame" hat "Die Taktrate zu einem bestimmten Zeitpunkt scheint die Realität erheblich zu vereinfachen . Mit 8 Kernen auf vielen MacBook Pro und Dutzenden von Kernen auf dem iMac Pro können Sie eine Menge Komplexität auf eine Zahl reduzieren.

Es ist weniger wahrscheinlich, dass die Boosts, wenn ein einzelner Kern übertaktet laufen kann, leicht gemessen werden können, aber Sie können die thermische Drosselung sehr einfach mit der thermischen Protokollierung von messen pmset.

pmset -g therm

Sie können natürlich die spontanen Änderungen an der thermischen Drosselung der CPU mit protokollieren pmset -g thermlogund diese dann den CPU-Spezifikationen zuordnen, wenn Sie sie an anderer Stelle erfassen können.

bmike
quelle
Eine Option, um eine Frequenz pro Kern zu erhalten, ist ebenfalls willkommen :). Die Frequenz kann sich viele Male pro Sekunde ändern, aber eine Stichprobe dieser Sekunde würde höchstwahrscheinlich ausreichen, wenn Sie beispielsweise die Frequenz im Leerlauf oder im vollen Turbo kennen möchten (wie bei einem Stresstest). Die Bestimmung von Leistung und Temperatur ist tatsächlich möglich (wenn auch nicht einfach) durch Lesen der SMC-Tasten. Ich hatte gehofft, dass es auch eine SMC-Taste für die Frequenz gibt. Tatsache ist, dass es Software gibt, die diese Informationen erhält (Intel Power Gadget). Die Frage ist, wie man dies ohne zusätzliche Software tun kann.
Amanusk