¿Cómo recuperar información de potencia actual en OS X?

21

¿Hay alguna manera de recuperar la información actual de uso de vatios en OS X Snow Leopard? Estoy usando iMac de mediados de 2010, por lo que no estoy buscando solo aplicaciones relacionadas con la batería.

¿OS X incluso controla el uso de energía? ¿Necesito usar un lector externo entre el cable de alimentación y la toma de corriente?

Estoy más interesado en soluciones basadas en línea de comandos / applecript para un registro y estadísticas más convenientes, pero estoy abierto a alternativas.


Ambas respuestas ( @bmike 's y @ michaelmichael ) son indudablemente correctas. La metapregunta aquí es que hay sensores / lectores que ya están en la fuente de alimentación, que funcionarían como la forma en que funciona "kill-a-watt". Siento que la respuesta para eso es "no".

Lo sé, probablemente sea solo un sueño húmedo, pero un vatímetro a bordo sería ideal para que la computadora gritara: "¡Mira lo ecológico que soy; usando solo estos vatios!"


Ah!

@ Kerri Shotts 'sugerido iStat menús 3 Do obtener las lecturas de voltaje de algún sensor , junto con voltios y amperios estadísticas. Entonces, los medidores están allí, pero ¿cómo podría acceder a ellos mediante programación?


¡Generosidad! Se dará lectura del sensor para la solución de línea de comandos sólido o para recomendar excepcionalmente bueno 3 rd software de otros fabricantes (como una con herramientas de datos estadísticos e históricos como mínimo).

Solo para informar: el mencionado iStat Menus 3 enumera los siguientes sensores relacionados con la energía:

  • Sensores de voltaje (voltios)
    • AC/DC
    • AC/DC
    • AC / DC Shunt
    • UPC
    • CPU 1.8V S0
    • CPU CTT
    • Módulo de gráficos
    • Memoria
  • Sensores de corriente (amperios)
    • AC/DC
    • UPC
    • CPU VTT
    • Módulo de gráficos
  • Sensores de potencia (vatios)
    • AC/DC
    • UPC
    • Módulo de gráficos

Sí dice "sensores", pero podrían calcularse como comentó @msanford. ¿Cómo puedo obtener esos datos mediante programación?

Jari Keinänen
fuente
Las Mac son muy ecológicas y Apple realiza la prueba de una unidad, así como los laboratorios con equipos de prueba calibrados. Afortunadamente, podemos usar la configuración para maximizar los equipos Mac que tenemos mientras se presentan mañana con modelos más eficientes.
bmike
1
¿La fuente de alimentación no informa su carga actual (como estoy bastante seguro de que informa su voltaje)? Si es así, P = IV, o Watts = Corriente (en amperios) • Voltaje (en voltios). La potencia no es algo que se mide directamente, sino que se calcula a partir de la corriente y el voltaje, por lo que no esperaría que un sensor informe vatios si ya hay informes sobre el voltaje y la corriente. Si eso ayuda ...
msanford
@msanford podría ayudar, si alguien nos dice cómo leer las lecturas de la PSU.
Jari Keinänen

Respuestas:

21

system_profiler SPPowerDataTypeparece proporcionar la información más relevante. En las computadoras portátiles, informa el voltaje y el amperaje que pueden proporcionarle el consumo de energía (mVolts × mAmperes × 10 ^ -6 = Watts). También informa de Wattage, pero en realidad es una pieza de metadatos informados por el adaptador de corriente de Apple, los adaptadores de corriente de terceros pueden mostrar espacios en blanco aquí. Dado que las computadoras de escritorio no tienen baterías recargables, no hay forma de calcular el consumo de energía midiendo la carga y descarga de la batería.

¡Pero espera, todavía hay esperanza! Apple publica una gran cantidad de código fuente, y buscar en Google Wattage o Power + mV sugiere que ciertas extensiones del kernel pueden consultarse sobre el consumo de energía. Desafortunadamente, no puedo encontrar un script de trabajo en este momento, pero parece posible.

Marchar
fuente
1
Veo que es la interfaz de línea de comandos para el System Profiler.app. Lamentablemente, en las computadoras de escritorio, solo muestra la configuración de EnergySaver.prefpaney si está instalado un UPS.
Jari Keinänen
En mi rMBP 2015 15 ", el amperaje y el voltaje de la sección La información de la batería es más o menos constante, al menos en comparación con el valor" Total del sistema "de iStat, que se actualiza cada segundo. Además, noté que Amperage es 0.
Johannes Bittner
Me gusta esto; Corto y simple. Nada que descargar o instalar. Si la gente está interesada, yo (u otra persona) podría crear fácilmente un script / comando para extraer los campos necesarios de este comando y escupir la potencia real que se está utilizando.
rinogo
Actualización: el comando especificado funcionó para mí cuando lo necesitaba la primera vez, pero cuando lo necesitaba de nuevo, no funcionó. Muestra valores extraños para el amperaje. Tal vez simplemente no estoy buscando en el lugar correcto. Quién sabe ... mmm.
rinogo
11

Esto no satisface los requisitos de la línea de comandos, pero intente con iStat Menus 3 . Le da lecturas de casi todos los sensores en su máquina (que para mí incluye vatios de CA / CC, vatios de CPU y vatios de GPU). Estoy seguro de que no es 100% preciso, pero fue más que suficiente para ajustar mi máquina para que funcione dentro de las limitaciones limitadas de mi batería APC.

Dicho todo esto, mi máquina es una iMac 2010, por lo que, dependiendo de su máquina, puede o no funcionar. Además, no veo lecturas de potencia específicamente para el HDD (que debería ser mínimo), ni nada específico para la pantalla (dicho esto, reducir el brillo de la pantalla LCD reduce bastante la potencia, por lo que se cuenta en total).

Vale la pena intentarlo al menos. IIRC hay una versión gratuita, pero valió tanto la pena que seguí adelante y pagué por ella. Soy un poco fanático del control, así que tengo memoria, temperatura, actividad de disco, actividad de red, etc., en mi barra de menú y me encanta. :-)

