Come recuperare le informazioni sulla potenza attuale su OS X?

20

C'è un modo per recuperare le attuali informazioni sull'utilizzo di watt su OS X Snow Leopard? Sto utilizzando l'iMac della metà del 2010, quindi non sto cercando solo app relative alla batteria.

OS X controlla anche l'utilizzo di energia? Devo utilizzare un lettore esterno tra il cavo di alimentazione e la presa?

Sono la maggior parte interessata a soluzioni basate su comando / mele per una registrazione e un'amplificazione più convenienti statistiche, ma sono aperto alle alternative.

Entrambi (@ bmike 's & @ michaelmichael 's) le risposte sono senza dubbio corrette. La meta-domanda qui era che ci sono già sensori / lettori sul PSU, che funzionerebbero in qualche modo come funziona "kill-a-watt". Sento che la risposta è "no".

Lo so, probabilmente è solo un sogno bagnato, ma un watt meter a bordo sarebbe l'ideale per il computer per gridare: "Guarda come sono ecologico, usando solo questi watt!"

Ah!

@ Kerri Shotts 'suggerito iStat Menu 3 fa ottiene le letture della potenza da qualche sensore , insieme alle statistiche di volt e amp. Quindi ci sono i contatori, ma come potrei accedervi a livello di programmazione?

Bounty! Verrà fornito per solide soluzioni di lettura del sensore da riga di comando o per consigliare un software di terze parti eccezionalmente buono (come uno con strumenti di dati statistici e storici al minimo ).

Solo per informare: i menzionati iStat Menus 3 elenca i seguenti sensori relativi all'alimentazione:

  • Sensori di tensione (volt)
    • AC / DC
    • AC / DC
    • Shunt AC / DC
    • CPU
    • CPU 1.8 V S0
    • CPU CTT
    • Modulo grafico
    • Memory
  • Sensori di corrente (Amp)
    • AC / DC
    • CPU
    • CPU VTT
    • Modulo grafico
  • Sensori di potenza (Watt)
    • AC / DC
    • CPU
    • Modulo grafico

Indica "sensori", ma potrebbero essere calcolati come commentati da @msanford. Come posso mettere le mani su quei dati a livello di programmazione?

    
posta Jari Keinänen 17.06.2011 - 14:00
fonte

11 risposte

14

system_profiler SPPowerDataType sembra fornire le informazioni più pertinenti. Sui laptop riporta tensione e amperaggio che possono darti il consumo energetico (mVolts × mAmperes × 10 ^ -6 = Watt). Segnala anche Wattage, ma in realtà è un pezzo di metadati riportato dall'alimentatore di Apple, gli adattatori di alimentazione di terze parti possono mostrare spazi vuoti qui. Dal momento che i desktop non hanno batterie ricaricabili, non c'è modo di calcolare il consumo energetico misurando la carica e scaricando la batteria.

Ma aspetta, c'è ancora speranza! Apple pubblica un sacco di codice sorgente e googling per Wattaggio oppure Power + mV suggerisce che alcune estensioni del kernel possono essere interrogato sul consumo di energia. Sfortunatamente, al momento non riesco a trovare uno script funzionante, ma sembra possibile.

    
risposta data 26.06.2011 - 02:14
fonte
11

Questo non soddisfa i requisiti della riga di comando, ma prova a iStat Menu 3 . Ti dà le letture su quasi tutti i sensori della tua macchina (che per me include AC / DC Watts, CPU Watts e GPU Watts). Sono sicuro che non è accurato al 100%, ma è stato più che accurato nell'ottimizzare la mia macchina per funzionare entro i limiti limitati della mia batteria APC.

Tutto ciò che ho detto, la mia macchina è un iMac del 2010, quindi, a seconda della macchina, potrebbe funzionare o meno. Inoltre, non vedo le letture di alimentazione specifiche per l'HDD (che dovrebbe essere minimo), o qualsiasi cosa specifica per il display (detto questo, riducendo la luminosità dell'LCD si riduce un po 'la potenza, quindi viene contato in totale). / p>

Vale la pena provare almeno. IIRC c'è una versione gratuita, ma ne è valsa la pena che sono andato avanti e pagato per questo. Sono un po 'maniaco del controllo, quindi ho memoria, temperatura, attività del disco, attività di rete, ecc. Nella mia barra dei menu e lo adoro. : -)

    
risposta data 17.06.2011 - 20:46
fonte
8

Esiste un'applicazione a pagamento denominata Hardware Monitor che fornisce l'accesso a quasi tutti i sensori disponibili su un mac, tra cui tensione, corrente e potenza, che ritengo si stia cercando. Include un'utilità della riga di comando per leggere queste informazioni.

