Stromverbrauch im idle optimieren

h^2

hat ne Keule +1
Ich beschränke das Stromsparthema jetzt mal auf den idle-Betrieb, damit es nicht zu unübersichtlich wird.

Ich habe im Moment das System zusammengebaut, das ich auch schon hier beschrieben habe:

Also eine niedrig-stromige Intel CPU mit 4+4 Threads, 32GB RAM, 4 NVMEs und eine 10Gbit-Netzwerkkarte. Nach einiger Frickelei, habe ich das System im idle von 55W auf 41W runterbekommen.
Folgende Dinge haben dabei geholfen:

/boot/device.hints
Code:
# disable wifi, save energy
hint.iwlwifi.0.disabled="1"
# disable bluetooth, broken anyway
hint.ubt.0.disabled="1"

Danach tauchen die devices nicht mehr im dmesg auf. Allerdings noch in pciconf...
Die Onboard-Netzwerkkarte (2.5Gbit "Killer") kriegt per default keinen Treiber (aber es gibt einen in den Ports). Lade ich den Treiber geht der Verbrauch hoch, insofern scheint sie "korrekt abgeschaltet" zu sein ohne...? Es reduziert den idle-Verbrauch übrigens kaum die Onboard-Karte, statt der dedizierten zu nehmen.

/boot/loader.conf
Code:
# power saving
hw.pci.do_power_nodriver=3
machdep.hwpstate_pkg_ctrl=0

Letzteres spart tatsächlich Strom, auch wenn ich danach dev.hwpstate_intel.X.epp nicht anpasse. Wenn ich dev.hwpstate_intel.X.epp erhöhe, reduziere ich den Verbrauch unter Last, aber nicht im idle.

/etc/rc.conf
Code:
performance_cx_lowest="Cmax"
economy_cx_lowest="Cmax"

Die Kerne gehen auch brav in den S3:
Code:
% sysctl -a | fgrep -i cx_usage:
dev.cpu.7.cx_usage: 5.80% 18.84% 75.35% last 107752us
dev.cpu.6.cx_usage: 10.53% 22.46% 66.99% last 519us
dev.cpu.5.cx_usage: 9.68% 17.71% 72.59% last 10786us
dev.cpu.4.cx_usage: 5.65% 17.11% 77.22% last 8848us
dev.cpu.3.cx_usage: 5.33% 17.29% 77.36% last 1786us
dev.cpu.2.cx_usage: 13.78% 26.05% 60.16% last 214us
dev.cpu.1.cx_usage: 4.75% 21.90% 73.34% last 4329us
dev.cpu.0.cx_usage: 4.85% 15.11% 80.03% last 38us

Ich habe mit den Power-Saving modi der NVME gespielt (nvmecontrol) und das beeinflusst den Verbrauch unter Last deutlich, aber macht im idle 0 Unterschied.

Folgende Ressourcen habe ich gelesen, scheinen aber sehr out-of-date:

Fällt euch sonst noch was ein? Sind 41W für so ein System "normal"? Ich hatte eigentlich schon gehofft auf ca. 30W runter zu kommen.

Habe mit etwas Neid das hier gelesen:
17W im idle sind natürlich schon eine andere Hausnummer...
 
/boot/device.hints
Code:
# disable wifi, save energy
hint.iwlwifi.0.disabled="1"
# disable bluetooth, broken anyway
hint.ubt.0.disabled="1"
Danach tauchen die devices nicht mehr im dmesg auf. Allerdings noch in pciconf...
Deaktiviere alles im BIOS, dann kannst du dir das mit device.hints sparen.
Ebenfalls serial/parallel-port deaktiveren sowie die Soundkarte.
Lade ich den Treiber geht der Verbrauch hoch, insofern scheint sie "korrekt abgeschaltet" zu sein ohne...?
Das sollte andersrum sein. Aber wenn du sie nicht nutzt, schalte auch diese im BIOS ab.

