Détection de voisin bruyant av... Note

Détection de voisin bruyant avec eBPF

Netflix utilise eBPF pour surveiller en continu la latence de la file d'attente d'exécution, un indicateur de voisins bruyants (conteneurs qui utilisent lourdement les ressources du serveur, dégradant les performances dans les conteneurs adjacents).Des hooks eBPF (sched_wakeup, sched_wakeup_new, sched_switch) sont utilisés pour capturer la latence de la file d'attente d'exécution et l'associer aux conteneurs (ID de cgroup) en utilisant des kfuncs (fonctions du noyau) pour accéder en toute sécurité aux données RCU-protégées.Un régulateur de débit dans eBPF équilibre l'observabilité avec les performances en limitant les points de données envoyés à l'espace utilisateur.Les processus de l'espace utilisateur traitent les événements du tampon d'anneau eBPF et émettent des métriques à Atlas, y compris la latence de la file d'attente d'exécution (runq.latency) et le compte de préemption (sched.switch.out) par ID de cgroup.Les métriques runq.latency et sched.switch.out sont toutes deux nécessaires pour identifier les voisins bruyants, car runq.latency seule peut être trompeuse lorsque les conteneurs sont à leur limite CPU.Une étude de cas démontre un problème de voisin bruyant provoquant une augmentation de la latence de la file d'attente d'exécution et des préemptions lorsque le nouveau conteneur utilise pleinement les CPU de l'hôte.Les processus système ont été identifiés comme les voisins bruyants en utilisant la métrique sched.switch.out.Les optimisations du code eBPF, y compris l'utilisation de BPF_MAP_TYPE_HASH, l'accès direct aux membres de la structure de tâche et l'ignorance des tâches du noyau, minimisent les coûts.Un correctif du noyau Linux a été soumis et accepté pour améliorer le calcul des statistiques dans le noyau.BPFtop, un outil de surveillance des processus eBPF open-source, a été utilisé pour mesurer le coût du code eBPF.