Repousser les limites des pipes Linux : de 3,5 GiB/s à 62,5 GiB/s

2025-06-22
Repousser les limites des pipes Linux : de 3,5 GiB/s à 62,5 GiB/s

Cet article explore l’implémentation des pipes Unix sous Linux en optimisant itérativement un programme de test qui écrit et lit des données via un pipe. En partant d’un programme simple atteignant un débit d’environ 3,5 GiB/s, l’auteur améliore ses performances de vingt fois grâce à plusieurs étapes d’optimisation. Les principales améliorations consistent à utiliser les appels système `vmsplice` et `splice` pour éliminer la copie de données, à exploiter les pages gigantesques pour réduire la surcharge de pagination et à utiliser des boucles chargées pour minimiser les coûts de synchronisation. Le processus est détaillé avec des exemples de code et une analyse des performances à l’aide de l’outil `perf` de Linux.

Développement