HeadlinesBriefing favicon HeadlinesBriefing.com

मेमोइज़ेशन के साथ eBPF CPU लागत में 90% की कमी

Hacker News •
×

मेरे भाई और मैंने अपने eBPF सुरक्षा एजेंट को जमीन से वास्तव में तेज़ बनाने के लिए बहुत समय बिताया, लेकिन हाल ही में हमने पाया कि हम मेमोइज़ेशन का उपयोग करके इसे बहुत तेज़ कर सकते हैं! कुछ हफ्तों पहले, मैंने eBPF कोड का प्रोफाइल किया और पाया कि सुरक्षा का सबसे महंगा हिस्सा वास्तव में एक नीति को लागू करना नहीं है, बल्कि यह निर्धारित करना है कि कौन सी नीति एक दी गई फ़ाइल खोलने पर लागू होती है।

हमारी नीतियाँ पथ-आधारित हैं, इसलिए हमारा eBPF फ़ाइल खोलने पर सक्रिय होने वाले LSM हुक का उपयोग करता है। फिर हम पथ को पुनर्निर्मित करते हैं, माता-पिता डेंट्रीज़ को ऊपर की ओर जाते हैं, और जाँचते हैं कि क्या फ़ाइल या कोई भी पूर्वज निर्देशिका मिलानणीय नीति रखती है। जबकि यह काम करता है, यह प्रदर्शनकारी नहीं है, और हम उन फ़ाइलों के लिए काम का बहुत हिस्सा दोहराते हैं जिन्हें हमने पहले हेक देखा है।

हमारा समाधान यह था कि हम प्रत्येक inode के लिए लागू नीति को तीन-फ़ील्ड कुंजी का उपयोग करके कैश करें: माउंट नेमस्पेस आईडी, माउंट आईडी, और inode नंबर। कैश मान एक एक्सेस_इंडेक्स और कैश स्थिति संग्रहीत करता है। इस कैशिंग दृष्टिकोण ने हमारे कर्नेल CPU लागत को लगभग 90% घटा दिया। हम कुशल खोज के लिए 10000 अधिकतम प्रविष्टियों के साथ एक LRU हैश मैप का उपयोग करते हैं।

कैश दोहराए गए फ़ाइल पहुंचों के लिए अनावश्यक पथ वॉक्स को रोकता है, जो डेटाबेस कार्यभार जैसे Postgres के लिए विशेष रूप से लाभदायक है जो अक्सर एक ही फ़ाइल पथों को पुनः पहुंचते हैं। हमारा ओपन सोर्स कार्यान्वयन https://github.com/bomfather/agent पर उपलब्ध है।

प्रमुख संज्ञाएँ: व्यक्तियाँ: bomfather