Comment récupérer les informations de puissance actuelles sur OS X?

21

Existe-t-il un moyen de récupérer les informations d'utilisation en watts actuelles sur OS X Snow Leopard? J'utilise iMac mi-2010, donc je ne recherche pas uniquement des applications liées à la batterie.

OS X surveille-t-il même la consommation d'énergie? Dois-je utiliser un lecteur externe entre le cordon d'alimentation et la prise?

Je suis plus intéressé par les solutions basées sur la ligne de commande / AppleScript pour une journalisation et des statistiques plus pratiques, mais je suis ouvert à des alternatives.


Les deux réponses (@ bmike et @ michaelmichael ) sont sans aucun doute correctes. La méta-question ici était qu'il y avait déjà des capteurs / lecteurs sur la PSU, qui fonctionneraient un peu comme la façon dont "kill-a-watt" fonctionne. Je sens que la réponse est "non".

Je sais, ce n'est probablement qu'un rêve mouillé, mais un wattmètre à bord serait idéal pour que l'ordinateur crie: "Regardez comme je suis respectueux de l'environnement; en utilisant seulement ces watts!"


Ah!

@ Kerri Shotts 'suggéré iStat Menus 3 do obtenir les lectures de puissance en watts de certains capteurs , ainsi que des statistiques de volts et ampères. Les compteurs sont donc là, mais comment y accéder par programmation?


Prime! Sera donné pour la solution de lecture du capteur de ligne de commande solide ou de recommander exceptionnellement bon 3 ème logiciel de partie (comme un des outils de données statistiques et historiques au minimum).

Juste pour informer: les menus iStat 3 susmentionnés répertorient les capteurs liés à l'alimentation suivants:

  • Capteurs de tension (Volts)
    • AC DC
    • AC DC
    • Shunt AC / DC
    • CPU
    • CPU 1.8V S0
    • CPU CTT
    • Module graphique
    • Mémoire
  • Capteurs de courant (ampères)
    • AC DC
    • CPU
    • CPU VTT
    • Module graphique
  • Capteurs de puissance (watts)
    • AC DC
    • CPU
    • Module graphique

Il indique des "capteurs", mais ils peuvent être calculés comme l'a commenté @msanford. Comment puis-je mettre la main sur ces données par programme?

Jari Keinänen
la source
Les Mac sont très respectueux de l'environnement et les tests d'une unité sont effectués par Apple ainsi que des laboratoires avec des bancs d'essai calibrés. Heureusement, nous pouvons utiliser les paramètres pour maximiser les mac que nous avons pendant qu'ils proposent demain des modèles plus efficaces.
bmike
1
Le bloc d'alimentation n'indique-t-il pas sa charge actuelle (car je suis presque sûr qu'il signale sa tension)? Si tel est le cas, P = IV ou Watts = courant (en ampères) • Tension (en volts). La puissance n'est pas quelque chose qui est directement mesuré mais calculé à partir du courant et de la tension, donc je ne m'attendrais pas à ce qu'un capteur rapporte des watts s'il existe déjà des rapports sur la tension et le courant. Si cela aide…
msanford
@msanford, cela pourrait aider - si quelqu'un nous dit comment lire les lectures de l'alimentation.
Jari Keinänen

Réponses:

21

system_profiler SPPowerDataTypesemble fournir les informations les plus pertinentes. Sur les ordinateurs portables, il signale la tension et l'ampérage qui peuvent vous donner la consommation d'énergie (mVolts × mAmperes × 10 ^ -6 = Watts). Il indique également la puissance, mais il s'agit en fait d'un élément de métadonnées signalé par l'adaptateur secteur d'Apple, les adaptateurs d'alimentation tiers peuvent afficher des blancs ici. Étant donné que les ordinateurs de bureau n'ont pas de batteries rechargeables, il n'y a aucun moyen de calculer la consommation d'énergie en mesurant la charge et la décharge de la batterie.

Mais attendez, il y a encore de l'espoir! Apple publie beaucoup de code source, et googler pour Wattage ou Power + mV laisse entendre que certaines extensions du noyau peuvent être interrogées sur la consommation d'énergie. Malheureusement, je ne peux pas trouver de script de travail pour le moment, mais cela semble possible.

défilé
la source
1
Je vois que c'est l'interface de ligne de commande pour le System Profiler.app. Malheureusement, sur les ordinateurs de bureau, il affiche simplement les paramètres de EnergySaver.prefpaneet si un onduleur est installé.
Jari Keinänen
Sur mon rMBP 2015 15 ", l'intensité et la tension de la section Informations sur la batterie sont plus ou moins constantes, du moins par rapport à la valeur" Système total "d'iStat, qui se met à jour toutes les secondes. J'ai également remarqué que l'intensité était 0.
Johannes Bittner
Aime ça; court et simple. Rien à télécharger ou à installer. Si les gens sont intéressés, je (ou quelqu'un d'autre) pourrais facilement créer un script / commande pour extraire les champs nécessaires de cette commande et cracher la puissance réelle utilisée.
rinogo
Mise à jour: La commande spécifiée a fonctionné pour moi lorsque j'en ai eu besoin la première fois, mais quand j'en ai eu besoin à nouveau, cela n'a pas fonctionné. Il affiche des valeurs étranges pour l'ampérage. Peut-être que je ne cherche tout simplement pas au bon endroit. Qui sait ... ymmv.
rinogo
11

Cela ne satisfait pas aux exigences de la ligne de commande, mais essayez les menus iStat 3 . Il vous donne des lectures sur à peu près tous les capteurs de votre machine (ce qui comprend pour moi les watts AC / DC, les watts CPU et les watts GPU). Je suis sûr qu'il n'est pas précis à 100%, mais il était plus que suffisamment précis pour régler ma machine pour fonctionner dans les limites des contraintes de ma batterie APC.

Cela dit, ma machine est un iMac 2010, donc selon votre machine, elle peut ou non fonctionner. De plus, je ne vois pas de lectures de puissance spécifiquement pour le disque dur (qui devrait être minime), ni quoi que ce soit de spécifique à l'écran (cela dit, la réduction de la luminosité de l'écran LCD réduit considérablement la puissance, donc elle est comptée au total).

