- BPF(eBPF) की observability क्षमताओं का उपयोग करके सिस्टम performance को लगातार अपने-आप ट्यून करने के लिए डिज़ाइन किया गया हल्का टूल
यह जिन समस्याओं को हल करना चाहता है
- बहुत अधिक ट्यूनिंग विकल्प: Linux kernel में 1600 से अधिक ट्यून किए जा सकने वाले sysctl parameters मौजूद हैं। अलग-अलग environments के लिए सही settings ढूंढना जटिल और कठिन है
- administrator हस्तक्षेप में कमी: आधुनिक cloud systems में manual tuning की तुलना में automated management की ज़रूरत होती है। अधिकांश systems में शुरुआती setup के बाद administrator का हस्तक्षेप लगभग नहीं के बराबर होता है
- स्थिर settings की सीमाएँ: सिस्टम environment लगातार बदलता रहता है, इसलिए fixed values के साथ tuning करना अप्रभावी हो सकता है
मुख्य design principles
- न्यूनतम overhead: high-frequency events की tracking से बचना, और केवल ज़रूरत पड़ने पर ही observability features का उपयोग करना
- policy explanation की स्पष्टता: syslog में यह दर्ज करना कि "क्या" और "क्यों" बदला गया
- administrator पहले: अगर administrator कोई value सेट करता है, तो auto-tuning feature निष्क्रिय हो जाती है
- zero-configuration principle: अलग configuration के बिना अपने-आप tuning। जहाँ तक संभव हो magic numbers से बचना
- dynamic adjustment: TCP memory usage बढ़ने पर buffer size कम करके सिस्टम का संतुलन बनाए रखना
प्रमुख concepts
- tuner: हर tuner BPF program से उत्पन्न events को process करता है और संबंधित tunable items को manage करता है
- strategy: एक tuner के पास कई strategies हो सकती हैं, और हर strategy evaluation function के माध्यम से प्रभावी strategy चुनती है
- event: इसमें tuner ID, scenario, network namespace जानकारी आदि शामिल होती है, और tuner इसी आधार पर उपयुक्त कार्रवाई करता है
architecture
bpftune एक daemon है, जो कई .so फ़ॉर्मेट के plugin tuners को load और manage करता है।
- हर tuner का एक unique ID होता है, और वह BPF तथा user space में events को process करता है।
- BPF component में
bpftune.bpf.h शामिल होता है और shared variables तथा map definitions का उपयोग किया जाता है।
supported tuners की सूची
- TCP connection tuner: congestion control algorithm का auto-tuning
- neighbour table tuner: neighbour table size का automatic expansion
- route table tuner: route table size का automatic expansion
- sysctl tuner: अगर ट्यून किए गए sysctl values manual settings से टकराएँ, तो tuner निष्क्रिय हो जाता है
- TCP buffer tuner: TCP buffer size का automatic adjustment
- net buffer tuner: core network से संबंधित tuning का automatic adjustment
- netns tuner: network namespace के addition और removal का पता लगाना
2 टिप्पणियां
Hacker News की राय
bpftuneको बिना configuration वाले टूल के रूप में डिज़ाइन किया गया हैCachyOSमें सीधे इस्तेमाल किया जा सकता हैCachyOS Hello->Apps/Tweaksपथ से इसे खोला जा सकता है