Ich würde auch anders an die Sache rangehen und zwar das Board so nackt wie möglich booten und mit allem verzichtbaren Krempel im BIOS deaktiviert. Dann ein Minütchen warten und auf den Verbrauch schauen, damit du einen Basiswert hast.
Jetzt eine Komponente einbauen (weitere NVMe oder die 10G NIC), erneut booten und schauen. Somit bekommst du einen Überblick, was ggf. die einzelnen Mehrkomponenten so wegnuckeln, ob sie korrekt idle gehen, ob man Treiber/Settings wechseln muss oder ob sie niedrige states irgendwo zunichte machen.

Sind 41W für so ein System "normal"?
Ja und wie im anderen Thread erwähnt wärst du mit der dicksten CPU für den Sockel im idle höchstwahrscheinlich auch in diesem Bereich, vielleicht bei höhrer Kernzahl dann bei 43-44W.

Je nach GPU und Unterstützung im Treiber kann es einen Unterschied machen, ob man den Bildschirm abstöpselt. HDMI bedeutet auch nochmal 'Soundkarte', aber auch bei allen anderen kann es was nützen.
 
Deaktiviere alles im BIOS, dann kannst du dir das mit device.hints sparen.
Ebenfalls serial/parallel-port deaktiveren sowie die Soundkarte.
Im BIOS kann man keine der Komponenten deaktivieren, das hatte ich natürlich als erstes versucht. Aber GARNICHTS lässt sich deaktivieren, es ist ein Trauerspiel. Selbst im "Expertenmodus" nicht ;'(
Ich würde auch anders an die Sache rangehen und zwar das Board so nackt wie möglich booten und mit allem verzichtbaren Krempel im BIOS deaktiviert. Dann ein Minütchen warten und auf den Verbrauch schauen, damit du einen Basiswert hast.
Ohne NIC braucht es 1-2W weniger, wenn ich mich richtig erinnere. Ohne die NVMEs müsste ich es von einem USB-Stick booten. Das könnte ich nochmal machen. Andererseits werde ich die NVMEs nach dem ganzen Gebenchmarke und so jetzt auch nicht mehr zurückschicken.
Je nach GPU und Unterstützung im Treiber kann es einen Unterschied machen, ob man den Bildschirm abstöpselt. HDMI bedeutet auch nochmal 'Soundkarte', aber auch bei allen anderen kann es was nützen.
Im Normalbetrieb ist natürlich sonst nichts angeschlossen. Die Soundkarte(n) dürften unter FreeBSD ja auch nichts ziehen, denn standardmäßig sind doch keine Treiber geladen und ich habe hw.pci.do_power_nodriver=3...?
 
Gerade im Idle hat den größten Stromverbrauch schlicht das Mainboard + Arbeitsspeicher und da kann man auch kaum was gegen machen. Würde mich nicht wundern, wenn deine 32GB RAM schon so ~10W brauchen. 4 NVMe laufen auch nicht gänzlich ohne Strom. Es läppert sich.

Darum sind die ~40W schon ganz gut. Der ganze Kram ist halt nicht auf Stromverbrauch optimiert. Darum haben Notebooks ja in der Regel auch keine Desktop-Komponenten.

Zum Vergleich: Mein ASUS ROG Ally Handheld mit WLAN, Bluetooth, Bildschirm, NVMe, 16GB RAM und eben der 8 Kerne / 16 Threads CPU braucht ~6W im Idle.
 
es ist ein Trauerspiel. Selbst im "Expertenmodus" nicht
Das ist natürlich schade. :(

Das könnte ich nochmal machen. Andererseits werde ich die NVMEs nach dem ganzen Gebenchmarke und so jetzt auch nicht mehr zurückschicken.
Ich wollte darauf hinaus, dass du mit dem nacktmöglichsten Boot einen Basiswert hast, es sich dann je Komponente realistisch und plausibel addiert. Wenn du jetzt eine NVMe zusteckst und 120W im idle brutzelst, weißt du dann, dass was definitiv nicht stimmt...als krasses Gegenbeispiel. ;)

