Dropping eBPF CPU Cost by About 90% with Memoization (Not AI Gen)
Après profilage, ils ont constaté que le coût principal du dispositif eBPF venait moins de l'application de la politique que de la détermination de la politique pertinente lors d'un open de fichier, en raison des parcours répétés des dentries le long du chemin. Pour y remédier, ils ont mis en place un cache basé sur l'inode, indexé par l'identifiant du namespace de montage, l'identifiant de montage et le numéro d'inode, et stockent une valeur contenant un access_index et un état dans une table LRU. Cette mémoïsation a réduit les cycles CPU noyau d'environ 90 % dans leurs benchmarks (de 28 milliards à 3,03 milliards) et a fait quasiment disparaître les fonctions de parcours de chemin des flamegraphs. Pour éviter les erreurs liées aux noms multiples pointant vers le même inode, ils lisent i_nlink et évitent d'utiliser le cache lorsque le nombre de liens est supérieur à un, en retombant sur le parcours complet. Le cache est entièrement interne à l'agent et transparent pour l'utilisateur, de sorte que les politiques existantes n'ont pas besoin d'être modifiées pour bénéficier de l'accélération.