L'ho usato per rintracciare una logicboard difettosa in un iMac l'anno scorso e l'ho trovato del valore di € 7. Include la possibilità di inviare i valori del sensore a un CSV che può essere utile per la registrazione e la visualizzazione dei dati. Non sono sicuro che faccia le letture del PSU (visto che non ho l'app sulla macchina su ATM) ma colpisce pci, slots, cpu e molto altro.

Puoi trovare il software qui: link

Non sono affatto associato a questa azienda, ho trovato lo strumento molto utile nel mio arsenale di diagnostica.

    
risposta data 21.06.2011 - 02:19
fonte
7

IANAEE (Non sono un ingegnere elettrotecnico), ma come ho capito non è possibile misurare con precisione il consumo di energia del computer tramite software. La soluzione migliore è connettere il tuo Mac a un dispositivo come Kill-a-Watt

Se stai cercando una soluzione con script e un progetto interessante - ecco le istruzioni per creare un sistema di monitoraggio del wattaggio wireless o un " Tweet-a-Watt ".

    
risposta data 17.06.2011 - 17:21
fonte
7

Tutti i dati in iStat provengono solo da chiavi nell'ioregistry. Puoi estrarne un dump dalla riga di comando usando ioreg:

ioreg -w 0 -l

Ci saranno molti dati da esaminare, puoi ritagliarlo in vari modi. Non credo che i dati effettivi desiderati siano forniti su iMac, il sistema monitora la temperatura in un numero di punti, ma poiché non funziona su una batteria è meno importante conoscere la corrente istantanea che viene tirata dal sistema, e quindi probabilmente non vale il costo di un sensore.

    
risposta data 22.06.2011 - 10:46
fonte
5

Nessun sensore misurato è presente nell'alimentatore.

La scheda logica misura la temperatura in diversi punti per controllare i ventilatori e la CPU monitora la temperatura per ridurre la frequenza di clock quando diventa più calda di quanto i soffiatori possano raffreddarla.

Suppongo che alcune tesi di dottorato potrebbero essere fatte per integrare la velocità della ventola e vari sensori di temperatura per calcolare un consumo energetico atteso. È possibile ottenere un calcolo e, con alcune calibrazioni, potrebbe anche essere abbastanza accurato.

In realtà dal momento che i dati non sono esposti o registrati, potrebbe essere necessario misurare esternamente. Contatori di energia domestica decente sono compresi tra $ 150 e $ 300 w

Potresti noleggiare o acquistare un'unità che misura la potenza attraverso la presa e quindi eseguire alcuni test per vedere quanta potenza il mac impiega più di un'ora in determinate condizioni.

  • Disattiva
  • Il sonno
  • Idle
  • Carichi della CPU vari
  • CPU massima, tutto in corso

Quindi potresti correlarli con il monitoraggio dell'utilizzo della CPU che è banale nel tempo usando top ed essere in grado di aggiungere cose.

Dipende tutto da cosa vuoi veramente fare con i dati se non imparare come funziona l'hardware e avere alcuni grafici interessanti.

    
risposta data 17.06.2011 - 17:27
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;
}
    
risposta data 12.05.2017 - 07:11
fonte
2
system_profiler SPPowerDataType | grep Wattage

Il trucco per me su MacBook Pro (15 pollici, 2016)!

    
risposta data 12.09.2017 - 12:53
fonte
2

Ho creato un piccolo script basato sull'output system_profiler. Calcola il watt usando la tensione e gli ampli indicati.

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

Emette qualcosa come:

$ powerstat
    Battery Information:

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

    AC Charger Information:

      Connected: No
      Charging: No

Durante la ricarica:

$ powerstat
    Battery Information:

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

    AC Charger Information:

      Connected: Yes
      Wattage (W): 60
      Charging: No
    
risposta data 26.04.2018 - 15:34
fonte
1

Sono su un MacBook 10.6.8 e ioreg -l | grep LegacyBatteryInfo ha funzionato per me.

Ho già provato

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

e ha restituito 0.

Esiste una soluzione della libreria Dev di Apple?

Perché non guardare fuori sul misuratore di potenza? Registrare le letture e quindi correlarle a un utilizzo costante e comune della CPU%. Quindi puoi ottenere un'approssimazione.

    
risposta data 09.10.2012 - 21:50
fonte
0

Penso che per 10.7 questo dovrebbe funzionare dal terminale:

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

    
risposta data 19.03.2012 - 19:50
fonte

Leggi altre domande sui tag