Como recuperar as informações de potência atual no OS X?

21

Existe uma maneira de recuperar as informações atuais de uso de watt no OS X Snow Leopard? Estou usando o iMac de meados de 2010, portanto, não estou procurando apenas aplicativos relacionados à bateria.

O OS X monitora o uso de energia? Preciso usar um leitor externo entre o cabo de alimentação e a tomada?

Estou mais interessado em soluções baseadas em linha de comando / maçãs de script para registro e estatísticas mais convenientes, mas estou aberto a alternativas.


Ambas as respostas (@ bmike e @ michaelmichael ) estão, sem dúvida, corretas. A meta-pergunta aqui era a de que existem sensores / leitores já no PSU, que funcionariam como a maneira como "mata um watt" funciona. Eu sinto que a resposta para isso é "não".

Eu sei, provavelmente é apenas um sonho úmido, mas um medidor de watt a bordo seria ideal para o computador gritar: "Veja como eu sou ecológico; use apenas esses watts!"


Ah!

@ Kerri Shotts 'sugeriu iStat Menus 3 Do obter as leituras de potência de alguns sensores , juntamente com volts e ampères estatísticas. Então os medidores estão lá, mas como eu poderia acessá-los programaticamente?


Recompensa! Será dado para solução de leitura do sensor de linha de comando sólido ou para recomendar excepcionalmente bom 3 rd partido software (como um com as ferramentas de dados estatísticos e históricos no mínimo).

Apenas para informar: o mencionado iStat Menus 3 lista os seguintes sensores relacionados à energia:

  • Sensores de tensão (Volts)
    • AC / DC
    • AC / DC
    • Derivação AC / DC
    • CPU
    • CPU 1.8V S0
    • CPU CTT
    • Módulo Gráfico
    • Memória
  • Sensores de Corrente (Amperes)
    • AC / DC
    • CPU
    • CPU VTT
    • Módulo Gráfico
  • Sensores de potência (Watts)
    • AC / DC
    • CPU
    • Módulo Gráfico

Ele indica "sensores", mas eles podem ser calculados como o @msanford comentou. Como colocar minhas mãos nesses dados programaticamente?

Jari Keinänen
fonte
Os Macs são muito ecológicos e o teste de uma unidade é feito pela Apple, bem como laboratórios com equipamentos de teste calibrados. Felizmente, podemos usar as configurações para maximizar os macs que temos enquanto eles apresentam modelos mais eficientes amanhã.
bmike
11
O PSU não relata sua carga atual (como tenho certeza de que relata sua tensão)? Nesse caso, P = IV ou Watts = Corrente (em amperes) • Tensão (em volts). A potência não é algo diretamente medido, mas calculado a partir da corrente e da tensão; portanto, eu não esperaria que um sensor reportasse watts se já houver relatórios sobre tensão e corrente. Se isso ajuda ...
msanford
@msanford pode ajudar - se alguém nos disser como ler as leituras do PSU.
Jari Keinänen

Respostas:

21

system_profiler SPPowerDataTypeparece fornecer as informações mais relevantes. Nos laptops, ele informa a tensão e a amperagem, o que pode fornecer o consumo de energia (mVolts × mAmperes × 10 ^ -6 = Watts). Ele também relata Wattagem, mas na verdade é um pedaço de metadado relatado pelo adaptador de energia da Apple; os adaptadores de energia de terceiros podem mostrar espaços em branco aqui. Como os computadores de mesa não possuem baterias recarregáveis, não há como calcular o consumo de energia medindo o carregamento e o descarregamento da bateria.

Mas espere, ainda há esperança! A Apple publica muito código-fonte, e pesquisando no Google por Wattage ou Power + mV sugere que certas extensões do kernel podem ser consultadas sobre o consumo de energia. Infelizmente, não posso criar um script de trabalho no momento, mas parece possível.

marcha
fonte
11
Eu vejo que é a interface da linha de comandos para o System Profiler.app. Infelizmente, em desktops, apenas mostra as configurações EnergySaver.prefpanee se um no-break está instalado.
Jari Keinänen
No meu rMBP 2015 15" , amperagem e voltagem da seção Informações sobre a bateria é mais ou menos constante, pelo menos em comparação com o 'valor total do sistema' de iStat, que atualiza a cada segundo também, notei amperagem estar. 0.
Johannes Bittner
Amo isso; curto e simples. Nada para baixar ou instalar. Se as pessoas estiverem interessadas, eu (ou outra pessoa) poderia facilmente criar um script / comando para extrair os campos necessários desse comando e cuspir a potência real em uso.
Rinogo 29/08
Atualização: o comando especificado funcionou para mim quando precisei da primeira vez, mas quando precisei novamente, não funcionou. Está exibindo valores estranhos para amperagem. Talvez eu simplesmente não esteja olhando no lugar certo. Quem sabe ... ymmv.
Rinogo 30/08
11

