Zum Inhalt springen
labkompass

LAB · Vermessen

35-W-CPU im Homeserver: 5,1 W im Leerlauf, 31,6 W unter Volllast

Was der Prozessor eines Mini-Homeservers wirklich an Leistung zieht — direkt aus dem Energiezähler der CPU statt aus dem Datenblatt. Mit der Abgrenzung, die dabei am wichtigsten ist: Das ist nicht der Verbrauch an der Steckdose.

Von Niclas Hennrich ·

  • Lenovo V530-24ICB All-in-One (24-Zoll-Panel im Gehäuse)
  • Intel Core i5-9400T, 6 Kerne / 6 Threads, PL1 35 W / PL2 92 W
  • 16 GB DDR4-2666, ein Modul (Single-Channel), kein ECC
  • NVMe-SSD 512 GB + USB-HDD 1 TB

Softwarestand: Debian 13 · Prometheus 3.14.0


LAB-Messwert · gemessen am · 100 s Beruhigung vor der Ablesung

CPU Package im Leerlauf

Messwert
5,12 W

Messmethode: Intel RAPL über node_exporter, rate(node_rapl_package_joules_total[1m]) in Prometheus · Last: Leerlauf, alle Dienste laufen

Über zwei Läufe reproduzierbar: 5,12 W und 4,97 W

LAB-Messwert · gemessen am · 125 s

CPU Package unter Volllast

Messwert
31,55 W

Messmethode: Intel RAPL über node_exporter, rate(node_rapl_package_joules_total[1m]) in Prometheus · Last: 6 parallele openssl-speed-Prozesse, alle Kerne auf 100 %

PL1 der CPU liegt bei 35 W — der Wert bleibt darunter, es gab null Throttling-Ereignisse

LAB-Messwert · gemessen am

Rechenkerne im Leerlauf

Messwert
4,35 W

Messmethode: RAPL-Domain core · Last: Leerlauf

LAB-Messwert · gemessen am

Rechenkerne unter Volllast

Messwert
30,75 W

Messmethode: RAPL-Domain core · Last: 6 parallele openssl-speed-Prozesse

Von 31,55 W Package entfallen 30,75 W auf die Kerne — der Rest ist Speichercontroller und Uncore

LAB-Messwert · gemessen am

Speicher-Domain unter Volllast

Messwert
0,63 W

Messmethode: RAPL-Domain dram · Last: 6 parallele openssl-speed-Prozesse

Im Leerlauf 0,67 W — die Last der CPU ändert daran praktisch nichts

LAB-Messwert · gemessen am

CPU-Package-Temperatur im Leerlauf

Messwert
54 °C

Messmethode: hwmon/coretemp über node_exporter · Last: Leerlauf

LAB-Messwert · gemessen am · 125 s

CPU-Package-Temperatur unter Volllast

Messwert
69 °C

Messmethode: hwmon/coretemp über node_exporter · Last: 6 parallele openssl-speed-Prozesse

Grenzwerte laut Sensor: 94 °C (high) / 100 °C (critical) — hier also reichlich Luft

LAB-Messwert · gemessen am

Chipsatz-Temperatur im Normalbetrieb

Messwert
71 °C

Messmethode: thermal_zone/pch_cannonlake über node_exporter · Last: Normalbetrieb

Dauerhaft 70–73 °C und damit deutlich wärmer als die CPU (46–60 °C im Normalbetrieb)

LAB-Messwert · gemessen am

NVMe-SSD

Messwert
40 °C

Messmethode: NVMe Composite über node_exporter · Last: Normalbetrieb

LAB-Messwert · gemessen am

USB-Festplatte

Messwert
36 °C

Messmethode: smartctl-exporter · Last: Normalbetrieb

Kurz gesagt: Die CPU dieses Homeservers zieht im Leerlauf 5,1 Watt und unter Volllast 31,6 Watt — gemessen am Energiezähler im Prozessor selbst, nicht geschätzt. Der wichtigste Satz dieser Messreihe ist aber die Einschränkung: Das ist nicht der Verbrauch an der Steckdose. Und der zweitwichtigste Befund war ein Sensor, der zwei Wochen lang „alles in Ordnung" meldete und dabei überhaupt nichts lieferte.

Warum diese Messung #

Ein Homeserver läuft 24 Stunden am Tag. Die Frage „was kostet das eigentlich?" beantworten die meisten Quellen mit der TDP aus dem Datenblatt — hier also 35 Watt. Das ist aber eine Auslegungsgrenze für die Kühlung, kein Messwert.

