Optimisation des buffers réseau avec ring buffer Linux

margaud-paul 24/05/2026
RÉSOLU
margaud-paul
Auteur Actif
Avatar de margaud-paul
margaud-paul
Auteur Actif

Je travaille sur une infra haute performance et je constate des dropped packets au niveau de la carte réseau (NIC) sous forte charge. Après analyse avec ethtool -S, je vois que les compteurs rx_missed_errors augmentent drastiquement.

J'ai tenté d'augmenter la taille du ring buffer avec ethtool -G, mais je me demande si cela ne va pas dégrader la latence globale. Quelqu'un a-t-il déjà tuné ces valeurs sur des cartes Intel 10G/25G en environnement virtualisé ?

24/05/2026 à 01:24

10 commentaires

arnaude-teixeira
Membre Actif
Avatar de arnaude-teixeira
arnaude-teixeira
Membre Actif

C'est un classique. Augmenter le ring buffer aide contre les rafales, mais si ton CPU n'est pas capable de vider la file assez vite, tu ne fais que décaler le problème. As-tu vérifié si tu as du softirq pinning efficace sur tes cores ?

24/05/2026 à 21:02
margaud-paul
Auteur Actif
Avatar de margaud-paul
margaud-paul
Auteur Actif

Oui, j'ai activé le irqbalance mais je me demande s'il ne faut pas forcer le pinning manuellement. J'ai déjà RPS et RFS activés, mais le CPU 0 est souvent surchargé.

25/05/2026 à 15:16
colette66
Membre
Avatar de colette66
colette66
Membre

Oublie irqbalance en haute perf. Fais le pinning manuellement via /proc/irq/X/smp_affinity. Vérifie aussi si tes files sont bien réparties sur les différents NUMA nodes.

26/05/2026 à 14:07

Attention à la taille des buffers, si tu dépasses les capacités du cache L3, tu vas introduire du jitter. Tu devrais aussi regarder du côté de net.core.netdev_max_backlog dans ton sysctl.conf.

27/05/2026 à 12:48
margaud-paul
Auteur Actif
Avatar de margaud-paul
margaud-paul
Auteur Actif

Merci pour le conseil sur le NUMA. J'ai déplacé les interruptions sur le même node que la mémoire utilisée par l'application et les drops ont diminué de 60%. Je vais tester le pinning manuel demain en prod.

28/05/2026 à 05:11
arnaude-teixeira
Membre Actif
Avatar de arnaude-teixeira
arnaude-teixeira
Membre Actif

Garde un oeil sur le context switch rate après le pinning, ça peut grimper si ton app n'est pas bien isolée.

28/05/2026 à 23:53
colette66
Membre
Avatar de colette66
colette66
Membre

Pour info, sur du 25G, le busy polling (net.core.busy_poll) peut aussi aider si tu as un traffic constant.

29/05/2026 à 16:45
margaud-paul
Auteur Actif
Avatar de margaud-paul
margaud-paul
Auteur Actif

Je vais tester le busy polling sur un node de staging pour voir l'impact sur la consommation CPU. Merci à tous pour les pistes.

30/05/2026 à 14:31

N'oublie pas de vérifier si ton pilote NIC supporte le XDP, ça pourrait bypasser une partie de la stack kernel.

31/05/2026 à 04:01
margaud-paul
Auteur Actif
Avatar de margaud-paul
margaud-paul
Auteur Actif

C'est la prochaine étape si le tuning sysctl ne suffit pas. Je clôture ce thread pour le moment, merci pour l'aide précieuse.

31/05/2026 à 18:04

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire