Как получить текущую информацию о мощности на OS X?

21

Есть ли способ получить текущую информацию об использовании ватт на OS X Snow Leopard? Я использую iMac в середине 2010 года, поэтому я не ищу только приложения, связанные с батареями.

OS X даже контролирует потребление энергии? Нужно ли использовать внешний ридер между шнуром питания и розеткой?

Меня больше всего интересуют решения на основе командной строки / appleScript для более удобной регистрации и статистики, но я открыт для альтернатив.


Оба (@ bmike 's & @ michaelmichael ) ответы, несомненно, являются правильными. Мета-вопрос здесь в том , что есть какие - либо датчики / читатели уже на БП, которые будут работать вроде как способ «убить-а-ваттных» работ. Я чувствую ответ на это «нет».

Я знаю, это, вероятно, просто мокрый сон, но ваттметр на борту был бы идеальным для компьютера, чтобы выкрикнуть: «Посмотрите, как я экологичен; использую только эти ватты!»


Ах!

@ Кэрри Shotts 'предложил Истат меню 3 делать получить показания потребляемой мощности от некоторого датчика , а также вольт и ампер статы. Итак, счетчики есть, но как я могу получить к ним программный доступ?


Bounty! Буду дано для твердого командной строки решения считывания датчика или рекомендовать исключительно хороший 3 - й программное обеспечение сторонних разработчиков (как один со статистическими и историческими инструментами данных на минимуме).

Для справки: в вышеупомянутых меню iStat 3 перечислены следующие датчики, связанные с питанием:

  • Датчики напряжения (вольт)
    • ПЕРЕМЕННЫЙ ТОК
    • ПЕРЕМЕННЫЙ ТОК
    • AC / DC Шунт
    • Процессор
    • CPU 1.8V S0
    • CPU CTT
    • Графический модуль
    • объем памяти
  • Датчики тока (амперы)
    • ПЕРЕМЕННЫЙ ТОК
    • Процессор
    • ЦП VTT
    • Графический модуль
  • Датчики мощности (Вт)
    • ПЕРЕМЕННЫЙ ТОК
    • Процессор
    • Графический модуль

Это действительно «датчики» состояния, но они могут быть рассчитаны, как прокомментировал @msanford. Как я могу получить эти данные программным путем?

Яри ​​Кейнянен
источник
Маки очень экологичны, и тестирование устройства проводится Apple, а также лабораториями с откалиброванными испытательными стендами. К счастью, мы можем использовать настройки, чтобы максимизировать имеющиеся у нас модели, в то время как завтра они придумают более эффективные модели.
bmike
1
Разве блок питания не сообщает о своей текущей нагрузке (я уверен, что он сообщает о своем напряжении)? Если это так, P = IV или Вт = ток (в амперах) • Напряжение (в вольтах). Ваттность - это не то, что измеряется напрямую, а рассчитывается по току и напряжению, поэтому я не ожидал, что датчик будет сообщать ватт, если уже есть отчеты о напряжении и токе. Если это поможет ...
MSanford
@msanford это может помочь - если кто-то скажет нам, как читать показания из блока питания.
Яри ​​Кейнянен

Ответы:

21

system_profiler SPPowerDataTypeкажется, предоставить наиболее актуальную информацию. На ноутбуках он сообщает о напряжении и силе тока, которые могут дать вам энергопотребление (мВольт × мАмпер × 10 ^ -6 = Вт). Он также сообщает о мощности, но на самом деле это часть метаданных, сообщаемых адаптером питания Apple. Сторонние адаптеры питания могут показывать здесь пробелы. Поскольку на настольных компьютерах нет перезаряжаемых аккумуляторов, невозможно рассчитать энергопотребление, измеряя зарядку и разрядку аккумулятора.

Но подождите, еще есть надежда! Apple публикует много исходного кода, и поиск в Google Wattage или Power + mV намекает на то, что определенные расширения ядра могут быть запрошены относительно энергопотребления. К сожалению, я не могу сейчас создать рабочий сценарий, но это кажется возможным.

marchdown
источник
1
Я вижу, что это интерфейс командной строки для System Profiler.app. К сожалению, на настольных компьютерах он просто показывает настройки от EnergySaver.prefpaneи если установлен ИБП.
Яри ​​Кейнянен
На моем rMBP 2015 15 "Amperage and Voltage из раздела Информация о батарее более или менее постоянна, по крайней мере, по сравнению со значением« System total »от iStat, которое обновляется каждую секунду. Кроме того, я заметил, что Amperage был 0.
Йоханнес Биттнер,
Люблю это; коротко и просто. Нечего скачивать или устанавливать. Если люди интересуются, я (или кто-то еще) мог бы легко создать сценарий / команду, чтобы извлечь необходимые поля из этой команды и выплеснуть фактическую потребляемую мощность.
Риного
Обновление: указанная команда работала для меня, когда я нуждался в ней в первый раз, но когда я нуждался в ней снова, она не работала. Он отображает странные значения силы тока. Может быть, я просто не смотрю в нужном месте. Кто знает ...
Риного
11

Это не удовлетворяет требованиям командной строки, но попробуйте iStat Menus 3 . Он дает вам показания практически на каждом датчике в вашей машине (который для меня включает в себя переменный / постоянный ток, центральный процессор и графический процессор). Я уверен, что это не на 100% точно, но это было более чем достаточно точно при настройке моей машины, чтобы работать в рамках ограниченных ограничений моей батареи APC.

Все это говорит о том, что моя машина - это iMac 2010 года, поэтому в зависимости от вашей машины она может работать или не работать. Кроме того, я не вижу показания мощности специально для жесткого диска (который должен быть минимальным) или что-либо специфическое для дисплея (при этом уменьшение яркости ЖК-дисплея значительно снижает мощность, поэтому он учитывается в общем).

Стоит попробовать хотя бы. Во IIRC есть бесплатная версия, но она того стоила, и я заплатил. Я немного помешан на контроле, поэтому у меня в меню есть память, температура, активность диска, сетевая активность и т. Д., И мне это нравится. :-)

