Premiers correctifs fournissant pour IO_uring, la prise en charge de l’envoi de copie zéro pour le sous-système réseau du noyau Linux semble extrêmement prometteuse pour un débit plus élevé.
Le développeur Pavel Begunkov a publié aujourd’hui l’ensemble de douze correctifs travaillant sur cette prise en charge de l’envoi sans copie pour IO_uring avec le sous-système de mise en réseau. Ces correctifs initiaux sont marqués comme une”demande de commentaires”car certains éléments sont toujours en cours de tri avec le code.
Cette prise en charge de l’envoi sans copie IO_uring est actuellement pour la gestion IPv4/UDP, mais des correctifs TCP sont également en cours d’élaboration. Alors qu’il s’agit encore d’un travail à un stade précoce et en évolution constante, les résultats des performances nous ont plutôt enthousiasmés par les perspectives :
Benchmarking udp (65435 octets) avec un périphérique réseau factice (mtu=0xffff) : le meilleur case io_uring=116079 Mo/s vs msg_zerocopy=47421 Mo/s, soit 2,44 fois plus rapide.
….
Le pire des cas pour io_uring est toujours 1,88 fois plus rapide que msg_zerocopy, et il y a quelques optimisations”faciles”omises du patchset. Pour 4096 octets de charge utile, zc ne surpasse que légèrement la version non-zc, plus la charge utile est grande, plus l’écart est grand.
C’est formidable de voir tout le travail du noyau se produire autour de IO_uring pour le stockage et la mise en réseau. Voir cette série de correctifs si vous êtes intéressé par tous les détails.