Jak pobrać aktualne informacje o mocy w systemie OS X?

21

Czy istnieje sposób na pobranie bieżących informacji o zużyciu wat w systemie OS X Snow Leopard? Używam komputera iMac z połowy 2010 roku, więc nie szukam tylko aplikacji związanych z baterią.

Czy OS X monitoruje nawet zużycie energii? Czy muszę używać zewnętrznego czytnika między kablem zasilającym a gniazdkiem?

Najbardziej interesują mnie rozwiązania oparte na linii poleceń / applecript dla wygodniejszego logowania i statystyk, ale jestem otwarty na alternatywy.


Obie odpowiedzi (@ bmike i @ michaelmichael ) są bez wątpienia poprawne. Meta-pytanie tutaj było to, że jest jakieś czujniki / czytelnicy już na PSU, które działają trochę jak sposób „kill-a-watowych” działa. Wyczuwam, że odpowiedź brzmi „nie”.

Wiem, to prawdopodobnie tylko mokry sen, ale watomierz na pokładzie byłby idealny, aby komputer krzyknął: „Zobacz, jaki jestem ekologiczny; używając tylko tych watów!”


Ach!

@ Kerri Shotts "zasugerował Istat menu 3 Do uzyskania odczytów małej mocy od jakiegoś czujnika , wraz z wolt i wzmacniaczy statystykach. Więc liczniki są, ale jak mogę uzyskać do nich programowy dostęp?


Hojność! Zostaną podane do sporządzania roztworu stałego wiersza polecenia czujnik odczytu lub polecając wyjątkowo dobry 3 rd oprogramowania firm (jak jeden z narzędzi statystycznych i historycznych danych na minimum).

Wystarczy poinformować: wyżej wymienione menu iStat 3 zawiera następujące czujniki związane z zasilaniem:

  • Czujniki napięcia (wolty)
    • AC / DC
    • AC / DC
    • Bocznik AC / DC
    • procesor
    • CPU 1,8 V S0
    • CPU CTT
    • Moduł graficzny
    • Pamięć
  • Czujniki prądu (wzmacniacze)
    • AC / DC
    • procesor
    • CPU VTT
    • Moduł graficzny
  • Czujniki mocy (waty)
    • AC / DC
    • procesor
    • Moduł graficzny

Podaje „czujniki”, ale można je obliczyć jak skomentował @msanford. Jak mogę uzyskać te dane programowo?

Jari Keinänen
źródło
Komputery Mac są bardzo przyjazne dla środowiska, a testy urządzenia przeprowadzane są przez Apple, a także laboratoria ze skalibrowanymi stanowiskami testowymi. Na szczęście możemy użyć ustawień, aby zmaksymalizować komputery Mac, gdy jutro wymyślą bardziej wydajne modele.
bmike
1
Czy zasilacz nie zgłasza aktualnego obciążenia (bo jestem całkiem pewien, że zgłasza napięcie)? Jeśli tak, P = IV lub W = prąd (w amperach) • Napięcie (w woltach). Moc nie jest czymś bezpośrednio mierzonym, ale obliczanym na podstawie prądu i napięcia, więc nie spodziewałbym się, że czujnik będzie raportował waty, jeśli są już raporty o napięciu i prądzie. Jeśli to pomoże…
msanford,
@msanford może to pomóc - jeśli ktoś powie nam, jak odczytać odczyty z zasilacza.
Jari Keinänen,

Odpowiedzi:

21

system_profiler SPPowerDataTypewydaje się dostarczać najistotniejszych informacji. W laptopach zgłasza napięcie i natężenie, które mogą dać ci zużycie energii (mVolts × mAmperes × 10 ^ -6 = Watts). Podaje również moc, ale tak naprawdę jest to metadane zgłaszane przez zasilacz firmy Apple, zasilacze innych firm mogą tutaj wyświetlać puste miejsca. Ponieważ komputery stacjonarne nie mają akumulatorów, nie można obliczyć zużycia energii poprzez pomiar ładowania i rozładowywania akumulatora.