standardmäßig sind doch keine Treiber geladen und ich habe hw.pci.do_power_nodriver=3...?
Eher dann, wenn keine Treiber geladen sind, läufts bis auf Ausnahmen auf Vollgas. Prüfe mal deinen Verbrauch, während du dich im BIOS befindest.
Es reicht ja eine einzige Komponente, die einen guten Verbrauch kaputt macht.

Die 40W sind insgesamt realistisch, aber das muss nicht heißen, dass nicht doch noch was geht (GPU Treiber hust) . Deswegen ja mein Stupser zum Basiswert. ;)

Edit:
Anderer Ansatz, besorge dir mal eine Win10 oder 11 .iso und installiere das mit UEFI, du brauchst auch keinen Key, da gehts um nen schnellen Test.
Einfach normal Windows aufbügeln, alle Treiber installieren und dann gucken, ob du einen anderen Basiswert bekommst. Es dürfte der geringste sein. Wenn du mit FreeBSD gleichauf oder ~4-5W drüber bist, ist das realistisch und korrekt.
 
Fällt euch sonst noch was ein? Sind 41W für so ein System "normal"? Ich hatte eigentlich schon gehofft auf ca. 30W runter zu kommen.
Was hast du für ein Netzteil drin (wieviel Watt)?
Netzteile haben einen besseren Wirkungsgrad, wenn sie z.B. bei 80% der Nennleistung betrieben werden als an nur 20%, d.h der Eigenverbrauch schwankt dementsprechend; bei um die 40W kanns schon auch noch 10-12 % dessen ausmachen.

EDIT: hab grad gesehen du hast ein 300W drin - da sind 40W grad mal 13% der Nennleistung, da könnten durchaus noch 4 - 5W von den 41W allein dieser Tatsache geschuldet sein.

EDIT2: rein schätzomativ (ohne jetzt groß Datenblätter gesichtet zu haben) würd ich sagen, dass allein deine 4 nvmes und die 10gig Karte zusammen schon ca 22 W brauchen, rechnet man dann noch was fürs Mainboard selber (samt RAM) und der idle-CPU mit den 4C mit ein, dann könnten die 41W durchaus plausibel sein; manche Boards haben auch nen höheren Eigenverbrauch (ohne CPU und RAM, nur Boardkomponenten) als andere;
 
Im BIOS kann man keine der Komponenten deaktivieren, das hatte ich natürlich als erstes versucht.
Ich hatte vergessen, dass man Soundkarte ausschalten kann, war aber schon von mir. Ebenfalls ausgeschaltet die Onboard-NIC (macht aber keinen Unterschied zu ohne-Treiber), und außerdem der komplette SATA-Controller.
Was ich wirklich gerne ausschalten würde, was aber nicht geht: WLAN+Bluetooth.
Darum sind die ~40W schon ganz gut. Der ganze Kram ist halt nicht auf Stromverbrauch optimiert. Darum haben Notebooks ja in der Regel auch keine Desktop-Komponenten.
Wenn ich nicht die vielen NVMEs verbauen wollte, hätte ich mir mir das letzte Framework-Mainboard geholt!
Eher dann, wenn keine Treiber geladen sind, läufts bis auf Ausnahmen auf Vollgas. Prüfe mal deinen Verbrauch, während du dich im BIOS befindest.
Hm, echt? Da habe ich anderes gehört. Im BIOS ist der Verbrauch übrigens deutlich höher als in FreeBSD.
Die 40W sind insgesamt realistisch, aber das muss nicht heißen, dass nicht doch noch was geht (GPU Treiber hust) . Deswegen ja mein Stupser zum Basiswert.
Zu GPU habe ich bis jetzt gar nichts gelesen. Was sind da meine Optionen?
hab grad gesehen du hast ein 300W drin - da sind 40W grad mal 13% der Nennleistung, da könnten durchaus noch 4 - 5W von den 41W allein dieser Tatsache geschuldet sein.
Ich hätte gerne eine niedriger-wattiges genommen, aber sowas scheint es nicht mehr auf dem Markt zu geben...

