un

guest
1 / ?
back to lessons

सिस्टम को नहीं बल्कि इसके घटकों को अनुप्रयोग करें

हैमिंग के सिस्टम इंजीनियरिंग के पहले नियम

हैमिंग का मुख्य सिद्धांत Ch. 28 से: आपको घटकों को अनुप्रयोग करने की संभावना है कि सिस्टम प्रदर्शन को नुकसान होगा।


उसे डिफरेंशियल एनालाइजर की कहानी से प्रदर्शित किया गया। दो इकाइयाँ जोड़नी थीं। निर्माताओं ने दूसरी इकाई के एम्पलीफायर्स को सुधारा। स्वीकृति दिन पर, हैमिंग ने मानक परीक्षण चलाया - y'' + y = 0, y vs y' को प्लॉट करें, एक सर्कल की उम्मीद करें। यह विफल हो गया। कारण: सुधारित एम्पलीफायर्स ने मुख्य रूप से माध्यमिक इकाई के लिए डिज़ाइन किए गए जमा सर्किट के माध्यम से अधिक電流 प्रवाह किया। जमा को मूल डिज़ाइन के लिए पर्याप्त था। यह नई電流 स्तर के लिए तैयार नहीं था। इंटरफ़ेस टूट गया, नहीं घटक।


उनका सामान्यीकरण: अधिकांश सिस्टम विफलताएँ इंटरफ़ेस को ट्रेस करती हैं, नहीं घटक। घटक डिज़ाइन, परीक्षण और प्रमाणित किए जाते हैं। इंटरफेस को एक बादल के रूप में डिज़ाइन किया जाता है, कम परीक्षण किया जाता है और स्वतंत्रता से प्रमाणित नहीं किया जाता है। जब एक घटक बदल जाता है, तो इसका इंटरफ़ेस व्यवहार बदल जाता है। कुछ नीचे नहीं डिज़ाइन किया गया था जो इस नई इंटरफेस के लिए था।


ключ असममिति: एक घटक में 10x सुधार एक सीमित इंटरफेस को प्राप्त करता है जो 10x सिस्टम को नुकसान पहुंचा सकता है। सुधार जोड़ नहीं - यह घटाता है।

शिक्षा प्रणाली को असफल सिस्टम इंजीनियरिंग के रूप में

हैमिंग की शिक्षा की कहानी

हैमिंग ने इस सिद्धांत को शिक्षा में लागू किया। व्यक्तिगत विषयों के अंकों को अनुप्रयोग करना - छात्रों को प्रत्येक विषय के लिए परीक्षा प्रदर्शन को अधिकतम करने के लिए ड्रिल करना।


प्रत्येक घटक (विषय अंक) सुधरता है। प्रणाली (शिक्षा, एकीकृत समझ के रूप में परिभाषित) को नुकसान होता है। विषयों के बीच इंटरफेस - छात्रों की क्षमता को लागू करने के लिए ज्ञान के बीच - को कभी नहीं अनुप्रयोग किया गया था। यह अंग्रेज़ी हो गया।


यह एक व्यापारिक घटना नहीं है। यह संरचनात्मक है। जब आप घटक प्रदर्शन को मापते हैं और पुरस्कृत करते हैं, तो आपको घटक अनुप्रयोग मिलता है। इंटरफेस इन्विजिबल होते हैं घटक मेट्रिक्स के लिए।


उनकी नुस्खा: प्रणाली में बोतलनेक को पाएं, फिर उसे हटाने के बाद नीचे क्या होता है। बोतलनेक हटाने से अगली क्यूई में बाढ़ आती है। एक अनुचिंतित अनुप्रयोग एक नई सीमा बन जाती है।

इंटरफ़ेस डिग्रेडेशन का पालन करें

हैमिंग ने सुधारित घटक के इंटरफेस व्यवहार में परिवर्तन दिखाया - और बाकी सिस्टम को पुराने इंटरफेस लोड के आसपास डिज़ाइन किया गया था।