Ale czekaj, wciąż jest nadzieja! Apple publikuje dużo kodu źródłowego, a wyszukiwanie w Wattage lub Power + mV wskazuje, że niektóre rozszerzenia jądra można zapytać o zużycie energii. Niestety nie mogę teraz wymyślić działającego skryptu, ale wydaje się to możliwe.

marsz
źródło
1
Widzę, że jest to interfejs wiersza polecenia dla System Profiler.app. Niestety na komputerach pokazuje tylko ustawienia od EnergySaver.prefpanei czy zainstalowany jest UPS.
Jari Keinänen
Na moim rMBP 2015 15 ”Natężenie i napięcie z sekcji Informacje o akumulatorze są mniej więcej stałe, przynajmniej w porównaniu do wartości„ System total ”z iStat, która aktualizuje się co sekundę. Zauważyłem też, że Amperage jest 0.
Johannes Bittner
Kocham to; krótki i prosty. Nic do pobrania ani zainstalowania. Jeśli ludzie są zainteresowani, ja (lub ktoś inny) mogę łatwo poderwać skrypt / polecenie, aby wyciągnąć niezbędne pola z tego polecenia i wypluć rzeczywistą używaną moc.
rinogo
Aktualizacja: Określone polecenie działało dla mnie, gdy potrzebowałem go po raz pierwszy, ale kiedy potrzebowałem go ponownie, nie działało. Wyświetla dziwne wartości natężenia. Może po prostu nie wyglądam we właściwym miejscu. Kto wie ... ymmv.
rinogo
11

To nie spełnia wymagań wiersza poleceń, ale spróbuj iStat Menu 3 . Daje odczyty prawie każdego czujnika w twoim komputerze (który dla mnie obejmuje waty AC / DC, waty procesora i waty GPU). Jestem pewien, że nie jest w 100% dokładny, ale był wystarczająco dokładny w dostrojeniu mojej maszyny, aby działała w ograniczonych ograniczeniach mojej baterii APC.

To powiedziawszy, moja maszyna to iMac z 2010 roku, więc w zależności od komputera może, ale nie musi, działać. Ponadto nie widzę odczytów mocy specjalnie dla dysku twardego (który powinien być minimalny) ani czegokolwiek specyficznego dla wyświetlacza (co powiedziawszy, zmniejszenie jasności ekranu LCD nieco zmniejsza moc, więc jest liczone łącznie).

Warto spróbować przynajmniej. IIRC jest dostępna darmowa wersja, ale było tak warto, że poszedłem dalej i zapłaciłem za nią. Jestem trochę maniakiem sterowania, więc mam pasek pamięci, temperaturę, aktywność dysku, aktywność sieci itp. W moim pasku narzędzi i uwielbiam to. :-)

Kerri Shotts
źródło
2
Par excellence! Teraz pytanie brzmi: w jaki sposób Menu iStat uzyskuje odczyty czujników…
Jari Keinänen,
8

Istnieje płatna aplikacja o nazwie Hardware Monitor, która zapewnia dostęp do niemal każdego czujnika dostępnego na komputerze Mac, w tym napięcia, prądu i mocy, które, jak sądzę, szukasz. Zawiera narzędzie wiersza polecenia do odczytu tych informacji.

Użyłem tego do wyśledzenia wadliwego logika na iMacu w zeszłym roku i uznałem, że jest wart 7 €. Obejmuje to możliwość wysyłania wartości czujnika do pliku CSV, co może być pomocne w rejestrowaniu i wizualnym wyświetlaniu danych. Nie jestem pewien, czy to robi odczyty PSU (ponieważ nie mam aplikacji na komputerze, jestem na bankomacie), ale uderza pci, sloty, procesor i wiele innych.

Oprogramowanie można znaleźć tutaj: http://www.bresink.com/osx/HardwareMonitor.html

W ogóle nie jestem związany z tą firmą, właśnie znalazłem narzędzie, które jest bardzo przydatne w moim arsenale diagnostycznym.