Kerri Shotts
fuente
2
¡Por excelencia! Ahora la pregunta es: ¿cómo obtienen los menús iStat las lecturas del sensor ...?
Jari Keinänen
8

Hay una aplicación paga llamada Hardware Monitor que proporciona acceso a casi todos los sensores disponibles en una Mac, incluidos el voltaje, la corriente y la potencia que creo que está buscando. Incluye una utilidad de línea de comandos para leer esta información.

Utilicé esto para localizar una placa lógica defectuosa en un iMac el año pasado y encontré que valía la pena los 7 €. Incluye la capacidad de enviar los valores del sensor a un CSV que puede ser útil para el registro y la visualización de los datos. No estoy seguro de si hace lecturas de PSU (ya que no tengo la aplicación en la máquina en la que estoy en el cajero automático) pero golpea pci, slots, cpu y muchos otros.

Puede encontrar el software aquí: http://www.bresink.com/osx/HardwareMonitor.html

No estoy asociado con esta compañía en absoluto, solo encontré que la herramienta es muy útil en mi arsenal de diagnósticos.

Digitalchild
fuente
Lyken gana el premio con esta respuesta. Qué increíble pieza de software. Herramienta de línea de comando, barra de menú y aplicación completa. A menos que la fuente de alimentación en sí sea monitoreada en nuevos equipos Mac, no dará una clasificación de potencia total, pero esto seguramente hace un gran trabajo al acceder a todos los datos disponibles.
bmike
Perdón por la actualización tardía, pero, @Lyken, tu +100 es bien merecido: dudé en dar el +200 completo ya que el Monitor de hardware aparentemente no dará la potencia de la PSU como lo hace iStat Menus 3; por alguna razón, el HWM enumera los sensores de potencia solo durante CPU A4 CPU High Sidesy MXM Graphics Module. Sin embargo, es una gran aplicación y hubiera otorgado su respuesta en un abrir y cerrar de ojos si alguna otra respuesta de recompensa hubiera cumplido con las reglas automáticas de media recompensa . Como dije, +100 bien merecido.
Jari Keinänen
Sí, creo que HWM lee los sensores según el modelo, por lo que depende de lo que esté disponible en su versión. ¿Leyó iStat Menú 3 también la potencia de la fuente de alimentación en su modelo?
Digitalchild
1
Desafortunadamente, Hardware Monitor anunció EOL el 19 de junio de 2017. bresink.com/osx/216202/eol.html
walterra
7