Ça vaut le coup au moins. IIRC il y a une version gratuite, mais cela en valait tellement la peine que j'y suis allé et payé. Je suis un peu un monstre de contrôle, j'ai donc de la mémoire, de la température, de l'activité du disque, de l'activité réseau, etc. dans ma barre de menu et j'adore ça. :-)

Kerri Shotts
la source
2
Par excellence! Maintenant, la question est: comment les menus iStat obtiennent-ils les lectures du capteur…
Jari Keinänen
8

Il existe une application payante appelée Hardware Monitor qui donne accès à à peu près tous les capteurs disponibles sur un Mac, y compris la tension, le courant et la puissance que je crois que vous recherchez. Il comprend un utilitaire de ligne de commande pour lire ces informations.

J'ai utilisé cela pour retrouver une carte mère défectueuse dans un iMac l'année dernière et j'ai trouvé que cela valait 7 €. Il inclut la possibilité de sortir les valeurs du capteur vers un CSV, ce qui peut être utile pour la journalisation et l'affichage visuel des données. Je ne sais pas s'il fait des lectures PSU (car je n'ai pas l'application sur la machine, je suis sur atm) mais il frappe pci, slots, cpu et beaucoup d'autres.

Vous pouvez trouver le logiciel ici: http://www.bresink.com/osx/HardwareMonitor.html

Je ne suis pas du tout associé à cette entreprise, je viens de trouver l'outil très utile dans mon arsenal de diagnostic.

Digitalchild
la source
Lyken remporte le prix avec cette réponse. Quel logiciel étonnant. Outil de ligne de commande, barre de menus et application complète. À moins que l'alimentation elle-même ne soit surveillée dans les nouveaux macs, elle ne donnera pas une puissance nominale totale, mais cela fait un excellent travail pour accéder à toutes les données disponibles.
bmike
Désolé pour la mise à jour tardive, mais @Lyken, votre +100 est bien mérité: j'ai hésité à donner le plein +200 car le moniteur matériel ne donnerait apparemment pas la puissance du bloc d'alimentation comme le font les menus iStat 3; pour une raison quelconque, le HWM répertorie les capteurs de puissance uniquement pour CPU A, 4 CPU High Sides et MXM Graphics Module. Grande application et pourtant je n'avait reçu votre réponse dans un jeu d' enfant si une autre réponse de primes aurait satisfait aux règles automatiques demi-prix-de primes . Comme je l'ai dit, +100 bien mérité.
Jari Keinänen
Oui, je crois que HWM lit les capteurs par modèle, cela dépend donc de ce qui est disponible sur votre version. Le menu iStat 3 a-t-il également lu la puissance du bloc d'alimentation de votre modèle?
Digitalchild
1
Malheureusement, Hardware Monitor a annoncé l'EOL le 19 juin 2017. bresink.com/osx/216202/eol.html
walterra
7

IANAEE (je ne suis pas ingénieur électricien), mais si je comprends bien, il n'est pas possible de mesurer avec précision la consommation électrique d'un ordinateur via un logiciel. La meilleure solution est de connecter votre Mac à un appareil comme un Kill-a-Watt

Si vous cherchez une solution scriptable - et un projet intéressant - voici des instructions sur la création d'un système de surveillance de puissance sans fil, ou un " Tweet-a-Watt ".

michaelmichael
la source
7

Toutes les données dans iStat proviennent uniquement de clés de l'ioregistry. Vous pouvez en extraire un vidage depuis la ligne de commande à l'aide d'ioreg:

ioreg -w 0 -l

Cela va être beaucoup de données à parcourir, vous pouvez les découper de différentes manières. Je ne crois pas que les données réelles que vous souhaitez soient fournies sur iMac, le système surveille la température à plusieurs endroits, mais comme il ne fonctionne pas sur batterie, il est moins important de connaître le courant instantané tiré par le système, et donc ne vaut probablement pas le coût d'un capteur.

Louis Gerbarg
la source
5

