Performances weirdes avec eBPF pour network policy k8s

vdidier 04/11/2025
RÉSOLU
vdidier
Auteur Actif Rédacteur
Avatar de vdidier
vdidier
Auteur Actif Rédacteur

yo la team j'ai un souci bizarre on a déployé des netpol avec cilium et eBPF sur notre cluster k8s et depuis on voit des spikes cpu sur les nodes et même des pertes de paquets par moments sur du gros trafic genre 10Gbps quand le réseau monte un peu. j'ai l'impression que c lié à eBPF mais pas sûr comment diagnostiquer ça bien

kubectl get ds cilium -n kube-system
NAME     DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
cilium   6         6         6       6            6                     3d
04/11/2025 à 13:25

15 commentaires

gmenard
Membre Actif Secouriste
Avatar de gmenard
gmenard
Membre Actif Secouriste

salut check d'abord ta version de kernel et de cilium les perfs eBPF sont hyper sensibles à ça surtout sur des vieilles versions. t'es en L7 policy ou juste L3/L4

05/11/2025 à 11:04
vdidier
Auteur Actif Rédacteur
Avatar de vdidier
vdidier
Auteur Actif Rédacteur

kernel 5.4 avec cilium 1.9 c'est du L3/L4 de base pas de complexité. les drops sont pas constants mais quand le débit s'emballe ça se voit direct

06/11/2025 à 07:33
monnier-augustin
Membre Actif
Avatar de monnier-augustin
monnier-augustin
Membre Actif

5.4 c'est un peu ancien pour du eBPF haute perf le 5.10 ou 5.15 apporte des grosses optis surtout pour XDP t'as les cpu en mode irq ou softirq qui montent en flèche

07/11/2025 à 03:50
vdidier
Auteur Actif Rédacteur
Avatar de vdidier
vdidier
Auteur Actif Rédacteur

les softirq ouais ça monte pas mal dans atop. j'ai regardé les logs du kernel mais rien d'explicite sur les drops ou des erreurs eBPF

07/11/2025 à 23:18
gmenard
Membre Actif Secouriste
Avatar de gmenard
gmenard
Membre Actif Secouriste

ok si c'est les softirq c'est probablement le traitement des paquets. t'as configuré des maps ebpf avec des clés/valeurs complexes ou bcp de lookups

08/11/2025 à 17:20
vdidier
Auteur Actif Rédacteur
Avatar de vdidier
vdidier
Auteur Actif Rédacteur

pas vraiment c'est des maps assez basiques pour les règles de sécurité. la complexité c'est la quantité de règles disons une centaine par node

09/11/2025 à 14:01
gmenard
Membre Actif Secouriste
Avatar de gmenard
gmenard
Membre Actif Secouriste

cent règles c'est pas énorme. vérifie si tu n'as pas des perf_event_open leaks ou des traces qui s'accumulent. ça peut tuer le cpu sans le dire

Modifié le 23/05/2026 à 16:20
vdidier
Auteur Actif Rédacteur
Avatar de vdidier
vdidier
Auteur Actif Rédacteur

comment je check ça les perf_event_open leaks t'as un outil spécifique

Modifié le 23/05/2026 à 16:20
gmenard
Membre Actif Secouriste
Avatar de gmenard
gmenard
Membre Actif Secouriste

utilise bpftool prog show pour voir les programmes chargés et bpftool map show pour les maps. regarde aussi cat /proc/kallsyms | grep bpf_prog_run ou des outils comme bcc/profile pour identifier les hotspots cpu

Modifié le 23/05/2026 à 16:20
vdidier
Auteur Actif Rédacteur
Avatar de vdidier
vdidier
Auteur Actif Rédacteur

j'ai lancé bpftool et j'ai vu que certains programmes avaient des durées d'exécution assez longues pour des opérations réseau censées être rapides. y'a un moyen de voir les jit logs du bpf verifier

Modifié le 23/05/2026 à 16:20
monnier-augustin
Membre Actif
Avatar de monnier-augustin
monnier-augustin
Membre Actif

pour les jit logs faut activer echo 1 > /proc/sys/net/core/bpf_jit_enable et echo 1 > /proc/sys/net/core/bpf_jit_harden et après tu regardes dans dmesg ou les logs du kernel mais ça peut être verbeux à mort

Modifié le 23/05/2026 à 16:20
gmenard
Membre Actif Secouriste
Avatar de gmenard
gmenard
Membre Actif Secouriste

ouais et si c un souci de map access massif essaie de passer sur une structure plus optimisée si possible pour les lookups genre bpf hash map avec des clés pré-calculées ou des array maps si tes clés sont séquentielles

14/11/2025 à 16:34
vdidier
Auteur Actif Rédacteur
Avatar de vdidier
vdidier
Auteur Actif Rédacteur

j'ai activé les logs du jit et j'ai vu des avertissements sur des boucles potentielles dans un de mes programmes qui est censé être simple. c'est ptete ça la source du souci quand il y a bcp de flux en parallèle

15/11/2025 à 14:30
gmenard
Membre Actif Secouriste
Avatar de gmenard
gmenard
Membre Actif Secouriste

ah les boucles c'est le classique si le verifier est pas content ça ralentit ou ça rejette direct. réécris la partie critique pour éviter les boucles explicites utilise plutôt des helpers bpf_map_lookup_elem en batch si possible

16/11/2025 à 12:11
vdidier
Auteur Actif Rédacteur
Avatar de vdidier
vdidier
Auteur Actif Rédacteur

on a identifié un pattern dans le code généré par cilium qui avait une petite boucle pour une inspection de header ça passait sur du faible trafic mais en charge ça partait en vrille. on a mis à jour cilium vers une version plus récente et ça a corrigé le programme bpf généré le cpu est redevenu normal et plus de drops. thx pour les pistes

17/11/2025 à 09:52

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