ABER ich habe noch was wirklich wichtiges gefunden: der Heise-Artikel hat einen Hinweis auf "PCIe ASPM Mode", das sind die Einstellungen, die Stromsparen der PCIe Devices regeln. Davon gibt es in meinem BIOS vier unterschiedliche Knöpfe mit zum Teil mehreren Einstellmöglichkeiten, die alle per Default auf "Disabled" waren. Nachdem ich die auf Enabled bzw. L0s+L1 und L1 gesetzt habe geht der IDLE-Verbrauch von 42W auf 33W runter!

Mega. Was sich da so alles verbirgt im BIOS. Da sind noch sehr viele Optionen, die ich überhaupt nicht kenne, das muss ich mir nochmal angucken.
 
Hm, echt? Da habe ich anderes gehört. Im BIOS ist der Verbrauch übrigens deutlich höher als in FreeBSD.
Das bestätigt doch meine Aussage :)

Zu GPU habe ich bis jetzt gar nichts gelesen. Was sind da meine Optionen?
Einfach den passenden Treiber laden wenn nicht schon geschehen, damit auch Stromsparfunktionen dafür greifen. In der manpage des Treibers gucken, ob es da noch ein paar knobs gibt, die man setzen könnte. War das jetzt ein Serverboard? Wenn das nur ein aspeed oä. ist, geht dann nicht mehr viel. Bei Intel, AMD und nvidia gibts ggf. noch das ein oder andere...man muss es immer durchtesten, ob das dann bei abgezogenem Monitor die GPU abschaltet bzw. in einen tieferen state geht, aber der passende Treiber dürfte die Grundvoraussetzung sein.

auf "PCIe ASPM Mode", das sind die Einstellungen, die Stromsparen der PCIe Devices regeln. Davon gibt es in meinem BIOS vier unterschiedliche Knöpfe mit zum Teil mehreren Einstellmöglichkeiten, die alle per Default auf "Disabled" waren. Nachdem ich die auf Enabled bzw. L0s+L1 und L1 gesetzt habe geht der IDLE-Verbrauch von 42W auf 33W runter!
Ja, ich hätte erwartet, dass zumindest L0 default enabled ist. Sollten timeouts oder andere komische Dinge beim Netzwerk passieren, teste zunächst nur mit L0...
 
Bei Deinem Verbrauch könnte eine PicoPSU, bzw. MiniiPSU interessant sein. Die bringen in dem Bereich gerne noch einmal 5W. Du musst halt Deinen Maximalverbrauch abschätzen. Die PicoPSU habe ich schon mit 160 W gesehen. PicoPSU 160
 