Digitalchild
źródło
Lyken wygrywa nagrodę dzięki tej odpowiedzi. Co za niesamowite oprogramowanie. Narzędzie wiersza polecenia, pasek menu i pełna aplikacja. O ile sam zasilacz nie jest monitorowany w nowych komputerach Mac, nie da całkowitej mocy znamionowej, ale z pewnością świetnie się sprawdza, uzyskując dostęp do wszystkich dostępnych danych.
bmike
Przepraszam za późną aktualizację, ale, @Lyken, twój +100 jest zasłużony: wahałem się, czy dać pełny +200, ponieważ monitor sprzętu najwyraźniej nie da mocy zasilacza, jak robi to iStat Menus 3; z jakiegoś powodu HWM wymienia czujniki mocy tylko dla CPU A, 4 CPU High Sides i MXM Graphics Module. Świetna aplikacja mimo wszystko i ja będzie miał przyznany odpowiedź na wietrze czy jakaś inna laska odpowiedź będzie już spełnił automatycznych reguł pół-laska-nagrody . Jak powiedziałem, +100 zasłużyło.
Jari Keinänen
Tak, uważam, że HWM odczytuje czujniki dla poszczególnych modeli, więc zależy to od tego, co jest dostępne w twojej wersji. Czy iStat Menu 3 odczytał moc zasilacza również w twoim modelu?
Digitalchild
1
Niestety monitor sprzętu ogłosił EOL 19 czerwca 2017 r. Bresink.com/osx/216202/eol.html
walterra
7

IANAEE (nie jestem inżynierem elektrykiem), ale jak rozumiem, nie jest możliwe dokładne zmierzenie zużycia energii przez komputer za pomocą oprogramowania. Najlepszym rozwiązaniem jest podłączenie komputera Mac do urządzenia takiego jak Kill-a-Watt

Jeśli szukasz skryptu - i interesującego projektu - oto instrukcje tworzenia bezprzewodowego systemu monitorowania mocy lub „ Tweet-a-Watt ”.

michaelmichael
źródło
7

Wszystkie dane w iStat pochodzą tylko z kluczy w ioregistry. Możesz pobrać zrzut z wiersza poleceń, używając ioreg:

ioreg -w 0 -l

Będzie to dużo danych do przejrzenia, możesz je wyrzeźbić na różne sposoby. Nie wierzę, że rzeczywiste dane, które chcesz, są dostarczane na iMacu, system monitoruje temperaturę w wielu miejscach, ale ponieważ nie działa na baterii, mniej ważne jest, aby wiedzieć, chwilowy prąd pobierany przez system, a zatem prawdopodobnie nie warte kosztu czujnika.

Louis Gerbarg
źródło
5

W zasilaczu nie ma mierzonych czujników.

Płytka logiczna mierzy temperaturę w kilku miejscach w celu sterowania dmuchawami, a CPU monitoruje temperaturę w celu zmniejszenia częstotliwości taktowania, gdy robi się cieplej, niż dmuchawy mogą go ochłodzić.

Podejrzewam, że pewna praca doktorska może zostać wykonana na temat integracji prędkości wentylatora i różnych czujników temperatury w celu obliczenia oczekiwanego zużycia energii. Możliwe jest uzyskanie obliczenia, a przy pewnej kalibracji może być nawet dość dokładne.

W rzeczywistości, ponieważ dane te nie są ujawniane ani rejestrowane, konieczne może być dokonanie zewnętrznego pomiaru. Przyzwoite domowe liczniki energii wynoszą od 150 do 300 USD

Możesz wynająć lub kupić jednostkę, która mierzy moc przez gniazdko, a następnie przeprowadzić test, aby zobaczyć, ile mocy Mac zajmuje w ciągu godziny w określonych warunkach.

  • Poza
  • Spać
  • Bezczynny
  • Różne obciążenia procesora
  • Maksymalny procesor, wszystko idzie

Następnie możesz skorelować je z monitorowaniem zużycia procesora, które jest trywialne w czasie, topi można je dodawać.

Wszystko zależy od tego, co naprawdę chcesz zrobić z danymi, niż dowiedzieć się, jak działa sprzęt i mieć fajne wykresy.