Isso não atende aos requisitos da linha de comando, mas tente o iStat Menus 3 . Ele fornece leituras sobre praticamente todos os sensores da sua máquina (que para mim inclui watts CA / CC, watts CPU e watts GPU). Tenho certeza de que não é 100% preciso, mas foi mais do que preciso ao ajustar minha máquina para funcionar dentro dos limites limitados da minha bateria da APC.

Tudo isso dito, minha máquina é um iMac 2010, portanto, dependendo da sua máquina, ela pode ou não funcionar. Além disso, não vejo leituras de energia especificamente para o HDD (que deve ser mínimo), ou qualquer coisa específica para a tela (que disse, reduzir o brilho do LCD reduz bastante a potência, por isso é contada no total).

Vale a pena tentar pelo menos. IIRC existe uma versão gratuita, mas valeu tanto a pena que fui em frente e paguei por ela. Sou um pouco maníaco por controle, por isso tenho memória, temperatura, atividade de disco, atividade de rede etc. na minha barra de menus e adoro isso. :-)

Kerri Shotts
fonte
2
Por excelência! Agora a pergunta é: como é que iStat Menus obter as leituras dos sensores ...
Jari Keinänen
8

Existe um aplicativo pago chamado Hardware Monitor que fornece acesso a praticamente todos os sensores disponíveis em um mac, incluindo tensão, corrente e potência, que eu acredito que você esteja procurando. Ele inclui um utilitário de linha de comando para ler essas informações.

Eu usei isso para rastrear uma placa lógica defeituosa em um iMac no ano passado e achei que valeu os € 7. Inclui a capacidade de enviar os valores do sensor para um CSV, o que pode ser útil para registro e exibição visual dos dados. Não tenho certeza se ele faz leituras de PSU (como não tenho o aplicativo na máquina em que estou no caixa eletrônico), mas ele atinge pci, slots, cpu e muitos outros.

Você pode encontrar o software aqui: http://www.bresink.com/osx/HardwareMonitor.html

Não estou associado a esta empresa, apenas achei a ferramenta muito útil no meu arsenal de diagnóstico.

Digitalchild
fonte
Lyken ganha o prêmio com esta resposta. Que peça incrível de software. Ferramenta de linha de comando, barra de menus e aplicativo completo. A menos que a própria fonte de alimentação seja monitorada em novos macs, ela não fornecerá uma classificação total de energia, mas isso certamente faz um ótimo trabalho acessando todos os dados disponíveis.
bmike
Desculpe pela atualização tardia, mas, @Lyken, seu +100 é bem merecido: hesitei em dar o +200 completo, pois o Hardware Monitor aparentemente não fornece potência à PSU como o iStat Menus 3; por algum motivo, o HWM lista os sensores de potência apenas por CPU A4 CPU High Sides e MXM Graphics Module. Ótimo aplicativo, no entanto, e eu teria premiado sua resposta rapidamente se alguma outra resposta de recompensa tivesse cumprido as regras automáticas de prêmios de meia recompensa . Como eu disse, 100 bem merecido.
Jari Keinänen
Sim, acredito que o HWM lê os sensores por modelo, por isso depende do que está disponível na sua versão. O iStat Menu 3 também leu a potência da PSU no seu modelo?
Digitalchild 29/06
11
Infelizmente Monitor de hardware anunciou EOL em 19 de Junho de 2017. bresink.com/osx/216202/eol.html
walterra
7

IANAEE (não sou engenheiro elétrico), mas, pelo que entendi, não é possível medir com precisão o consumo de energia de um computador por meio de software. A melhor solução é conectar o seu Mac a um dispositivo como um Kill-a-Watt

Se você está procurando uma solução com script - e um projeto interessante - aqui estão as instruções sobre como criar um sistema de monitoramento de potência sem fio ou um " Tweet-a-Watt ".

michaelmichael
fonte
7

Todos os dados no iStat são apenas de chaves no ioregistry. Você pode extrair um dump dele da linha de comando usando ioreg:

ioreg -w 0 -l

Serão muitos dados a serem analisados; você pode dividi-los de várias maneiras. Não acredito que os dados reais que você deseja sejam fornecidos no iMac, o sistema monitora a temperatura em vários locais, mas como não funciona com a bateria, é menos importante saber a corrente instantânea que está sendo puxada pelo sistema e, portanto, provavelmente não vale o custo de um sensor.

Louis Gerbarg
fonte
5

Não há sensores medidos na fonte de alimentação.

