Eine grobe Abschätzung des Energieverbrauchs des Computers.

908
ePezhman

Ich entwickle eine App, die den Energieverbrauch von Computern (unter Windows) kennen muss. Mir wurde klar, dass das Betriebssystem über keine Funktionen verfügt, um dies direkt zu unterstützen. Daher besteht meine Problemumgehung darin, Informationen über alle Hardwaregeräte zu sammeln und die Menge an Energie zu aggregieren, die sie verbrauchen. Ich habe Datenbanken wie den eXtreme Power Supply Calculator gefunden, aber sie haben keine APIs, die ich habe könnte benutzen. Haben Sie einen Vorschlag, wie Sie dies erreichen können? irgendeine Open-Source-Software?

Da meine App hauptsächlich auf Laptops laufen sollte, dachte ich an eine grobe Schätzung, die auf einem Laptop-Modell basiert, aber ich konnte keine Datenbank mit solchen Informationen finden. Vielen Dank

2
Es gibt Geräte, an denen Sie alle Geräte anschließen können, die angeben, wie viel Strom diese Geräte verbrauchen. Ich würde nur eins davon verwenden. Ramhound vor 7 Jahren 3
Dies ist eine fast unmögliche Aufgabe, egal wie Sie es betrachten. Wenn Sie sich für ein Modell entscheiden, müssen Sie alle Varianten des Prozessors, der Festplatte, der SSD, der Grafikkarte, des Chipsets und aller anderen Komponenten einbeziehen, die möglicherweise für jede Variante angebracht sind. Ansonsten müssen Sie jeden dieser Teile einzeln katalogisieren. Dann müssen Sie alles über diese Geräte, ihren Leerlaufverbrauch, ihren vollen Lastverbrauch und alles dazwischen wissen. Kurz gesagt: Dies ist ein Albtraum. Mokubai vor 7 Jahren 1
Wie oben, verbraucht ein einzelnes Gerät nicht immer die gleiche Menge an Energie, daher sind die Statistiken, die Sie erfassen, wahrscheinlich der maximale Energieverbrauch und nicht der tatsächliche. Ich denke, Sie müssen sich darauf konzentrieren, was Sie mit Ihrem Programm erreichen wollen. Wie Ramhound sagt, können Sie mit einem Steckdosenzähler verschiedene Geräte testen. Diese zeigen die tatsächlich verbrauchte Energie. vor 7 Jahren 1

3 Antworten auf die Frage

3
Matt

Dies wäre eine unmögliche Aufgabe. Der Stromverbrauch kann je nach Systemlast und Energiespareinstellungen stark variieren. Zum Beispiel auf meiner Workstation verbraucht sie im Leerlauf ~ 300 Watt und ~ 900 Watt unter Last gemäß meinem APC SmartUPS. Obwohl ein Laptop beim Vergleich absoluter Zahlen weniger extrem wäre, wäre er zwischen Leerlauf und Volllast noch relativ groß.

Und als Beweis dafür, wie sinnlos dies ist, habe ich versucht, mein System in den eXtreme Power Supply Calculator einzugeben, den Sie im "Experten" -Modus verlinkt haben. Die Last wurde von ~ 100 Watt unterschätzt. Und es ist überraschend, dass meine Spitzenlast davon abhängt, wie viele Stunden ich meinen Computer täglich benutze.

Stromverbrauch im Leerlauf Power Consumption Idle

Stromverbrauch unter Last (vergessen, die Festplatten zu laden) enter image description here

2
harrymc

Schauen Sie sich die Win32_PowerMeter- WMI-Klasse an, die sich im root\CIMV2\powerNamespace befindet. Dieser Namespace enthält viele andere Klassen und Ereignisse, die sich auf Energieverwaltung und -profile beziehen.

Ein Beispiel für die Verwendung dieser Klasse finden Sie im Open-Source -Gadget " Gadget" (verwendet ein ActiveX-Objekt). VBScript-Beispiele finden Sie hier . Beispiele für C # finden Sie hier .

Vielen Dank für die Antwort. Ich habe versucht, `Win32_PowerMeter` zu verwenden, aber es basiert auf einem zugrunde liegenden Leistungsmesser. Daher sind die meisten Felder auf einem normalen Computer leer. ePezhman vor 7 Jahren 0
1
Dmitry Grigoryev

Laptops verfügen normalerweise über eine ACPI-Schnittstelle zu ihren Batterien, die Sie verwenden könnten. Sie interessieren sich speziell für das in Kapitel 10.2.2.6 der ACPI-Spezifikation beschriebene Objekt "Battery Status" :

_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 RateIn der Regel ist dies entweder ein Leistungswert in mW oder ein Stromwert in mA (mit dem Sie multiplizieren müssen Battery Present Voltage, um den Leistungswert zu erhalten). Natürlich gibt es noch viele weitere ACPI-Werte (einschließlich der Strom- und Spannungsmessung von der Stromversorgung), die jedoch nicht in allen Systemen implementiert werden können. Installieren Sie den System Information Viewer und checken Sie aus Machine->Battery, um ein Gefühl davon zu bekommen. Wenn Sie ein Linux-Benutzer sind, checken Sie das /sys/class/power_supplyVerzeichnis aus.

Sie müssen lernen, wie ACPI-Aufrufe unter Windows ausgeführt werden, unabhängig von der verwendeten Programmiersprache und dem verwendeten Framework. Dieser MSDN-Artikel ist möglicherweise ein guter Anfang.

Ich mag diese Antwort, aber ich bin mir ziemlich sicher, dass alle diese Werte ungültig wären, wenn der Laptop an das Netzteil angeschlossen ist. Jason vor 7 Jahren 0
@ Jason Wenn der Laptop angeschlossen ist, meldet _BST die Batterieladung. Wenn Sie Glück haben und die von der PSU gezogene Leistung auch gemeldet wird, können Sie die erstere von der letzteren abziehen und trotzdem Ihren Stromverbrauch abschätzen. Ich habe zwar Laptops gesehen, die nur Akkuspannung, aber keine Netzteilleistung haben. Dmitry Grigoryev vor 7 Jahren 0