L = λ × W
क्षमता योजना में सबसे उपयोगी समीकरण
किसी भी स्थिर कतार के लिए, चाहे उसकी आंतरिक संरचना कुछ भी हो: L = λ × W, जहाँ:
- L = प्रणाली में वस्तुओं की औसत संख्या (प्रगति में या प्रतीक्षा में)
- λ (लैम्ब्डा) = औसत आगमन दर (प्रति इकाई समय में वस्तुएँ)
- W = प्रत्येक आइटम द्वारा प्रणाली में बिताया गया औसत समय
ज्यामितीय पठन: λ को एक अक्ष पर और W को दूसरे अक्ष पर प्लॉट करें। गुणज L वह क्षेत्रफल है जो वे बनाते हैं। क्षमता नियोजन इस आयत के भीतर ही होता है।
यह क्यों महत्वपूर्ण है: तीन मात्राओं में से कोई भी दो तीसरी को निर्धारित करती हैं। थ्रूपुट और लेटेंसी मापें, तो आपको ऑक्यूपेंसी पता होगी। ऑक्यूपेंसी और थ्रूपुट मापें, तो आपको लेटेंसी पता होगी। यह नियम दृढ़ है: यह वेब अनुरोधों, रेस्टोरेंट की मेज़ों, सुपरमार्केट कतारों और CPU पाइपलाइनों पर बिना किसी संशोधन के लागू होता है।
तीन विशिष्ट उदाहरण:
- एक वेब सेवा 200 req/s की दर से अनुरोधों का प्रबंधन करती है, जिसकी औसत लेटेंसी 50 ms (0.05 s) है। L = 200 × 0.05 = 10 (उड़ान में)।
- एक कॉफ़ी शॉप 60 ग्राहक/घंटे की दर से सेवा देती है, जिसकी औसत ड्वेल टाइम 15 मिनट (0.25 घंटे) है। L = 60 × 0.25 = 15 ग्राहक अंदर।
- एक बैकएंड पूल 1500 req/s की दर से अनुरोधों का प्रबंधन करता है, जिसकी औसत लेटेंसी 200 ms (0.2 s) है। L = 1500 × 0.2 = 300 (उड़ान में)।
साइज़िंग प्रभाव: किसी टियर के वर्कर काउंट / थ्रेड काउंट / कनेक्शन काउंट को पकड़ बनाए रखने के लिए कम से कम L होना चाहिए। इससे कम होने का अर्थ है कतार में वृद्धि।
80% उपयोगिता के बाद लेटेंसी क्यों बढ़ जाती है
संचालन में सबसे महत्वपूर्ण वक्र
x-अक्ष पर उपयोगिता (0% से 100%) और y-अक्ष पर औसत प्रतीक्षा समय का प्लॉट करें। यह आकृति क्षमता योजना में सबसे प्रभावशाली वक्रों में से एक है।
M/M/1 क्युइंग मॉडल: एक ऐसे सिस्टम के लिए जिसमें पॉइसन आगमन (अनुच्छेद) और घातांकीय सेवा समय (अनुच्छेद) हों, औसत प्रतीक्षा समय:
W_q = ρ / (μ × (1 - ρ))
जहाँ ρ उपयोगिता (0 से 1) है और μ सेवा दर है।
वक्र का आकार:
- ρ = 0.5 (50% उपयोगिता) पर, प्रतीक्षा समय छोटा होता है (1 सेवा समय)।
- ρ = 0.7 (70% उपयोग) पर, प्रतीक्षा समय लगभग 2.3 सेवा समय है।
- ρ = 0.8 (80% उपयोग) पर, प्रतीक्षा समय लगभग 4 सेवा समय है।
- ρ = 0.9 (90% उपयोग) पर, प्रतीक्षा समय लगभग 9 सेवा समय है।
- ρ = 0.95 (95% उपयोग) पर, प्रतीक्षा समय लगभग 19 सेवा समय है।
- ρ = 1.0 (100% उपयोग) पर, प्रतीक्षा समय अनंत है।
घुटना (Knee): लगभग 80% उपयोग पर, वक्र तीव्रता से मुड़ता है। घुटने के नीचे, क्षमता आरामदायक होती है; ऊपर, विलंबता (latency) उपयोग की तुलना में तेजी से बढ़ती है।
व्यावहारिक पठन: स्थिर-अवस्था (steady-state) के लिए 70% उपयोग का लक्ष्य रखें, कभी भी 100% का नहीं। 30% 'हेडरूम' (headroom) बर्बादी नहीं है; यह सीमित विलंबता की कीमत है।
नी (Knee) के पार साइज़िंग
दो परिदृश्य:
परिदृश्य A: 60% CPU पर 10 रिप्लिका चल रहे हैं। लेटेंसी p99 = 100 ms।
परिदृश्य B: ट्रैफ़िक वृद्धि के कारण 90% CPU पर वही फ्लीट चल रहा है। p99 = 600 ms।
वही फ्लीट, वही कोड, केवल उपयोग (utilization) बदला है।
आकार और ट्रिगर को साथ में लागू करना
संश्लेषण
अब आप लिली के नियम (Little's Law) को एक आयत के रूप में लागू कर सकते हैं, क्यूइंग वक्र (queueing curve) और उसके घुटने (knee) को पढ़ सकते हैं, और दोनों को क्षमता निर्णयों से जोड़ सकते हैं।
दोनों को लागू करें।
एक बैकएंड टियर 2,000 req/s संभालता है, जिसमें प्रति रिप्लिका की औसत लेटेंसी 50 ms है और 70% CPU पर क्षमता 80 req/s है। सर्ज फैक्टर 2x है; आप 3 रिप्लिकाओं के एक साथ विफल होने (simultaneous replica failures) के मामले में भी टिके रहना चाहते हैं।
संगत नोट्स (Companion Notes)
संगत नोट्स (Companion Notes)
यह ज्यामिति-आधारित पाठ Stateless Horizontal Scaling मुख्य पाठ को मात्रात्मक ज्यामिति के रूप में पुनः प्रस्तुत करता है।
अगला सहपाठी, geometry_of_ingress_egress_separation, नेटवर्क-सीमा विभाजन को एक द्विभागीय ग्राफ़ के रूप में पुनः प्रस्तुत करता है, जिसमें एक कट वर्टेक्स (cut vertex) होता है जिसे विभाजन हटा देता है।
बहुत बढ़िया।