20 votos

¿Hay una manera de ver la frecuencia actual de la CPU en MacOS desde el terminal (no Intel power gadget)

Soy consciente de estas respuestas:

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

¿Ver la velocidad actual del reloj de una CPU en OS X?

Que se refieren a Intel Power Gadget como forma de obtener la frecuencia actual de la CPU, ¿existe algún programa/método para obtener esta información desde el terminal?

sysctl hw.cpufrequency sólo muestra la frecuencia nominal de la CPU, es decir, lo que el fabricante ha declarado. No tiene en cuenta el Turbo Boost o las frecuencias más bajas cuando la CPU está en reposo. (Por ejemplo, si la CPU es i5, 1.4GHz, siempre indicará 1.4GHz)

El C solución dada SO utilizando sysctl.h tiene el mismo efecto.

0 votos

Las respuestas detrás del enlace de StackOverflow contienen una respuesta basada en el Terminal. ¿Puede describir cómo esto no funciona para usted?

0 votos

Todas las soluciones en SO sólo muestran la frecuencia nominal de la CPU, no cambia según la frecuencia real, y no se correlaciona con Power Gadget

0 votos

Relacionado con esto: stackoverflow.com/a/8353086/4703819

18voto

ubiquibacon Puntos 5686

Puede utilizar powermetrics por esto:

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

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

9voto

webmarc Puntos 999

Ya que tu comentario menciona que en realidad sólo te enfocas en habilitar la Terminal (o más bien no el escritorio)...

Creo que el Intel Power Gadget te ayudará a obtener la información del Terminal. Desde Intel :

Intel® Power Gadget también proporciona una interfaz de programación de aplicaciones (API) en 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 más información sobre la API, consulte:

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

Siento que esto no sea un enlace a una solución fuera de la caja; pasé unos minutos con google para ver si podía encontrar a alguien que ya hizo esto sin suerte.

2 votos

Esta es la mejor respuesta hasta ahora. Esperaba que hubiera una forma de obtener información sobre la frecuencia sin necesidad de instalar un software externo (con algo como sysctl ), o utilizando software de código abierto.

6voto

Oskar Puntos 1242

Tengo que pensar que esto es un poco una pregunta X Y en el sentido de "¿Qué vas a hacer una vez que obtengas este número?" y querer responder a eso directamente, pero vamos a bucear un poco en lo que estás tratando de medir. Las interrupciones de la CPU en macOS se conforman en intervalos de 150 ms y gran parte de este detalle es público desde la WWDC 2013 y posteriormente en la gestión de energía, App Nap ( La sesión 209, en particular, es buena y accesible ) y optimizaciones de la duración de la batería en MacOS.

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

Dado que el código y cada núcleo de una CPU pueden y van a cambiar cientos de veces por segundo en función de factores de carga efímeros, las optimizaciones de energía que tienen en cuenta lo que se ve en la pantalla, los datos de red que llegan, la la idea de que una CPU moderna tenga una velocidad de reloj "común" en un momento dado parece simplificar en exceso 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.

Los aumentos cuando un solo núcleo puede funcionar con exceso de reloj son menos fáciles de medir, pero se puede medir el estrangulamiento térmico de forma muy sencilla con el registro térmico de pmset .

pmset -g therm

Por supuesto, puede registrar los cambios espontáneos en el estrangulamiento térmico de la CPU con pmset -g thermlog y luego asignar eso a las especificaciones de la CPU si puedes reunirlas en otro lugar.

5voto

trejder Puntos 183

Prueba con top -F -n0 -s3 | grep "CPU usage"

  • top mostrar y actualizar la información ordenada sobre los procesos
  • -F no calcular las estadísticas de las bibliotecas compartidas (frameworks)
  • -n0 mostrar cero procesos (porque no nos interesan)
  • -s3 actualizar cada 3 segundos (por defecto es 1)
  • grep nos muestra sólo la línea que contiene la frase Uso de la CPU

Ejemplo de salida:

$ 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 top requiere muchos recursos mientras se ejecuta.

Editar : Ah, quieres la frecuencia. Lo sé. iStat Menus tiene que instalar un ayudante para obtener esa información en tiempo real.

3 votos

Efectivamente la frecuencia es el problema, top y htop no proporcionan eso desafortunadamente.

0 votos

+1 por un bonito truco, pero la frecuencia de la CPU y un porcentaje de uso de la CPU no son lo mismo.

1 votos

@JakeGould ver mi (viejo) editar en la parte inferior de la respuesta.

4voto

Khb Puntos 1002

Sí, hay una manera.

Gadget de energía Intel tiene una idea bastante oscura PowerLog utilidad de línea de comandos. Esto le permite acceder a todos los datos de la interfaz gráfica de usuario, pero no requiere que escriba su propio código. Después de instalar Intel Power Gadget, la herramienta se encuentra en /Applications/Intel Power Gadget/PowerLog .

Parece que está pensado para generar archivos csv para su posterior análisis, PowerLog.csv por defecto, pero con el -verbose puede obtener los datos directamente en el shell.

Así que para obtener su frecuencia actual, esto debería funcionar:

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

Pero también, como han dicho otros, buscar una sola frecuencia es simplificar demasiado las cosas. Si miras la salida completa de una muestra puedes ver la frecuencia de cada núcleo

$ /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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X