Имея приблизительную оценку энергопотребления компьютера.

692
ePezhman

Я разрабатываю приложение, которое должно знать о потреблении энергии на компьютерах (на окнах). Я понял, что ОС не имеет функций для прямой поддержки, поэтому мой обходной путь - сбор информации обо всех аппаратных устройствах и агрегирование количества потребляемой ими энергии. Я нашел такие базы данных, как eXtreme Power Supply Calculator. но у них нет API, которые я мог бы использовать. Есть ли у вас какие-либо предложения о том, как этого добиться? любое программное обеспечение с открытым исходным кодом?

Поскольку мое приложение должно в основном работать на ноутбуках, я думал о приблизительной оценке, основанной на модели ноутбука, но я не мог найти базу данных, содержащую такую ​​информацию, какие-либо идеи? Спасибо

2
Существуют устройства, которые позволяют подключить к ним устройства, которые будут указывать мощность, которую потребляют эти устройства. Я бы просто использовал один из них. Ramhound 7 лет назад 3
Это почти невыполнимая задача, как бы вы на нее ни смотрели. Если вы выбираете модель, вам нужно включить все варианты процессора, жесткого диска, SSD, видеокарты, чипсета и все остальное, что может быть подключено для каждого варианта. В противном случае вам нужно индивидуально каталогизировать каждую из этих частей. Затем вам нужно знать все об этих устройствах, об их энергопотреблении в режиме ожидания, об их полной нагрузке и обо всем, что между ними. Короче говоря: это кошмар. Mokubai 7 лет назад 1
Как и выше, одно устройство не будет потреблять одно и то же количество энергии все время, поэтому собираемая вами статистика, вероятно, является максимальным использованием энергии и не является реальной. Я думаю, вам нужно сосредоточиться на том, чего вы пытаетесь достичь с помощью своей программы. Как говорит Ramhound, вы можете получить настенный счетчик энергии для тестирования различных устройств. Те покажут фактическую использованную энергию. 7 лет назад 1

3 ответа на вопрос

3
Matt

Это было бы невыполнимой задачей, энергопотребление может сильно варьироваться в зависимости от загрузки системы и настроек энергосбережения. Например, на моей рабочей станции в режиме ожидания она потребляет ~ 300 Вт и ~ 900 Вт под нагрузкой в ​​соответствии с моим APC SmartUPS. Хотя ноутбук будет менее экстремальным при сравнении абсолютных чисел, он все равно будет существенным между холостым и полной нагрузкой.

И в качестве доказательства того, насколько это бессмысленно, я попытался ввести свою систему в калькулятор eXtreme Power Supply, который вы связали в режиме «Эксперт». Он недооценил нагрузку на ~ 100 Вт. И удивительно, что моя пиковая нагрузка будет зависеть от того, сколько часов в день я использую свой компьютер.

Потребляемая мощность холостого хода Power Consumption Idle

Потребляемая мощность под нагрузкой (забыли загрузить жесткие диски) enter image description here

2
harrymc

Посмотрите на класс WMI Win32_PowerMeter, расположенный в root\CIMV2\powerпространстве имен. В этом пространстве имен есть много других классов и событий, связанных с управлением питанием и профилями.

Пример использования этого класса см. В гаджете pwrdrain-gadget с открытым исходным кодом (использует объект ActiveX). Для примеров VBScript см. Это . Для примеров C # посмотрите это .

спасибо за ответ, я пытался использовать `Win32_PowerMeter`, но он основан на базовом измерителе мощности, поэтому большинство полей на обычном компьютере являются нулевыми. ePezhman 7 лет назад 0
1
Dmitry Grigoryev

Ноутбуки обычно предоставляют интерфейс ACPI для своих батарей, которые вы можете использовать. Вы будете особенно заинтересованы в объекте «Состояние батареи», описанном в главе 10.2.2.6 спецификации ACPI :

_BST returns a package in the format below  Package {  Battery State // Integer (DWORD) Battery Present Rate // Integer (DWORD) Battery Remaining Capacity // Integer (DWORD) Battery Present Voltage // Integer (DWORD) } 

Battery Present Rateобычно это либо значение мощности в мВт, либо текущее значение в мА (которое вам нужно умножить, Battery Present Voltageчтобы получить значение мощности). Конечно, есть еще много значений ACPI для исследования (включая измерение тока и напряжения от источника питания), но они могут быть реализованы не во всех системах. Установите System Information Viewer и проверьте, Machine->Batteryчтобы почувствовать это. Или, если вы являетесь пользователем Linux, проверьте /sys/class/power_supplyкаталог.

Вам нужно будет научиться делать вызовы ACPI в Windows с любого языка программирования и используемой вами среды. Эта статья MSDN может стать хорошим началом.

Мне нравится этот ответ, но я уверен, что все эти значения будут недействительными, когда ноутбук подключен к адаптеру питания, не так ли? Jason 7 лет назад 0
@Jason Когда ноутбук подключен, `_BST` сообщит о зарядке аккумулятора. Если вам повезет, и также сообщается о потребляемой мощности от блока питания, вы сможете вычесть первую из последней и при этом получить оценку энергопотребления. Хотя я видел ноутбуки, которые работают только от батареи, но не от блока питания. Dmitry Grigoryev 7 лет назад 0