Linux Pipes an die Grenzen bringen: Von 3,5 GiB/s auf 62,5 GiB/s

2025-06-22
Linux Pipes an die Grenzen bringen: Von 3,5 GiB/s auf 62,5 GiB/s

Dieser Beitrag untersucht die Implementierung von Unix-Pipes in Linux durch iterative Optimierung eines Testprogramms, das Daten über eine Pipe schreibt und liest. Beginnend mit einem einfachen Programm mit einem Durchsatz von etwa 3,5 GiB/s, verbessert der Autor die Leistung um das Zwanzigfache durch mehrere Optimierungsschritte. Zu den wichtigsten Verbesserungen gehören die Verwendung der Systemaufrufe `vmsplice` und `splice`, um Datenkopien zu vermeiden, die Nutzung von Huge Pages, um den Paging-Overhead zu reduzieren, und die Verwendung von Busy-Looping, um Synchronisierungskosten zu minimieren. Der Prozess wird mit Codebeispielen und Leistungsanalysen mithilfe des Linux-Tools `perf` detailliert beschrieben.

Entwicklung