सॉफ्टवेयर में एक घटक की प्रदर्शन में सुधार से डाउनस्ट्रीम में समस्या पैदा होने का एक स्पष्ट उदाहरण दें। सुधारित घटक का नाम, प्रभावित इंटरफेस और डाउनस्ट्रीम विफलति के पहले संकेत का नाम करें।

नोड्स, क्यू, सर्ज स्कोर

एक MOAD फैक्टरी मॉडल

हर सॉफ्टवेयर निर्भरता ग्राफ़ एक फैक्टरी बनाता है। प्रत्येक नोड एक कारखाना का कामस्थल है। प्रत्येक एज एक क्यू है। काम एक नोड के क्यू में प्रवेश करता है, संसाधित होता है, और डाउनस्ट्रीम क्यू में प्रवाह करता है।


हर नोड को दो स्कोर कैरेक्टराइज करते हैं:


Factory Model DAG: workaholic node (high betweenness + surge) and glutton node (high out-degree)

Surge स्कोर = तेजी × इन-डिग्री

जब यह बोतलनेक साफ होता है, तब इस नोड में कितना काम नीचे बहता है। इन-डिग्री 5 वाले एक नोड (5 ऊपरी निर्भरता सभी इसे खिला रही हैं) और 100× तेजी पैदा करता है, जो 500× स्टॉर्म डाउनस्ट्रीम में उत्पन्न करता है।


Betweenness = in-degree + out-degree

यह कामस्थल कितना केंद्रीय है कुल प्रवाह के लिए। उच्च betweenness का मतलब है कि इस नोड के माध्यम से कई पथ गुजरते हैं।


दो प्रकार:


Workaholic node: उच्च betweenness, उच्च surge स्कोर। यह बोतलनेक है। हर क्व या ऊपरी स्ट्रीम के कारण इसमें पीछे हट जाता है। इस बोतलनेक को बिना डाउनस्ट्रीम क्षमता के हटाया जाता है, और सब कुछ नीचे सिमultanously कोलैप्स हो जाता है।


Glutton node: उच्च out-degree, निम्न surge स्कोर। इसे खिलाया जाता है, और कुछ निकलता है, और नोड 'बिजी' होता है।

MOAD-0001 & MOAD-0005: एक कップलिंग केस

GHC केस

GHC के निर्भरता सॉल्वर में MOAD-0001 पैच से पहले: N=50,000 निर्भरताएँ 17 मिनट में बनती थीं। बाद में: 10 सेकंड। तेजी: 100×।


नीचे क्या होता है? हर क्य को 17-मिनट के बैच आगमन के अनुसार स्वयं को 17-मिनट की बैच प्राप्तियों के लिए तैयार करते हुए अब 100× अधिक पूरे निर्माण प्रति घंटा प्राप्त करते हैं। जो कि 60 निर्माण कलेक्टिव प्रति घंटा के लिए डिज़ाइन किए गए कैश को 6,000 कलेक्टिव प्राप्त करते हैं।


यह MOAD-0005 है: कैश स्टैम्पीड डेफेक्ट। क्योंकि कोई कैश नई आगमन दर के लिए पूर्व-प्रेमक नहीं था, इसलिए हर कैश की की जाती है।


यह कップलिंग संयोग नहीं है। यह संरचनात्मक है। किसी O(N²) → O(N) तेजी के साथ in-degree > 1 पैदा करता है। surge स्कोर 100 से अधिक होता है, MOAD-0005 कैंडिडेट।

डिस्क्लोज़र से पहले स्टेजिंग

एक निर्माण प्रणालम 1,000 पैकेज निर्भरता ग्राफ प्रति घंटा प्रोसेस करती है। आप MOAD-0001 को ग्राफ ट्रैवर्सल में पैच करते हैं, जो निर्माण समय को 60 मिनट से 30 सेकंड तक कम करता है - एक 120× तेजी। प्रणाली अब 120,000 ग्राफ प्रति घंटा प्रोसेस करती है।