IANAEE (no soy un ingeniero eléctrico), pero según tengo entendido, no es posible medir con precisión el consumo de energía de una computadora a través de un software. La mejor solución es conectar su Mac a un dispositivo como un Kill-a-Watt

Si está buscando una solución programable, y un proyecto interesante, aquí hay instrucciones sobre cómo crear un sistema de monitoreo de potencia inalámbrico, o un " Tweet-a-Watt ".

michaelmichael
fuente
7

Todos los datos en iStat son solo de claves en el ioregisterio. Puede extraer un volcado desde la línea de comandos usando ioreg:

ioreg -w 0 -l

Será una gran cantidad de datos para revisar, puede dividirlos de varias maneras. No creo que los datos reales que desea se proporcionen en iMac, el sistema monitorea la temperatura en varios lugares, pero dado que no funciona con una batería, es menos importante saber la corriente instantánea que está siendo extraída por el sistema y, por lo tanto, Probablemente no valga la pena el costo de un sensor.

Louis Gerbarg
fuente
5

No hay sensores medidos en la fuente de alimentación.

La placa lógica mide la temperatura en varios lugares para controlar los sopladores y la CPU monitorea la temperatura para reducir la velocidad del reloj cuando se calienta más de lo que los sopladores pueden enfriarla.

Supongo que se podría hacer una tesis de doctorado sobre la integración de la velocidad del ventilador y varios sensores de temperatura para calcular el consumo de energía esperado. Es posible obtener un cálculo y con un poco de calibración, incluso podría ser bastante preciso.

En realidad, dado que esos datos no están expuestos o grabados, es posible que tenga que medir externamente. Los contadores de energía domésticos decentes cuestan entre $ 150 y $ 300 w

Puede alquilar o comprar una unidad que mida la potencia a través de la toma de corriente y luego realizar alguna prueba para ver cuánta energía tarda la Mac en más de una hora en ciertas condiciones.

  • Apagado
  • Dormir
  • Ocioso
  • Varias cargas de CPU
  • Máxima CPU, todo funciona

Entonces podría correlacionarlos con el monitoreo del uso de la CPU que es trivial con el tiempo topy puede sumar cosas.

Todo depende de lo que realmente quiera hacer con los datos, aparte de aprender cómo funciona el hardware y tener algunos gráficos geniales.

bmike
fuente
2
+ necesita agregar ad infinitum más cosas a la lista. Probablemente para cuando haya calibrado todas las condiciones, necesitaría reemplazar el iMac actual :-D Tal vez solo algunos medidores básicos externos de W y kWh serían suficientes, si no hay medidores a bordo.
Jari Keinänen
2
:-) Me alegro de que tengas el humor. Mi experiencia es que los Mac obtienen entre un 20 y un 25% menos que las especificaciones publicadas por Apple, incluso bajo rigurosas pruebas para que todo se dibuje a la máxima potencia.
bmike
1
@bmike No estaría tan seguro de eso, se sabe que el rMBP agota la batería cuando está lo suficientemente cargado en la CPU + GPU debido a que el adaptador de 85 W proporciona corriente insuficiente.
Steven Lu
1
@stevenlu No me sorprendería si el último hardware de la era 2013 presiona más que la tecnología de la era de mediados de 2010 que se está discutiendo aquí. Del mismo modo, la administración de energía en 10.8 es más sofisticada que 10.6. Además, según mi experiencia, utilizan mucho la batería interna, pero no tanto del adaptador de CA. Incluso los nuevos modelos de USB-C PD siguen ese patrón de gran consumo interno / consumo externo amortiguado + más ligero
bmike
3

Hice un pequeño script basado en la salida de system_profiler. Calcula la potencia utilizando el voltaje y los amperios dados.

powerstat() {
    b=$(system_profiler SPPowerDataType)
    amp=$(echo "$b" | grep 'Amperage (mA):' | cut -d ':' -f 2 | xargs)
    volt=$(echo "$b" | grep 'Voltage (mV):' | cut -d ':' -f 2 | xargs)
    power=$(($amp * $volt / 1000))
    echo "$b" | grep --color=never -A 1 'Battery Information:'
    echo "$b" | grep --color=never -A 1 'Amperage (mA)'
    echo "      Total Power (mW): $power"
    echo ""
    echo "$b" | grep --color=never -A 99 'AC Charger Information:'
}

Produce algo como:

