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


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

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


2
2017-07-18 15:55


Источник


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


Ответы:


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

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

Потребляемая мощность в режиме ожидания Power Consumption Idle

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


3
2017-07-21 17:46





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

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


2
2017-07-21 16:45



спасибо за ответ, я пытался использовать Win32_PowerMeter но он основан на базовом измерителе мощности, поэтому большинство полей имеют нулевое значение на обычном компьютере. - ePezhman


Ноутбуки обычно предоставляют интерфейс 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 для изучения (включая измерение тока и напряжения от источника питания), но они не могут быть реализованы на всех системах. устанавливать Просмотр информации о системе и выезд Machine->Battery чтобы почувствовать это. Или, если вы оказались пользователем Linux, проверьте /sys/class/power_supply каталог.

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


1
2017-07-27 17:08



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