HeadlinesBriefing favicon HeadlinesBriefing.com

মেমোইজেশনের সাথে eBPF CPU খরচ 90% কমানো

Hacker News •
×

আমার ভাই এবং আমি আমাদের eBPF সিকিউরিটি এজেন্টকে ভূমি থেকে সত্যিই দ্রুত করার জন্য অনেক সময় ব্যয় করেছি, কিন্তু সাম্প্রতিকভাবে আমরা اكتشاف করেছি যে আমরা মেমোইজেশন ব্যবহার করে এটি অনেক দ্রুত করতে পারি! কয়েক সপ্তাহ আগে, আমি eBPF কোডকে প্রোফাইল করেছিলাম এবং পেয়েছিলাম যে সুরক্ষার সবচেয়ে ব্যয়বহুল অংশ আসলে একটি নীতি প্রয়োগ করা নয়, বরং একটি নির্দিষ্ট ফাইল ওপেনের জন্য কোন নীতি প্রযোজ্য তা নির্ধারণ করা।

আমাদের নীতিগুলো পাথ-ভিত্তিক, তাই আমাদের eBPF একটি LSM হুকের সাথে কাজ করে যা ফাইল ওপেনে ট্রিগার হয়। তারপর আমরা পাথ পুনর্নির্মাণ করি, প্যারেন্ট ডেন্ট্রি অনুসরণ করি, এবং যাচাই করি যে ফাইল বা কোনো পূর্বসূরি ডিরেক্টরি মিলমান নীতি রাখে কিনা। যদিও এটি কাজ করে, তবে এটি কার্যকর নয়, এবং আমরা যে ফাইলগুলো ইতোমধ্যে দেখেছি তার জন্য অনেক কাজ পুনরাবৃত্তি করি।

আমাদের সমাধান ছিল প্রতিটি inode-এর জন্য প্রযোজ্য নীতি ক্যাশ করা তিন-ফিল্ড কী ব্যবহার করে: মাউন্ট নেমস্পেস আইডি, মাউন্ট আইডি, এবং inode নম্বর। ক্যাশ মান একটি access_index এবং ক্যাশ স্টেট স্টোর করে। এই ক্যাশিং পদ্ধতি আমাদের কার্নেল CPU খরচ প্রায় 90% কমিয়ে দিয়েছে। আমরা কার্যকর অনুসন্ধানের জন্য সর্বোচ্চ 10000 এন্ট্রির একটি LRU হ্যাশ ম্যাপ ব্যবহার করি।

ক্যাশ পুনরাবৃত্ত ফাইল অ্যাক্সেসের জন্য অতিরিক্ত পাথ ওয়াক রোধ করে, যা Postgres-এর মতো ডেটাবেস ওয়ার্কলোডের জন্য বিশেষভাবে উপকারী যারা একই ফাইল পাথ পুনরায় অ্যাক্সেস করে। আমাদের ওপেন সোর্স ইমপ্লিমেন্টেশন পাওয়া যায় https://github.com/bomfather/agent-তে।

মূল এন্টিটি: ব্যক্তি: bomfather