Moderne Intel-Prozessoren führen selbst Buch: RAPL (Running Average Power Limit) ist ein Energiezähler im Chip, den der Kernel über /sys/class/powercap bereitstellt. Er zählt Joule; wer die Zunahme pro Sekunde bildet, bekommt Watt. Damit lässt sich beantworten, wie viel von der Datenblattzahl im Alltag tatsächlich anfällt.

Was RAPL misst — und was nicht #

Das ist die Abgrenzung, ohne die jede dieser Zahlen falsch gelesen wird:

EnthaltenNicht enthalten
RechenkerneNetzteil und dessen Wirkungsgrad
Speichercontroller, UncoreBildschirm (hier: ein 24-Zoll-Panel im Gehäuse)
Integrierte Grafik (sofern der Zähler läuft)Festplatten, Lüfter, Chipsatz, USB-Geräte

Bei einem All-in-One-Gerät mit eingebautem Bildschirm ist die Differenz zwischen CPU-Leistung und Steckdosenleistung besonders groß. Wer wissen will, was das Gerät wirklich aus der Wand zieht, braucht ein Messgerät zwischen Stecker und Dose — RAPL ersetzt das nicht. Beide Werte werden hier deshalb bewusst getrennt geführt und nie miteinander verrechnet; die Steckdosenmessung steht noch aus.

Methodik #

  • Gemessen wurde nicht direkt am Sysfs, sondern über die vollständige Kette node_exporter → Prometheus → HTTP-API — also genau der Weg, über den die Werte auch im Alltag angezeigt werden.
  • Leistung als rate(node_rapl_package_joules_total[1m]), kein eigener Abfrage-Dienst.
  • Last erzeugt durch sechs parallele openssl speed aes-256-cbc, also volle Auslastung aller sechs Kerne, 125 Sekunden lang.
  • Vor der Leerlauf-Ablesung 100 Sekunden Beruhigung.
  • Drei Läufe: Leerlauf, Volllast, Leerlauf danach. Die beiden Leerlaufwerte lagen bei 5,12 W und 4,97 W.
  • Raumtemperatur nicht erfasst — die Temperaturwerte sind deshalb Betriebswerte dieses Geräts, keine normierten Messungen.

Die Zahlen #

LeerlaufVolllast (6 Kerne)
CPU Package5,12 W31,55 W
davon Rechenkerne4,35 W30,75 W
Speicher-Domain0,67 W0,63 W
CPU-Temperatur54 °C69 °C
Ø Taktfrequenz3,19 GHz3,10 GHz
Throttling-Ereignisse00

Zwei Dinge fallen daran auf.

Die 35-Watt-CPU bleibt unter ihrem Limit. 31,6 W gegen ein PL1 von 35 W — das Gerät läuft bei voller Rechenlast nicht ins Temperatur- oder Leistungslimit, der All-Core-Turbo hält 3,1 GHz. Für einen Server, der gelegentlich rechnet und meistens wartet, ist das eine beruhigende Auskunft.

Der Leerlauf ist der eigentliche Kostenfaktor. Ein Homeserver verbringt den größten Teil des Tages im Leerlauf. 5,1 W CPU-Leistung sind dort der relevante Wert — nicht die 31,6 W, die vielleicht eine Stunde pro Woche anfallen. Was daraus an Stromkosten wird, hängt am Gesamtgerät und damit an einer Messung, die noch fehlt; grob überschlagen lässt sich das mit dem Stromkosten-Rechner, solange klar bleibt, dass CPU-Leistung nur ein Teil davon ist.

Der Chipsatz ist wärmer als die CPU #

Der Wert, mit dem hier niemand gerechnet hatte: Der Chipsatz läuft dauerhaft bei 70–73 °C, während die CPU im Normalbetrieb zwischen 46 und 60 °C liegt. Für diese Plattform ist das normal und unkritisch — aber ohne einen Blick auf die Chipsatz-Temperatur wäre es nie aufgefallen. Wer Temperaturen überwacht und dabei nur „die CPU-Temperatur" nimmt, sieht den wärmsten Punkt des Systems möglicherweise gar nicht.

Ebenfalls aus der Messreihe: Der I/O-Druck liegt bei rund 2,4 %, der CPU-Druck bei 0,2 %, der Speicherdruck praktisch bei null. „Druck" (im Kernel: Pressure Stall Information) misst, wie viel Zeit Prozesse mit Warten verbringen — anders als eine Auslastungsangabe in Prozent. Der Engpass dieses Hosts ist damit belegbar I/O, nicht CPU. Aus reinen Auslastungswerten war das nicht ablesbar.

