Mehr Effizienz: Stromsparen im Netzwerkverkehr mit Linux-Kernel 6.13
Eine Neuerung in Kernel 6.13 schafft mehr Effizienz im Netzverkehr und wechselt je nach Datenlast zwischen IRQ und Polling. Das spart Strom und Ressourcen.
(Bild: erstellt mit Dall-E durch iX)
Mit dem neuen Kernel 6.13 gibt es eine Änderung in der Art, wie der Kernel den Netzwerkverkehr regelt. Er wechselt dabei automatisch zwischen Interrupt Requests (IRQ) und Polling, was die Balance zwischen Effizienz und Last verbessert. Ein Nebeneffekt ist ein geringerer Stromverbrauch, der sich gerade im Umfeld von Hochlastanwendungen wie beispielsweise in Rechenzentren auswirkt.
Durch den neuen Mechanismus IRQ Suspension in Kernel 6.13., der mit dem Sysfs-Parameter irq_suspend_timeout steuerbar ist, verhindert der Kernel CPU-Last, die entsteht, weil Anwendungen durch Polling permanent unnötig neue Daten anfragen. Im Umschalten auf den IRQ-Modus müssen die Anwendungen dann warten, bis sie über neue Daten informiert werden. Das spart CPU-Ressourcen in Leerlaufzeiten (Idle Times) auf der einen Seite, erhöht aber die Latenz für die wartenden Anwendungen auf der anderen Seite. Fließen wieder Daten, schaltet der Kernel von alleine wieder auf Polling um. Im Fall, dass permanent Daten fließen, ist kein Unterschied spürbar.
Videos by heise
Ein Team um Martin Karsten von der kanadischen Uni Waterloo ist bei einem Vergleich des Netzwerkverkehrs im User-Modus (Polling) zum Kernel-Modus (IRQ) auf diesen Effekt gestoĂźen und hat einen entsprechenden Patch fĂĽr den Kernel vorgeschlagen, der nur knapp dreiĂźig Zeilen Code umfasst.
Polling ist Teil der New-API (NAPI), um einerseits den Kernel vor einer Ăśberlastung durch Interrupts zu schĂĽtzen und andererseits Latenzen zu minimieren, die entstehen, wenn Anwendungen darauf warten mĂĽssen, dass sie ĂĽber einen Interrupt auf neue Daten hingewiesen werden. NAPI-Polling verlagert die Last auf die Nachfrageseite der Anwendungen. Diese prĂĽfen mit Polling in kurzen Intervallen, ob neue Daten vorhanden sind. Das funktioniert gut, solange auch Daten ankommen. Ist das nicht der Fall, arbeitet das Polling in Dauerschleife leer. Hier schaltet der neue Timeout um, und die Anwendung muss wieder warten.
(who)