$ powerstat
    Battery Information:

      Amperage (mA): -552
      Voltage (mV): 12794
      Total Power (mW): -7062

    AC Charger Information:

      Connected: No
      Charging: No

Al cargar:

$ powerstat
    Battery Information:

      Amperage (mA): 1545
      Voltage (mV): 12850
      Total Power (mW): 19853

    AC Charger Information:

      Connected: Yes
      Wattage (W): 60
      Charging: No
serialx
fuente
2
// Build with: gcc psudata.cc -o psudata -framework IOKit
#include <stdio.h>
#include <string.h>
#include <IOKit/IOKitLib.h>

typedef struct {
  uint32_t key;
  char ignored[24];
  uint32_t size;
  char ignored2[10];
  char cmd;
  char ignored3[5];
  float val;
  char ignored4[28];
} smc_t;

int main(void) {
  mach_port_t mp;
  CFMutableDictionaryRef d;
  io_iterator_t it;
  io_object_t svc;
  io_connect_t ioc;
  smc_t req, resp;
  size_t sz = sizeof(resp);
  uint32_t vk  = ('V' << 24) + ('D' << 16) + ('0' << 8) + 'R';
  uint32_t ik  = ('I' << 24) + ('D' << 16) + ('0' << 8) + 'R';
  float v, i;

  IOMasterPort(MACH_PORT_NULL, &mp);
  d = IOServiceMatching("AppleSMC");
  IOServiceGetMatchingServices(mp, d, &it);
  svc = IOIteratorNext(it);
  IOObjectRelease(it);
  IOServiceOpen(svc, mach_task_self(), 0, &ioc);
  IOObjectRelease(svc);
  memset(&req, 0, sizeof(smc_t));
  memset(&resp, 0, sizeof(smc_t));
  req.cmd = 5;
  req.size = 4;
  req.key = vk;
  IOConnectCallStructMethod(ioc, 2, &req, sizeof(req), &resp, &sz);
  v = resp.val;
  req.key = ik;
  IOConnectCallStructMethod(ioc, 2, &req, sizeof(req), &resp, &sz);
  i = resp.val;
  IOServiceClose(ioc);

  printf("%fV %fA %fW\n", v, i, v*i);
  return 0;
}
Luyer
fuente
En realidad respondí la pregunta equivocada, lo siento ... Vine aquí como resultado de una búsqueda del voltaje y la corriente de carga de un cargador USB-C ... y como no lo encontré, deduje lo anterior y publiqué aquí. Pero en realidad no es lo que querías; probablemente podría combinar los datos de entrada de CC (esto) con los datos de la batería (otras respuestas) para inferir los datos de uso.
Luyer
2
system_profiler SPPowerDataType | grep Wattage

¡El truco para mí en MacBook Pro (15 pulgadas, 2016)!

shivsta
fuente
2
Esto informa la potencia del adaptador de CA, no el consumo de energía actual. Por contexto:system_profiler SPPowerDataType | grep -C4 Wattage
Edward Anderson
2

Aquí hay un ioregcomando que imprime la mayor parte de la información de potencia sin 'grep'. Regresa mucho más rápido que system_profiler en mi máquina, por lo que probablemente sea más adecuado para ejecutar un script o ejecutarse en segundo plano.

ioreg -w 0 -f -r -c AppleSmartBattery
gordito
fuente
1

Estoy en una MacBook 10.6.8 y ioreg -l | grep LegacyBatteryInfotrabajé para mí.

Lo intenté previamente

ioreg -l | grep LegacyBatteryInfo | \
    cut -d '{' -f 2 | tr -d \} | tr ',' '=' | \
    awk -F'=' '{print ($2*$10/10^22)}' 

y devolvió 0.

¿Hay una solución de la biblioteca de desarrollo de Apple?

¿Por qué no mirar afuera en el medidor de potencia? Registre sus lecturas y luego correlacione con un% de uso de CPU constante y común. Entonces puedes obtener una aproximación.

Rick Beacham
fuente
0

Creo que para 10.7 esto debería funcionar desde la terminal:

ioreg -l | grep LegacyBatteryInfo | cut -d '{' -f 2 | tr -d \} | tr ',' '=' | awk -F'=' '{print ($2*$10/10^22)}'

rolandw
fuente
2
ioreg -l | grep LegacyBatteryInfono me devuelve nada en iMac.
Jari Keinänen