Aucun capteur mesuré n'est présent dans l'alimentation.

La carte mère mesure la température à plusieurs endroits pour contrôler les ventilateurs et le CPU surveille la température pour réduire la fréquence d'horloge lorsqu'elle devient plus chaude que les ventilateurs ne peuvent la refroidir.

Je suppose qu'une thèse de doctorat pourrait être faite sur l'intégration de la vitesse du ventilateur et de divers capteurs de température pour calculer une consommation électrique attendue. Il est possible d'obtenir un calcul et avec un certain étalonnage, il pourrait même être assez précis.

En réalité, puisque ces données ne sont ni exposées ni enregistrées, vous devrez peut-être mesurer en externe. Les compteurs d'énergie domestique décents se situent entre 150 $ et 300 $ w

Vous pouvez louer ou acheter une unité qui mesure la puissance via la prise, puis exécuter un test pour voir la puissance consommée par le mac sur une heure dans certaines conditions.

  • De
  • Sommeil
  • Tourner au ralenti
  • Diverses charges CPU
  • CPU maximum, tout se passe

Ensuite, vous pouvez les corréler avec la surveillance de l'utilisation du processeur qui est triviale au fil du temps topet être en mesure d'ajouter des choses.

Tout dépend de ce que vous voulez vraiment faire avec les données, à part apprendre comment fonctionne le matériel et avoir des graphiques sympas.

bmike
la source
2
+ vous devez ajouter à l' infini plus de choses à la liste. Probablement au moment où j'aurais calibré toutes les conditions, je devrais remplacer l'iMac actuel :-D Peut-être que seuls quelques compteurs W et kWh de base externes feraient l'affaire, s'il n'y a pas de compteurs à bord.
Jari Keinänen
2
:-) Heureux que vous ayez l'humour. D'après mon expérience, les macs consomment 20 à 25% de moins que les spécifications publiées par Apple, même sous des tests rigoureux pour que tout soit dessiné à la puissance maximale.
bmike
1
@bmike Je n'en serais pas si sûr, le rMBP est connu pour décharger la batterie lorsqu'il est suffisamment chargé sur le CPU + GPU en raison de l'adaptateur 85W fournissant un courant insuffisant.
Steven Lu
1
@stevenlu Je ne serais pas surpris si le dernier matériel de l'ère 2013 pousse plus fort que la technologie de l'ère du milieu de 2010 qui est discutée ici. De même, la gestion de l'alimentation sur 10.8 est plus sophistiquée que sur 10.6. En outre - ils tirent dur sur la batterie interne - tout simplement pas tellement de l'adaptateur secteur dans mon expérience. Même les nouveaux modèles USB-C PD suivent ce modèle de forte consommation interne / tamponné + consommation externe plus légère
bmike
3

J'ai créé un petit script basé sur la sortie de system_profiler. Il calcule la puissance en utilisant la tension et les ampères donnés.

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

Produit quelque chose comme:

$ powerstat
    Battery Information:

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

    AC Charger Information:

      Connected: No
      Charging: No

Lors de la charge:

$ powerstat
    Battery Information:

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

    AC Charger Information:

      Connected: Yes
      Wattage (W): 60
      Charging: No
serialx
la source
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
la source
En fait, j'ai répondu à la mauvaise question, désolé ... Je suis venu ici à la suite d'une recherche de la tension et du courant de charge d'un chargeur USB-C ... et comme je ne l'ai pas trouvé, j'ai compris ce qui précède et j'ai posté c'est ici. Mais ce n'est pas vraiment ce que vous vouliez; vous pourriez probablement combiner les données d'entrée CC (ceci) avec les données de la batterie (autres réponses) pour déduire les données d'utilisation.
Luyer
2
system_profiler SPPowerDataType | grep Wattage

Fait l'affaire pour moi sur MacBook Pro (15 pouces, 2016)!

shivsta
la source
2
Cela indique la puissance de l'adaptateur secteur et non la consommation électrique actuelle. Pour le contexte:system_profiler SPPowerDataType | grep -C4 Wattage
Edward Anderson
2

Voici une ioregcommande qui imprime la plupart des informations d'alimentation sans «grep». Il retourne beaucoup plus rapidement que system_profiler sur ma machine, donc probablement plus adapté pour être scripté ou exécuté en arrière-plan.

ioreg -w 0 -f -r -c AppleSmartBattery
joufflu
la source
1

Je suis sur un MacBook 10.6.8 et j'ai ioreg -l | grep LegacyBatteryInfotravaillé pour moi.

J'ai déjà essayé

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

et il a renvoyé 0.

Existe-t-il une solution de la bibliothèque Dev d'Apple?

Pourquoi ne pas regarder à l'extérieur sur le wattmètre? Enregistrez vos lectures, puis corrélez-les à un% d'utilisation CPU constant et commun. Ensuite, vous pouvez obtenir une approximation.

Rick Beacham
la source
0

Je pense que pour 10.7 cela devrait fonctionner depuis le terminal:

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

rolandw
la source
2
ioreg -l | grep LegacyBatteryInfone renvoie rien pour moi sur iMac.
Jari Keinänen