HeadlinesBriefing favicon HeadlinesBriefing.com

Mengurangi Biaya CPU eBPF 90% dengan Memoization

Hacker News •
×

Saudara laki-laki saya dan saya menghabiskan banyak waktu merancang agen keamanan eBPF kami agar benar-benar cepat dari awal, tetapi baru-baru ini kami menemukan bahwa kami bisa membuatnya jauh lebih cepat dengan menggunakan memoization! Beberapa minggu yang lalu, saya memprofiling kode eBPF dan menemukan bahwa bagian paling mahal dari perlindungan sebenarnya bukanlah menegakkan kebijakan, melainkan menentukan kebijakan mana yang berlaku untuk pembukaan file tertentu.

Kebijakan kami berbasis jalur, sehingga eBPF kami memanfaatkan hook LSM yang dipicu saat pembukaan file. Kemudian kami merekonstruksi jalur, menelusuri dentries induk, dan memeriksa apakah file atau direktori induk mana pun memiliki kebijakan yang cocok. Meskipun ini berfungsi, ini tidak performan, dan kami akhirnya mengulangi banyak pekerjaan untuk file yang sudah kami lihat.

Solusi kami adalah meng-cache kebijakan mana yang berlaku untuk setiap inode menggunakan kunci tiga bidang: ID namespace pemasangan, ID pemasangan, dan nomor inode. Nilai cache menyimpan access_index dan status cache. Pendekatan caching ini menurunkan biaya CPU kernel kami sekitar 90%. Kami menggunakan hash map LRU dengan 10000 entri maksimum untuk pencarian yang efisien.

Cache mencegah jalan-jalan jalur yang redundan untuk akses file berulang, yang sangat bermanfaat untuk beban kerja database seperti Postgres yang sering mengakses ulang jalur file yang sama. Implementasi open-source kami tersedia di https://github.com/bomfather/agent.

Entitas kunci: Orang: bomfather