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

20

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

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

Estoy la mayoría interesada en soluciones basadas en línea de comandos / applecript para un registro más conveniente y amp; Estadísticas, pero estoy abierto a alternativas.

Ambos (@ bmike 's & @ Las respuestas de michaelmichael son, sin duda, correctas. La meta-pregunta aquí es que ya hay sensores / lectores en la fuente de alimentación, que funcionarán como la forma en que funciona "kill-a-watt". Siento que la respuesta es "no".

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

Ah!

@ Kerri Shotts 'sugirió iStat Menus 3 do obtenga las lecturas de vataje de algunos sensores , junto con las estadísticas de voltios y amperios. Así que los medidores están ahí, pero ¿cómo puedo acceder a ellos mediante programación?

¡Bounty! Se otorgará para una sólida solución de lectura de sensores de línea de comando o para recomendar software de terceros excepcionalmente bueno (como uno con herramientas de datos estadísticos e históricos como mínimo ).

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

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

Indica "sensores", pero podrían calcularse como comentó @msanford. ¿Cómo puedo obtener esos datos de forma programática?

    
pregunta Jari Keinänen 17.06.2011 - 14:00

11 respuestas

14

system_profiler SPPowerDataType parece proporcionar la información más relevante. En las computadoras portátiles, informa sobre el voltaje y el amperaje que pueden proporcionarle el consumo de energía (mVolts × mAmperes × 10 ^ -6 = Watts). También informa Wattage, pero en realidad es una pieza de metadatos reportada por el adaptador de corriente de Apple, los adaptadores de potencia de terceros pueden mostrar espacios en blanco aquí. Dado que los equipos 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 busca en Google para Wattage o Power + mV sugiere que ciertas extensiones del kernel pueden Ser consultado sobre el consumo de energía. Desafortunadamente, no puedo encontrar un script de trabajo en este momento, pero parece posible.

    
respondido por el marchdown 26.06.2011 - 02:14
10

Esto no satisface los requisitos de la línea de comandos, pero intente iStat Menus 3 . Le proporciona lecturas en casi todos los sensores de su máquina (que para mí incluyen vatios de CA / CC, vatios de CPU y vatios de GPU). Estoy seguro de que no es 100% exacto, pero fue lo suficientemente preciso para que mi máquina 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 energía específicamente para el disco duro (que debería ser mínimo), ni nada específico de la pantalla (dicho esto, reducir el brillo de la pantalla LCD reduce la potencia en vatios bastante, por lo que se cuenta en total). / p>

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

    
respondido por el Kerri Shotts 17.06.2011 - 20:46
8

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

Usé esto para rastrear 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 visual de los datos. No estoy seguro de si hace lecturas de PSU (ya que no tengo la aplicación en la máquina que estoy en el cajero automático) pero golpea pci, slots, cpu y muchos otros.

Puede encontrar el software aquí: enlace

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

    
respondido por el Digitalchild 21.06.2011 - 02:19
7

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

Si está buscando una solución de secuencias de comandos, y un proyecto interesante, aquí hay instrucciones para crear un sistema de monitoreo de vataje inalámbrico o un " Tweet-a-Watt ".

    
respondido por el michaelmichael 17.06.2011 - 17:21
7

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

ioreg -w 0 -l

Eso será una gran cantidad de datos para revisar, se puede dividir de varias maneras. No creo que los datos reales que desea se proporcionen en el iMac, el sistema controla la temperatura en varios lugares, pero como no se ejecuta con una batería, es menos importante conocer la corriente instantánea que está extrayendo el sistema, y por lo tanto Probablemente no valga la pena el costo de un sensor.

    
respondido por el Louis Gerbarg 22.06.2011 - 10:46
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 controla la temperatura para reducir la frecuencia de 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 los datos no están expuestos o registrados, es posible que tenga que medirlos externamente. Los contadores decentes de energía para el hogar están entre $ 150 y $ 300 w

Puedes alquilar o comprar una unidad que mida la energía a través del tomacorriente y luego realizar algunas pruebas para ver cuánta energía toma el mac más de una hora en ciertas condiciones.

  • desactivado
  • dormir
  • inactivo
  • Varias cargas de CPU
  • CPU máxima, todo va

Luego, puede correlacionar esto con el monitoreo del uso de la CPU que es trivial con el tiempo usando top y ser capaz de agregar cosas.

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

    
respondido por el bmike 17.06.2011 - 17:27
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;
}
    
respondido por el Luyer 12.05.2017 - 07:11
2
system_profiler SPPowerDataType | grep Wattage

Hace el truco para mí en MacBook Pro (15 pulgadas, 2016)!

    
respondido por el shivsta 12.09.2017 - 12:53
2

He hecho un pequeño script basado en la salida de system_profiler. Calcula el vataje 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:'
}

Da como resultado 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
    
respondido por el serialx 26.04.2018 - 15:34
1

Estoy en un MacBook 10.6.8 y ioreg -l | grep LegacyBatteryInfo funcionó 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.

¿Existe alguna solución en 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.

    
respondido por el Rick Beacham 09.10.2012 - 21:50
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)}'

    
respondido por el rolandw 19.03.2012 - 19:50

Lea otras preguntas en las etiquetas