Ça dépend comment tu remontes les données. Si tu utilises BPF_PERF_OUTPUT et que tu as énormément d'événements, tu satures le buffer. Passe sur BPF_RINGBUF si ton kernel est assez récent.
struct {
__uint(type, BPF_MAP_TYPE_RINGBUF);
__uint(max_entries, 256 * 1024);
} rb SEC(".maps");
Regarde aussi si tu fais pas trop de maps lookups complexes dans ton code BPF. Si tu fais des boucles ou des accès trop fréquents, ça finit par se sentir sur le CPU scheduler.
Vérifie aussi le overhead du 'copy_from_user' si tu récupères des strings. Ça peut être lourd sur des gros volumes d'appels.
Je suis passé sur le Ring Buffer et j'ai réduit la taille des données copiées. La latence est redevenue normale. Merci pour le coup de main !
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
olivie-marie
Membre depuis le 20/07/2024J'essaie de profiler mes syscalls en prod avec un outil basé sur eBPF mais je vois des pics de latence de dingue sur l'app. C'est censé être safe non ?