Was die Hardware nicht hergibt #

Die Hälfte der Arbeit bestand darin, sauber zu belegen, was dieses Gerät nicht messen kann. Das ist kein Nebenergebnis, sondern spart beim nächsten Mal die Suche:

GesuchtWarum es nicht geht
LüfterdrehzahlDie Lüfterobjekte des Geräts kennen nur „an" und „aus" — kein Drehzahlgeber vorhanden.
SpannungenKein einziger Spannungssensor in irgendeinem Sensor-Chip des Geräts.
Mainboard-/VRM-TemperaturExistiert nicht. Einen vorhandenen Sensor einfach „Mainboard" zu nennen wäre plausibel und falsch.
ECC-FehlerzählerKein ECC-Speicher verbaut.
GPU-Temperatur und -LastDie integrierte Grafik meldet nur ihren Takt, keine Temperatur.

Der Grund dahinter ist einer, der vor jeder Monitoring-Planung gehört: Der Gehäusetyp entscheidet über die Sensorik. Ein Fertiggerät vom Markenhersteller legt seinen Sensor-Baustein nicht offen — dort ist keine Konfiguration möglich, die daran etwas ändert. Diese Frage gehört an den Anfang einer Monitoring-Planung, nicht ans Ende.

Die drei Fallen #

Ein Sensor-Modul, das Erfolg meldet und nichts liefert. Der RAPL-Collector meldete zwei Wochen lang Status „erfolgreich" und exportierte dabei null Messreihen. Der Fehler war vollständig stumm. Ursache: Dem Exporter im Container fehlten zwei dokumentierte Standard-Optionen, mit denen er das Dateisystem des Hosts statt sein eigenes liest. Die Lehre gilt für jedes Monitoring: Ein Collector mit Status „ok" ist kein Beleg dafür, dass er Daten liefert. Immer einmal in die tatsächliche Ausgabe schauen.

Eine Kernel-Härtung im Weg — und die verbreitete Anleitung dazu ist schlecht. Der Energiezähler ist seit einer Sicherheitslücke von 2020 (PLATYPUS, CVE-2020-8694) nur noch für root lesbar, weil sich aus feinem Energieverlauf Rückschlüsse auf verarbeitete Daten ziehen lassen. Die überall zu findende Lösung ist ein chmod -R o+r auf das ganze Verzeichnis — das macht den Seitenkanal für jeden lokalen Prozess wieder lesbar. Der bessere Weg kostet zwei Zeilen mehr: eine eigene Systemgruppe anlegen, per udev-Regel nur die Zählerdatei lesend für diese Gruppe freigeben, den Exporter in die Gruppe stecken. Die Schreibrechte auf die Leistungslimits bleiben dabei unangetastet. Eine Härtung dreht man nicht zurück, man öffnet gezielt.

Fehlend ist nicht null. Drei Werte in dieser Messreihe waren „0" und meinten „kein Wert": eine Temperaturzone des abgeschalteten WLAN-Chips (0 °C), eine Leistungsdomain, deren Zähler auf dieser Plattform schlicht nicht hochzählt (0 W — gegengeprüft unter Volllast, nicht nur im Leerlauf), und leere Messreihen, die als leeres Diagramm statt als „keine Daten" gezeichnet wurden. 0 °C heißt „eiskalt", 0 W heißt „verbraucht nichts", 0 rpm heißt „Lüfter steht" — alle drei sind etwas anderes als „kein Sensor". Dieser Unterschied muss bis in die Anzeige durchgehalten werden, sonst fällt er genau dort um.

Einschränkungen #

  • RAPL ist keine Steckdosenmessung. Netzteil, Bildschirm, Laufwerke, Lüfter und Chipsatz sind nicht enthalten.
  • Je ein Messpunkt pro Betriebszustand, kein Dauerlauf über Stunden. Der Leerlaufwert wurde zweimal bestätigt, der Lastwert einmal.
  • Raumtemperatur nicht erfasst.
  • Alle Werte gelten für dieses Gerät. Andere CPUs derselben Klasse können im Leerlauf deutlich abweichen — die Größenordnung „einstellige Wattzahl im Leerlauf, unterhalb der TDP unter Last" ist übertragbar, die konkrete Zahl nicht.

Was als Nächstes fehlt #

Die Steckdosenmessung. Erst sie beantwortet die Frage, die am Anfang stand: was das Gerät im Jahr kostet. Bis dahin bleibt hier stehen, was gemessen wurde — und was nicht.

Zum Setup gehört