इस पैच के बाद MOAD-0005 के लिए सबसे ज्यादा जोखिम वाले डाउनस्ट्रीम सिस्टम का नाम लें और आप क्या स्टेजिंग करेंगे इससे पहले कि इसे डिस्क्लोज़ करें।

बंद करने की स्थिति: जब रोकना चाहिए

बंद करने की स्थिति

एक पैच संतोषजनक बंद करने की स्थिति पूर्ण करता है - अर्थ: नहीं खोलें - जब चार स्थितियाँ एक साथ सही होती हैं:


1. पैच लाइव सिस्टम में रहता है (मेर्ज्ड, डिप्लॉयड)

2. नीचे के संरक्षक को डाउनस्ट्रीम प्रभाव का मालिक नहीं बनाया गया है

3. डाउनस्ट्रीम विफलता (MOAD-0005) अनसोल्व्ड

4. स्पीडअप >= 100×


सभी चार साथ = बच्चा रोये। मर्ज करने से पहले टीम को असाइन करें, नहीं तो बाद में।


एक संरक्षक के बिना नोड एक वर्कस्टेशन का काम करता है जिसमें कोई कर्मचारी नहीं होता है। काम एकत्र होता है। किसी ने कollapsed। पर्माकम्प्यूटर नियम: आप डिस्पैच एल्गोरिदम को ठीक नहीं कर सकते हैं जब तक कि ड्राइवरों को स्टेज नहीं किया जाता है। तीन ड्राइवर, तीन लाख लोग: एल्गोरिदम को अनब्लॉक करने से बजाय तेज़ डिलीवरी के बजाय, थंडरिंग हेर्ड ऑफ अनसर्व्ड रिक्वेस्ट्स पैदा होता है।

WALL-E: भूखंड और काम करने वाले

WALL-E मॉडल

पिक्सार के WALL-E ने फैक्टरी मॉडल की विफलता की सबसे स्पष्ट रूप में चित्रित किया है। घूस पर भूखंड, फ्रिक्शन के बिना खाने के लिए। काम करने वाले - WALL-E, EVE - स्टेशन पर मरते हुए फ़ीड को चलाने के लिए।


घूस नोड (हॉवर चेयर पर मानव) का अधिकतम आउट-डिग्री होता है: इसे उसे खिलाया जाता है, कुछ नहीं बनाता है। इसकी सर्ज स्कोर शून्य है - यह एक सिंक है। इसके लिए दर्द नहीं होता है क्योंकि इसके आउटपुट पर कुछ एकत्र नहीं होता है। बस खाता है।


काम करने वाले नोड (WALL-E) का अधिकतम बीचनेस होता है: सब कुछ इसके माध्यम से बहता है। यह सभी इनपुट को सोखता है। यह एकमात्र आउटपुट प्रदान करता है। अगर इसे एक तेज़ मॉडल द्वारा बदल दिया जाता है, तो इसकी सर्ज स्कोर प्रत्येक नीचे के क्यू को एक साथ समानांतर रूप से भर देता है।


WALL-E प्रणाली की विफलता घूस नहीं है। यह absent caretaker है: किसी को काम करने वाले स्टेशनों को संतुलित करने के लिए नियुक्त नहीं किया गया है। किसी ने एल्गोरिदम को चलाने से पहले क्षमता को स्टेज नहीं किया।

पिप मामला: प्री-डिस्क्लोजर चेकलिस्ट

आप पाइथन के पिप निर्भरता प्रारंभिक सारणी में MOAD-0001 का पता लगाते हैं। मापा स्पीडअप: 200×। पिप लगभग 400 मिलियन इंस्टॉल्स प्रति दिन पर चलता है। PyPI पैकेज सेव करता है।

इस पैच को खोलne से पहले, तीन चीजें पुष्टि या स्टेज करनी होंगी, और प्रत्येक को bypass करने पर क्या टूट जाता है, समझाएं।