¿Hay alguna manera de ver la frecuencia actual de la CPU en macOS desde la terminal (no el dispositivo de alimentación Intel)

14

Soy consciente de estas respuestas:

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

Ver el reloj actual ¿Velocidad de una CPU en OS X?

Que se refieren Intel Power Gadgetcomo una forma de obtener la frecuencia actual de la CPU, ¿hay un programa / método para obtener esta información del terminal?

sysctl hw.cpufrequencysolo muestra la frecuencia nominal de la CPU, es decir, lo que ha declarado el fabricante. No considera Turbo Boost o frecuencias más bajas cuando la CPU está inactiva. (Por ejemplo, si la CPU es i5, 1.4GHz, siempre indicará 1.4GHz)

La Csolución que se le dio con SO sysctl.htiene el mismo efecto.

amanusk
fuente
Las respuestas detrás del enlace StackOverflow contienen una respuesta basada en Terminal. ¿Puedes describir cómo esto no funciona para ti?
nohillside
Todas las soluciones en SO solo muestran la frecuencia nominal de la CPU, no cambia de acuerdo con la frecuencia real y no se correlaciona con Power Gadget
amanusk
Por lo que entiendo, la "frecuencia" se calcula en función de una serie de factores. No hay una "sonda" conectada a la CPU para medir en tiempo real cuál es la frecuencia real.
Allan
1
Si funciona en Linux, ¿sería una opción mirar el código fuente allí?
nohillside

Respuestas:

4

Como su comentario menciona que en realidad solo está enfocado en habilitar Terminal (o más exactamente no en el escritorio) ...

Creo que Intel Power Gadget lo ayudará a obtener su información de la Terminal. De Intel :

Intel® Power Gadget también proporciona una interfaz de programación de aplicaciones (API) C / C ++ para acceder a estos datos de potencia y frecuencia en su programa; la API es compatible con Windows y Mac OS X. Para obtener más información sobre las API, consulte:

Y en esa misma página, también un enlace a Uso de la API de Intel Power Gadget en Mac OS X

Lo sentimos, este no es un enlace a una solución lista para usar; Pasé unos minutos con google para ver si podía encontrar a alguien que ya hiciera esto sin suerte.

webmarc
fuente
1
Esta es la mejor respuesta hasta ahora. Esperaba que haya una manera de obtener información de frecuencia sin la instalación de software externo (con algo parecido sysctl), o mediante el uso de software de código abierto.
amanusk
2

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

topmostrar y actualizar información ordenada sobre procesos
-Fno calcula estadísticas en bibliotecas compartidas (frameworks)
-n0muestra cero procesos (porque no estamos interesados ​​en ellos)
-s3actualizar cada 3 segundos (el valor predeterminado es 1)
grepnos muestra solo la línea que contiene la frase Uso de CPU

Salida de ejemplo:

$ 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

Incluso podría analizar la salida para mostrarla en otro lugar.

Tenga en cuenta que toprequiere muchos recursos mientras se está ejecutando.

Editar: Ah, quieres frecuencia. Sé que iStat Menustiene que instalar un ayudante para obtener esa información en tiempo real.

Matt Sephton
fuente
2
De hecho, la frecuencia es el problema, top y htop no proporcionan eso desafortunadamente.
amanusk
2

Tengo que pensar que esta es una pregunta un poco XY en que "¿Qué vas a hacer una vez que obtengas este número?" y quiero responder eso directamente, pero profundicemos un poco en lo que estás tratando de medir. Las interrupciones de la CPU en macOS se configuran en intervalos de 150 ms y gran parte de este detalle es público de WWDC 2013 y más tarde en la administración de energía, la aplicación Nap (la sesión 209 en particular es buena y accesible ) y las optimizaciones de duración de la batería en macOS.

coalescencia del temporizador: ahorro de energía en una escala de tiempo de 150 ms en macOS de la sesión 209 de WWDC 2013

Dado que el código y cada núcleo de una CPU pueden y cambiarán cientos de veces por segundo en función de factores de carga efímeros, optimizaciones de energía que consideran lo que es visible en la pantalla, qué datos de red llegan, la idea de que una CPU moderna incluso tiene una "común" "La frecuencia de reloj en cualquier momento parece simplificar demasiado la realidad . Con 8 núcleos en muchos MacBook Pro y docenas de núcleos en el iMac Pro, estás reduciendo una tonelada de complejidad a un solo número.

Es menos probable que los aumentos cuando un solo núcleo puede pasar por encima del reloj se midan fácilmente, pero puede medir la aceleración térmica de manera muy simple con el registro térmico de pmset.

pmset -g therm

Por supuesto, puede registrar los cambios espontáneos en la aceleración térmica de la CPU pmset -g thermlogy luego asignarlos a las especificaciones de la CPU si puede reunirlos en otro lugar.

bmike
fuente
Una opción para obtener una frecuencia por núcleo también es bienvenida :). La frecuencia puede cambiar muchas veces por segundo, pero una muestra de ese segundo probablemente sería suficiente, por ejemplo, si desea conocer la frecuencia en inactivo o en Turbo completo (como en una prueba de esfuerzo). De hecho, es posible determinar la potencia y la temperatura (aunque no directamente) leyendo las teclas SMC, esperaba que también haya una tecla SMC para la frecuencia. El hecho es que hay software que obtiene esta información (dispositivo de alimentación Intel), la pregunta es cómo se puede hacer esto sin software adicional.
amanusk