20 पॉइंट द्वारा xguru 2024-11-19 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
xguru 2024-11-19

Hacker News की राय

  • यह चिंता है कि सिस्टम समस्याओं का निदान और समाधान करना और कठिन हो सकता है
  • समस्या होने की संभावना को समझाने में "feedback loop" की अवधारणा महत्वपूर्ण है
    • यह Linux kernel, BPF, या खुद प्रोग्राम की समस्या नहीं, बल्कि उसके काम करने के तरीके की वजह से है
    • हो सकता है कोई जोखिम न हो, या नियंत्रण तंत्र मौजूद हों, और समस्या होने पर भी यह किसी स्थिर स्थिति पर सिमट जाए
  • control theory का software engineering में कुछ कम उपयोग हो रहा है
  • इस टूल का इस्तेमाल करने वालों की राय सुनना चाहता हूँ
    • यह प्रभावी है या नहीं, और setup में लगा समय वाजिब है या नहीं, यह जानना चाहता हूँ
  • bpftune को बिना configuration वाले टूल के रूप में डिज़ाइन किया गया है
    • बहुत सारी settings सीखे बिना automated मदद मिलना अच्छा लगता है
  • यह CachyOS में सीधे इस्तेमाल किया जा सकता है
    • install के बाद CachyOS Hello -> Apps/Tweaks पथ से इसे खोला जा सकता है
  • shared k8s cluster जैसे multi-tenant environment में यह कितना प्रभावी है, यह जानने की जिज्ञासा है
    • हर application का उद्देश्य अलग होता है और समय के साथ वे nodes के बीच स्थान बदलते रहते हैं
    • फिर भी, ज़्यादातर applications के बीच कुछ समानताएँ होने की संभावना है
  • यह जानने की जिज्ञासा है कि TCP buffer size tuning वास्तव में उपयोगी है या नहीं
  • यह सवाल है कि अगर parameters को इष्टतम मानों पर सेट करना इतना आसान होता, तो kernel ने शुरुआत से ही ऐसा क्यों नहीं किया
  • simple packet filtering से tracing और monitoring तक इसका विकास शानदार है
    • यह एक बेहतरीन टूल है जिसके बारे में ज़्यादातर लोगों को पता होना चाहिए
    • मैं इसे कई वर्षों से इस्तेमाल कर रहा हूँ