Einfach den passenden Treiber laden wenn nicht schon geschehen, damit auch Stromsparfunktionen dafür greifen.
Das war schonmal nicht erfolgreich:
Code:
Feb  8 21:00:12 revres kernel: drmn0: successfully loaded firmware image 'i915/adls_dmc_ver2_01.bin'
Feb  8 21:00:12 revres kernel: drmn0: [drm] Finished loading DMC firmware i915/adls_dmc_ver2_01.bin (v2.1)
[...]
Feb  8 21:00:13 revres kernel: PPS state mismatch
Feb  8 21:00:14 revres kernel: drmn drmn0: eDP powered off while attempting aux channel communication.
Feb  8 21:00:14 revres kernel: drmn drmn0: drm_WARN_ON(intel_dp->pps.vdd_wakeref)
[...]
Feb  8 21:00:20 revres kernel: drmn drmn0: eDP powered off while attempting aux channel communication.
Feb  8 21:00:20 revres kernel: drmn0: [drm] failed to retrieve link info, disabling eDP
Feb  8 21:00:20 revres kernel: drmn drmn0: drm_WARN_ON(!intel_gmbus_is_valid_pin(dev_priv, pin))drmn drmn0: drm_WARN_ON(!intel_gmbus_is_valid_pin(dev_priv, pin))
Feb  8 21:00:20 revres kernel: drmn0: [drm] [ENCODER:235:DDI TC1/PHY B] is disabled/in DSI mode with an ungated DDI clock, gate it
Feb  8 21:00:20 revres kernel: drmn0: successfully loaded firmware image 'i915/tgl_guc_62.0.0.bin'
Und dann hing das System und der Stromverbrauch ging schlagartig um 12W hoch.
Bei Deinem Verbrauch könnte eine PicoPSU, bzw. MiniiPSU interessant sein. Die bringen in dem Bereich gerne noch einmal 5W. Du musst halt Deinen Maximalverbrauch abschätzen. Die PicoPSU habe ich schon mit 160 W gesehen. PicoPSU 160
Ich habe noch eine PicoPSU 60W in der Firewall, und war immer zufrieden. Aber hatte von der 160W Version keine mit Netzteil gefunden — jetzt gibt es sie auch nur bei einem Händler, der ne 1.5⭐ Bewertung hat.
Ich war mir auch unsicher, ob die den Dauerbetriebt aushält. Aber wäre vielleicht einen Versuch wert gewesen....
 
Das war schonmal nicht erfolgreich:
Das würde ich nochmal mit L0-only (zu tiefe states können, aber müssen keine Probleme verursachen) oder deaktiviert versuchen, einfach um zu wissen, ob es daran lag. Ebenfalls ist immer ein guter Tip, drm-kmod aus den ports zu bauen.
 
Das würde ich nochmal mit L0-only (zu tiefe states können, aber müssen keine Probleme verursachen) oder deaktiviert versuchen, einfach um zu wissen, ob es daran lag.
Habs probiert, gleiches Ergebnis. Wenn ich allerdings den Treiber in die loader.conf eintrage, dann kommt das System trotzdem hoch und er taucht später in der kldstat auf. Aber nicht in der dmesg, also "attacht" der Treiber dann aus irgendeinem Grund nicht richtig, denke ich. Hat sich auf jeden Fall nicht auf dem Stromverbrauch ausgewirkt. Das versuch ich irgendwann in der Zukunft vielleicht noch mal; der Chipsatz ist halt noch super-neu.

Es gibt allerdings ein Beta-Bios mit dem man jetzt auch WLAN+BT ausgeschaltet kriegt. Das hat nochmal ein gutes Watt eingespart. Ich werde am Sonntag nochmal versuchen Intel Speedshift auszuschalten, und gucken ob der powerdxx das System weiter runterkriegt, aber überall heißt es dass Speedshift eigentlich sparsamer ist als manuelle Kontrolle.
 
Wenn ich allerdings den Treiber in die loader.conf eintrage, dann kommt das System trotzdem hoch und er taucht später in der kldstat auf.
Das sollte in die rc.conf https://docs.freebsd.org/en/books/handbook/x11/#x-configuration-intel
Ob das bei der jetzigen Version einen Unterschied macht, weiß ich nicht. Nvidia hier, aber auch da lade ich über die rc.conf.
Das versuch ich irgendwann in der Zukunft vielleicht noch mal; der Chipsatz ist halt noch super-neu.
Auch möglich, dass es daran liegt.

Es gibt allerdings ein Beta-Bios mit dem man jetzt auch WLAN+BT ausgeschaltet kriegt. Das hat nochmal ein gutes Watt eingespart.
Nice! :)

aber überall heißt es dass Speedshift eigentlich sparsamer ist als manuelle Kontrolle.
Ja. Ich meine auch, dass das hier schon gut technisch begründet wurde, sollte sich via Suchfunktion finden lassen. Weil AMD-Fanboy, habe ich hier kein neues Intel-System und somit keinerlei Erfahrung. Aber Versuch mach kluch :)
 
Zurück
Oben