Керри Шоттс
источник
2
По преимуществу! Теперь возникает вопрос: как меню iStat получают показания датчиков…
Яри ​​Кейнянен,
8

Существует платное приложение под названием Hardware Monitor, которое предоставляет доступ практически ко всем датчикам Mac, включая напряжение, ток и мощность, которые, я полагаю, вы ищете. Он включает утилиту командной строки для чтения этой информации.

Я использовал это, чтобы отследить неисправную логическую плату в iMac в прошлом году и обнаружил, что она стоит 7 евро. Он включает в себя возможность вывода значений датчика в CSV, что может быть полезно для регистрации и визуального отображения данных. Я не уверен, выполняет ли он показания блока питания (поскольку у меня нет приложения на компьютере, на котором я работаю), но он затрагивает pci, слоты, процессор и многие другие.

Вы можете найти программное обеспечение здесь: http://www.bresink.com/osx/HardwareMonitor.html

Я вообще не связан с этой компанией, просто нашел инструмент очень полезным в моем арсенале диагностики.

Digitalchild
источник
Lyken выигрывает приз с этим ответом. Какой удивительный кусок программного обеспечения. Инструмент командной строки, строка меню и полное приложение. Если сам блок питания не контролируется в новых маках, он не даст суммарную номинальную мощность, но это, безусловно, делает большую работу по доступу ко всем доступным данным.
bmike
Извините за позднее обновление, но, @Lyken, ваш +100 вполне заслужен: я не решался дать полный +200, поскольку аппаратный монитор, по-видимому, не даст мощность блока питания, как в iStat Menus 3; По какой-то причине HWM перечисляет датчики мощности только на CPU A4 CPU High Sideс и MXM Graphics Module. Тем не менее, отличное приложение, и я бы наградил ваш ответ на одном дыхании, если бы какой-нибудь другой ответ за награду соответствовал правилам автоматического присуждения награды за половину . Как я уже сказал, +100 вполне заслуженно.
Яри ​​Кейнянен
Да, я считаю, что HWM считывает датчики для каждой модели, поэтому это зависит от того, что доступно в вашей версии. IStat Menu 3 также считывал мощность блока питания на вашей модели?
Digitalchild
1
К сожалению, Hardware Monitor анонсировал EOL 19 июня 2017 года. Bresink.com/osx/216202/eol.html
walterra
7

IANAEE (я не инженер-электрик), но, насколько я понимаю, невозможно точно измерить энергопотребление компьютера с помощью программного обеспечения. Лучшее решение - подключить ваш Mac к устройству типа Kill-a-Watt.

Если вы ищете решение с поддержкой сценариев - и интересный проект - здесь приведены инструкции по созданию беспроводной системы мониторинга мощности или « Tweet-a-Watt ».

michaelmichael
источник
7

Все данные в iStat просто взяты из ключей в области теории и логики. Вы можете получить дамп из командной строки, используя ioreg:

ioreg -w 0 -l

Это будет много данных для просмотра, вы можете разделить их по-разному. Я не верю, что фактические данные, которые вы хотите получить, предоставляются в iMac, система контролирует температуру в ряде мест, но, поскольку она не работает от батареи, менее важно знать мгновенный ток, потребляемый системой, и, таким образом, вероятно, не стоит стоимость датчика.

Луи Гербарг
источник
5

В источнике питания нет дозированных датчиков.

