15 commentaires
Yo. XDP c'est sensible. les drops peuvent venir de pleins d'endroits. première chose t'es sûr que c'est pas le NIC driver qui a un souci de buffer. regarde les messages du kernel dmesg
ok. ton programme xdp il fait quoi exactement. et t'es sûr qu'il drop pas les paquets lui-même avec un xdp_drop sans que ce soit intentionnel pour ces paquets là
t'as checké les stats de ton programme eBPF avec bpftool prog metrics ou perf record -e bpf:bpf_prog_kprobe sur ton programme XDP pour voir où il passe le plus de temps
totalement. si les ring buffers du nic sont full avant même que xdp n'ait une chance de les processer, ils sont droppés par le hardware. xdp est censé être très tôt dans le pipeline mais y a toujours une limite physique
pas forcément. overrun c'est quand la mémoire du driver est pleine. si c'est la mémoire hardware sur la carte NIC elle-même qui sature, ça peut juste être un drop silencieux ou compté différemment. t'as des métriques spécifiques du NIC via ethtool -S eth0
ok donc c'est pas XDP qui drop mais XDP qui ralentit le processus ou ton trafic est juste trop intense. si XDP prend trop de temps par paquet, ça backpresure le NIC. même un bon programme peut devenir un bottleneck. il faut que ton XDP soit ultra léger
un lookup dans une map eBPF c'est ultra rapide normalement. sauf si ta map est énorme ou si t'as des collisions de hash fréquentes. t'as quelle taille de map
je l'ai déchargé et surprise les drops sont toujours là. le souci venait bien du Mellanox qui galère avec certains types de burst trafic. j'ai dû upgrader le firmware et changer un paramètre de flow control. MERCI BEAUCOUP pour l'aide les gars j'aurais été bloqué sur eBPF pour des jours
Laisser une réponse
Vous devez être connecté pour poster un message !
Salut les génies du kernel. On a une interface 100G qui fait pas mal de trafic et on voit des paquets droppés dans les stats ip -s link. genre 10k drops par minute. le souci c'est qu'on a un programme eBPF XDP chargé dessus. j'ai l'impression que ça vient de là. comment je debug un truc pareil