bmike
źródło
2
+ musisz dodać ad infinitum więcej rzeczy do listy. Prawdopodobnie do czasu skalibrowania wszystkich warunków musiałbym wymienić obecny iMac :-D Może tylko niektóre zewnętrzne podstawowe mierniki W i kWh załatwiłyby sprawę, gdyby na pokładzie nie było mierników.
Jari Keinänen
2
:-) Cieszę się, że masz humor. Z mojego doświadczenia wynika, że ​​komputery Mac pobierają od 20 do 25% mniej niż specyfikacje opublikowane przez Apple, nawet podczas rygorystycznych testów, aby uzyskać wszystko przy maksymalnej mocy.
bmike
1
@mike Nie byłbym tego taki pewien, wiadomo, że rMBP wyczerpuje baterię, gdy jest wystarczająco obciążony CPU + GPU, ponieważ adapter 85 W zapewnia niewystarczający prąd.
Steven Lu
1
@stevenlu Nie zdziwiłbym się, gdyby najnowszy sprzęt z 2013 roku naciskał mocniej niż technologia z połowy 2010 roku, o której tu mowa. Podobnie zarządzanie energią w wersji 10.8 jest bardziej wyrafinowane niż w wersji 10.6. Ponadto - czerpią mocno z wewnętrznej baterii - po prostu nie tyle z zasilacza sieciowego z mojego doświadczenia. Nawet nowe modele USB-C PD podążają za takim wzorcem dużego zużycia wewnętrznego / buforowanego + mniejszego zużycia zewnętrznego
bmike
3

Zrobiłem mały skrypt oparty na danych wyjściowych system_profiler. Oblicza moc na podstawie podanego napięcia i amperów.

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

Wyprowadza coś takiego:

$ powerstat
    Battery Information:

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

    AC Charger Information:

      Connected: No
      Charging: No

Podczas ładowania:

$ powerstat
    Battery Information:

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

    AC Charger Information:

      Connected: Yes
      Wattage (W): 60
      Charging: No
serialx
źródło
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
źródło
Właściwie odpowiedziałem na złe pytanie, przepraszam ... Przybyłem tu w wyniku poszukiwania napięcia ładowania i prądu z ładowarki USB-C ... a ponieważ go nie znalazłem, wymyśliłem powyższe i opublikowałem to tutaj. Ale tak naprawdę to nie to, czego chciałeś; prawdopodobnie możesz połączyć dane wejściowe prądu stałego (to) z danymi akumulatora (inne odpowiedzi), aby wywnioskować dane użytkowania.
Luyer
2
system_profiler SPPowerDataType | grep Wattage

Czy podstęp dla mnie na MacBooku Pro (15-calowy, 2016)!

shivsta
źródło
2
Podaje to moc zasilacza sieciowego, a nie bieżące zużycie energii. Dla kontekstu:system_profiler SPPowerDataType | grep -C4 Wattage
Edward Anderson
2

Oto ioregpolecenie, które drukuje większość informacji o mocy bez „grep”. Zwraca znacznie szybciej niż system_profiler na moim komputerze, więc prawdopodobnie bardziej nadaje się do wykonywania skryptów lub uruchamiania w tle.

ioreg -w 0 -f -r -c AppleSmartBattery
pyzaty
źródło
1

Jestem na MacBooku 10.6.8 i ioreg -l | grep LegacyBatteryInfopracowałem dla mnie.

Wcześniej próbowałem

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

i zwrócił 0.

Czy istnieje rozwiązanie z biblioteki Dev Apple?

Dlaczego nie spojrzeć na miernik mocy na zewnątrz? Zapisz swoje odczyty, a następnie skoreluj ze stałym i wspólnym% zużyciem procesora. Następnie możesz uzyskać przybliżenie.

Rick Beacham
źródło
0

Myślę, że dla 10.7 powinno to działać z terminala:

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

rolandw
źródło
2
ioreg -l | grep LegacyBatteryInfonic nie zwraca mi na iMac.
Jari Keinänen