Плата логики измеряет температуру в нескольких местах для управления вентиляторами, а процессор контролирует температуру, чтобы уменьшить тактовую частоту, когда она становится теплее, чем вентиляторы могут ее охладить.

Я полагаю, что некоторые PHD-тезисы могут быть выполнены по интеграции скорости вращения вентилятора и различных датчиков температуры для расчета ожидаемого потребления энергии. Можно получить расчет и с некоторой калибровкой, он может быть даже довольно точным.

В действительности, поскольку эти данные не раскрываются и не записываются, вам, возможно, придется проводить измерения извне. Счетчики энергии приличного дома стоят от 150 до 300 долларов

Вы можете взять напрокат или купить устройство, которое измеряет мощность через розетку, а затем провести тест, чтобы увидеть, сколько энергии Mac потребляет в течение часа в определенных условиях.

  • от
  • Спать
  • вхолостую
  • Различные нагрузки на процессор
  • Максимальный процессор, все идет

Затем вы можете сопоставить их с мониторингом использования ЦП, который является тривиальным с течением времени, topи иметь возможность добавлять вещи.

Все зависит от того, что вы действительно хотите делать с данными, кроме как узнать, как работает аппаратное обеспечение и иметь несколько классных графиков.

bmike
источник
2
+ вам нужно добавить до бесконечности больше вещей в список. Вероятно, к тому времени, когда у меня будут откалиброваны все условия, мне нужно будет заменить текущий iMac :-D. Может быть, просто некоторые внешние базовые счетчики W & kWh справятся, если на борту нет счетчиков.
Яри ​​Кейнянен
2
:-) Рад, что вы получили юмор. Мой опыт показывает, что Mac потребляют на 20-25% меньше, чем спецификации, опубликованные Apple, даже при строгих тестах, чтобы все рисовало с максимальной мощностью.
Bmike
1
@ bmike Я не был бы настолько уверен в этом, известно, что rMBP разряжает батарею при достаточной нагрузке на CPU + GPU из-за адаптера 85 Вт, обеспечивающего недостаточный ток.
Стивен Лу
1
@stevenlu Я бы не удивился, если бы новейшее аппаратное обеспечение эпохи 2013 года продвигалось сильнее, чем технологии середины 2010 года, которые обсуждаются здесь. Точно так же управление питанием на 10,8 сложнее, чем на 10,6. Кроме того - они сильно расходуют внутреннюю батарею - просто не так сильно, если верить моему опыту. Даже новые модели USB-C PD следуют этой схеме:
высокое
3

Я сделал небольшой скрипт на основе вывода system_profiler. Он рассчитывает мощность с использованием заданного напряжения и ампер.

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

Выводит что-то вроде:

$ powerstat
    Battery Information:

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

    AC Charger Information:

      Connected: No
      Charging: No

При зарядке:

$ powerstat
    Battery Information:

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

    AC Charger Information:

      Connected: Yes
      Wattage (W): 60
      Charging: No
serialx
источник
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
источник
На самом деле ответил на неправильный вопрос, извините ... Я пришел сюда в результате поиска напряжения и тока заряда от зарядного устройства USB-C ... и так как я не нашел его, разобрался с вышесказанным и отправил это здесь. Но на самом деле это не то, что вы хотели; Вы могли бы, вероятно, объединить входные данные постоянного тока (это) с данными батареи (другие ответы), чтобы вывести данные об использовании.
Луер
2
system_profiler SPPowerDataType | grep Wattage

Удастся ли мне в MacBook Pro (15 дюймов, 2016)!

shivsta
источник
2
При этом указывается мощность адаптера переменного тока, а не текущая потребляемая мощность. Для контекста:system_profiler SPPowerDataType | grep -C4 Wattage
Эдвард Андерсон
2

Вот ioregкоманда, которая печатает большую часть информации о мощности без 'grep'. Он возвращается намного быстрее, чем system_profiler на моей машине, поэтому, вероятно, больше подходит для сценариев или запуска в фоновом режиме.

ioreg -w 0 -f -r -c AppleSmartBattery
gubby
источник
1

Я на MacBook 10.6.8 и ioreg -l | grep LegacyBatteryInfoработал на меня.

Я раньше пробовал

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

и он вернул 0.

Есть ли решение из библиотеки Apple Dev?

Почему бы не посмотреть снаружи на измеритель мощности? Запишите свои показания, а затем соотнесите их с постоянным и обычным% загрузки ЦП. Тогда вы можете получить приближение.

Рик Бичем
источник
0

Я думаю, что для 10.7 это должно работать с терминала:

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

rolandw
источник
2
ioreg -l | grep LegacyBatteryInfoничего не возвращает мне на iMac.
Яри ​​Кейнянен