A placa lógica mede a temperatura em vários locais para controlar os sopradores e a CPU monitora a temperatura para reduzir a taxa de clock quando fica mais quente do que os sopradores podem esfriar.

Suponho que alguma tese de doutorado possa ser feita sobre a integração da velocidade do ventilador e vários sensores de temperatura para calcular o consumo de energia esperado. É possível obter um cálculo e, com alguma calibração, pode até ser bastante preciso.

Na realidade, uma vez que esses dados não são expostos ou gravados, você pode precisar medir externamente. Os contadores decentes de energia doméstica estão entre US $ 150 e US $ 300 w

Você pode alugar ou comprar uma unidade que mede a energia através da tomada e, em seguida, executa alguns testes para ver quanta energia o mac leva mais de uma hora em determinadas condições.

  • Fora
  • Dormir
  • Inativo
  • Várias cargas de CPU
  • CPU máxima, tudo funcionando

Em seguida, você pode correlacioná-las com o monitoramento de uso da CPU, que é trivial ao longo do tempo tope pode adicionar coisas.

Tudo depende do que você realmente deseja fazer com os dados, além de aprender como o hardware funciona e ter alguns gráficos interessantes.

bmike
fonte
2
+ você precisa adicionar mais itens à lista infinitamente . Provavelmente, no momento em que todas as condições foram calibradas, eu precisaria substituir o iMac atual :-D Talvez apenas alguns medidores W & kWh básicos externos fizessem o truque, se não houver medidores a bordo.
Jari Keinänen
2
:-) Fico feliz que você tenha humor. Minha experiência é que os macs consomem 20 a 25% menos do que as especificações publicadas pela Apple, mesmo sob testes rigorosos para obter tudo em potência máxima.
bmike
11
@bmike Eu não teria tanta certeza disso, o rMBP é conhecido por drenar a bateria quando suficientemente carregado na CPU + GPU devido ao adaptador de 85W fornecer corrente insuficiente.
9183 Steven Lu
11
@stevenlu Não ficaria surpreso se o hardware da era mais recente de 2013 for mais difícil do que a tecnologia da era de meados de 2010 que está sendo discutida aqui. Da mesma forma, o gerenciamento de energia no 10.8 é mais sofisticado do que o 10.6 era. Além disso - eles usam muito a bateria interna - mas não tanto do adaptador CA na minha experiência. Mesmo os novos modelos USB-C PD seguir esse padrão de consumo / Tamponada + consumo externo isqueiro interno pesado
bmike
3

Eu fiz um pequeno script baseado na saída system_profiler. Ele calcula a potência usando a tensão e os ampères indicados.

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:'
}

Produz algo como:

$ powerstat
    Battery Information:

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

    AC Charger Information:

      Connected: No
      Charging: No

Ao carregar:

$ powerstat
    Battery Information:

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

    AC Charger Information:

      Connected: Yes
      Wattage (W): 60
      Charging: No
serialx
fonte
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
fonte
Na verdade, respondi à pergunta errada, desculpe ... Eu vim aqui como resultado de uma pesquisa da tensão e corrente de carga de um carregador USB-C ... e como não o encontrei, descobri o que foi dito acima e postei aqui. Mas não é exatamente o que você queria; você provavelmente poderia combinar os dados de entrada DC (este) com os dados da bateria (outras respostas) para inferir os dados de uso.
Luyer
2
system_profiler SPPowerDataType | grep Wattage

Faz o truque para mim no MacBook Pro (15 polegadas, 2016)!

shivsta
fonte
2
Isso informa a potência do adaptador CA, não o consumo atual de energia. Para o contexto:system_profiler SPPowerDataType | grep -C4 Wattage
Edward Anderson
2

Aqui está um ioregcomando que imprime a maioria das informações de energia sem 'grep'. Ele retorna muito mais rápido que o system_profiler na minha máquina, então provavelmente é mais adequado para ser script ou executar em segundo plano.

ioreg -w 0 -f -r -c AppleSmartBattery
gordinho
fonte
1

Estou em um MacBook 10.6.8 e ioreg -l | grep LegacyBatteryInfotrabalhei para mim.

Eu tentei anteriormente

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

e retornou 0.

Existe uma solução da biblioteca Dev da Apple?

Por que não olhar para fora no medidor de energia? Registre suas leituras e, em seguida, correlacione-se a um% constante e comum de uso da CPU. Então você pode obter uma aproximação.

Rick Beacham
fonte
0

Eu acho que para 10.7 isso deve funcionar no terminal:

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

rolandw
fonte
2
ioreg -l | grep LegacyBatteryInfonão retorna nada para mim no iMac.
Jari Keinänen