मैंने HFSC के बारे में मूल SIGCOMM '97 पोस्टस्क्रिप्ट पेपर पढ़ा, यह बहुत तकनीकी रूप से है, लेकिन मैं मूल अवधारणा को समझता हूं। एक रैखिक सेवा वक्र देने के बजाय (जैसा कि हर दूसरे शेड्यूलिंग एल्गोरिदम के साथ), आप उत्तल या अवतल सेवा वक्र निर्दिष्ट कर सकते हैं और इस प्रकार बैंडविड्थ और देरी को कम करना संभव है। हालाँकि, भले ही इस पेपर में शेड्यूलिंग एल्गोरिदम का उपयोग करने (वास्तविक समय और लिंक-शेयर) के लिए उल्लेख किया गया है, यह हमेशा केवल शेड्यूलिंग क्लास के एक वक्र का उल्लेख करता है (डिकॉउलिंग इस वक्र को निर्दिष्ट करके किया जाता है, केवल एक वक्र की आवश्यकता है )।
अब एचएफएससी को बीएसडी (ओपनबीएसडी, फ्रीबीएसडी, आदि) के लिए एएलटीक्यू शेड्यूलिंग फ्रेमवर्क का उपयोग करके लागू किया गया है और इसे टीसी शेड्यूलिंग फ्रेमवर्क (आईप्रूटे 2 के हिस्से) का उपयोग करके लिनक्स को लागू किया गया है । दोनों कार्यान्वयन में दो अतिरिक्त सेवा वक्र शामिल थे, जो मूल पेपर में नहीं थे ! एक वास्तविक समय सेवा वक्र और एक ऊपरी-सीमा सेवा वक्र। फिर, कृपया ध्यान दें कि मूल पेपर में दो शेड्यूलिंग एल्गोरिदम (वास्तविक समय और लिंक-शेयर) का उल्लेख है, लेकिन उस पेपर में दोनों एक ही सेवा वक्र के साथ काम करते हैं। बीएसडी और लिनक्स में वर्तमान में आपको कभी भी एक के लिए दो स्वतंत्र सेवा वक्र नहीं मिले हैं।
इससे भी बदतर, एएलटीक्यू के कुछ संस्करण एचएसएफसी के लिए एक अतिरिक्त कतार प्राथमिकता जोड़ना चाहते हैं (मूल पेपर में प्राथमिकता जैसी कोई चीज नहीं है)। मैंने पाया कि कई BSD HowTo ने इस प्राथमिकता सेटिंग का उल्लेख किया है (भले ही नवीनतम ALTQ रिलीज़ का मैन पेज HSFC के लिए ऐसा कोई पैरामीटर नहीं जानता है, इसलिए आधिकारिक तौर पर यह मौजूद भी नहीं है)।
यह सब मूल पेपर में वर्णित एल्गोरिदम की तुलना में एचएफएससी को और भी अधिक जटिल बनाता है और इंटरनेट पर बहुत सारे ट्यूटोरियल हैं जो अक्सर एक दूसरे के विपरीत होते हैं, एक दूसरे के विपरीत का दावा करता है। यह शायद मुख्य कारण है कि कोई भी वास्तव में यह नहीं समझता है कि एचएफएससी वास्तव में कैसे काम करता है। इससे पहले कि मैं अपने प्रश्न पूछूं, हमें किसी प्रकार के एक नमूना सेटअप की आवश्यकता है। मैं एक बहुत ही सरल का उपयोग करूँगा जैसा कि नीचे की छवि में देखा गया है:
alt text http://f.imagehost.org/0177/hfsc-test-setup.png
यहाँ कुछ प्रश्न दिए गए हैं जिनका मैं जवाब नहीं दे सकता क्योंकि ट्यूटोरियल एक दूसरे के विपरीत हैं:
मुझे एक वास्तविक समय वक्र की क्या आवश्यकता है? मान लें कि A1, A2, B1, B2 सभी 128 kbit / s लिंक-शेयर (किसी एक के लिए कोई वास्तविक समय वक्र नहीं है), तो उन सभी को 128 kbit / s मिलेगा यदि रूट को वितरित करने के लिए 512 kbit / s है (और A और B दोनों 256 kbit / s पाठ्यक्रम के हैं), है ना? मैं अतिरिक्त रूप से A1 और B1 को 128 kbit / s के साथ एक वास्तविक समय वक्र क्यों दूंगा? इसके लिए क्या अच्छा होगा? उन दो को उच्च प्राथमिकता देने के लिए? मूल कागज के अनुसार मैं एक वक्र का उपयोग करके उन्हें एक उच्च प्राथमिकता दे सकता हूं , यही एचएफएससी आखिरकार क्या है। दोनों वर्गों को [256kbit / s 20ms 128kbit / s] का वक्र प्रदान करने से, दोनों A2 और B2 की तुलना में दो बार स्वचालित रूप से प्राथमिकता देते हैं (अभी भी औसतन केवल 128 kbit / s प्राप्त कर रहे हैं)
क्या वास्तविक समय बैंडविड्थ लिंक-शेयर बैंडविड्थ की ओर गिनती करता है? जैसे अगर A1 और B1 दोनों में केवल 64kbit / s का वास्तविक समय और 64kbit / s का लिंक शेयर बैंडविड्थ है, तो इसका मतलब यह है कि एक बार जब वे वास्तविक समय के माध्यम से 64kbit / s सेवा कर रहे हैं, तो उनकी लिंक-शेयर आवश्यकता भी संतुष्ट है (वे हो सकते हैं) अतिरिक्त बैंडविड्थ प्राप्त करें, लेकिन इसे एक सेकंड के लिए अनदेखा करें) या इसका मतलब है कि उन्हें लिंक-शेयर के माध्यम से एक और 64 kbit / s मिलता है? तो क्या प्रत्येक वर्ग के पास रियल-टाइम प्लस लिंक-शेयर की बैंडविड्थ "आवश्यकता" है? या क्या किसी वर्ग को केवल वास्तविक समय के वक्र की तुलना में अधिक आवश्यकता होती है, यदि लिंक-शेयर वक्र वास्तविक समय वक्र की तुलना में अधिक है (वर्तमान लिंक-शेयर आवश्यकता निर्दिष्ट लिंक-शेयर आवश्यकता के बराबर है, जो पहले से ही प्रदान की गई वास्तविक समय बैंडविड्थ है कक्षा)?
क्या ऊपरी सीमा वक्र वास्तविक समय के लिए भी लागू है, केवल लिंक-शेयर या शायद दोनों के लिए? कुछ ट्यूटोरियल एक तरह से कहते हैं, कुछ दूसरे तरीके से कहते हैं। कुछ भी दावा करते हैं कि ऊपरी-सीमा वास्तविक-समय बैंडविड्थ + लिंक-शेयर बैंडविड्थ के लिए अधिकतम है? सच क्या है?
A2 और B2 को मानें तो 128 kbit / s हैं, क्या इससे कोई फर्क पड़ता है अगर A1 और B1 केवल 128 kbit / s लिंक-शेयर हैं, या 64 kbit / s वास्तविक-समय और 128 kbit / s-share-share, और यदि हैं , क्या अंतर है?
अगर मैं कक्षाओं की प्राथमिकताओं को बढ़ाने के लिए अलग-अलग वास्तविक समय वक्र का उपयोग करता हूं, तो मुझे "वक्र" की आवश्यकता क्यों होगी? रियल-टाइम एक फ्लैट मूल्य और लिंक-शेयर भी एक फ्लैट मूल्य क्यों नहीं है? दोनों वक्र क्यों हैं? मूल कागज में घटता की आवश्यकता स्पष्ट है, क्योंकि प्रति वर्ग उस तरह का एक ही गुण है। लेकिन अब, तीन विशेषताएँ (वास्तविक समय, लिंक-शेयर, और ऊपरी-सीमा) होने के लिए मुझे अभी भी प्रत्येक पर घटता की क्या आवश्यकता है? मैं वास्तविक समय और लिंक-साझा ट्रैफ़िक के लिए घटता आकार (औसत बैंडविड्थ नहीं, बल्कि उनकी ढलान) क्यों चाहूंगा ?
उपलब्ध छोटे दस्तावेज़ों के अनुसार, वास्तविक समय वक्र मानों को आंतरिक कक्षाओं (कक्षा ए और बी) के लिए पूरी तरह से अनदेखा किया जाता है, वे केवल लीफ क्लास (ए 1, ए 2, बी 1, बी 2) पर लागू होते हैं। यदि यह सच है, तो ALTQ HFSC नमूना कॉन्फ़िगरेशन ( 3.3 नमूना कॉन्फ़िगरेशन के लिए खोज ) आंतरिक कक्षाओं पर वास्तविक समय घटता क्यों सेट करता है और दावा करता है कि उन आंतरिक वर्गों की गारंटीकृत दर निर्धारित करता है? क्या यह पूरी तरह से व्यर्थ नहीं है? (नोट: pshare ALTQ में लिंक-शेयर वक्र सेट करता है और वास्तविक समय वक्र को grate करता है; आप इसे नमूना कॉन्फ़िगरेशन के ऊपर पैराग्राफ में देख सकते हैं)।
कुछ ट्यूटोरियल कहते हैं कि सभी वास्तविक समय घटता का योग लाइन गति के 80% से अधिक नहीं हो सकता है, दूसरों का कहना है कि यह लाइन की गति के 70% से अधिक नहीं होना चाहिए। कौन सा सही है या वे दोनों गलत हैं?
एक ट्यूटोरियल ने कहा कि आप सभी सिद्धांत भूल जाएंगे। कोई फर्क नहीं पड़ता कि चीजें वास्तव में कैसे काम करती हैं (शेड्यूलर्स और बैंडविड्थ वितरण), निम्नलिखित "सरलीकृत माइंड मॉडल" के अनुसार तीन घटों की कल्पना करें: वास्तविक समय की गारंटी बैंडविड्थ है जो इस वर्ग को हमेशा मिलेगी। लिंक-शेयर वह बैंडविड्थ है जो यह वर्ग पूरी तरह से संतुष्ट होना चाहता है, लेकिन संतुष्टि की गारंटी नहीं दी जा सकती है। यदि अतिरिक्त बैंडविड्थ है, तो कक्षा को संतुष्ट होने के लिए आवश्यक से अधिक बैंडविड्थ की पेशकश भी मिल सकती है, लेकिन यह कभी भी ऊपरी सीमा से अधिक का उपयोग नहीं कर सकता है। यह सब काम करने के लिए, सभी वास्तविक समय के बैंडविंड का योग लाइन गति के xx% से ऊपर नहीं हो सकता है (ऊपर प्रश्न देखें, प्रतिशत भिन्न होता है)। प्रश्न: क्या यह कमोबेश सटीक है या HSFC की कुल गलतफहमी है?
और अगर ऊपर की धारणा वास्तव में सटीक है, तो उस मॉडल में प्राथमिकता कहां है? उदाहरण के लिए हर वर्ग में एक वास्तविक समय बैंडविड्थ (गारंटीकृत), एक लिंक-शेयर बैंडविड्थ (गारंटी नहीं) और एक ऊपरी सीमा हो सकती है, लेकिन फिर भी कुछ वर्गों में अन्य वर्गों की तुलना में उच्च प्राथमिकता की आवश्यकता होती है। उस स्थिति में मुझे अभी भी किसी तरह प्राथमिकता देनी चाहिए, यहां तक कि उन कक्षाओं के वास्तविक समय के यातायात के बीच भी। क्या मैं घटता के ढलान से प्राथमिकता दूंगा? और यदि हां, तो कौन सा वक्र? वास्तविक समय वक्र? लिंक-शेयर वक्र? ऊपरी सीमा वक्र? उन सभी को? क्या मैं उन सभी को एक ही ढलान या एक अलग एक दे दूंगा और सही ढलान का पता कैसे लगाऊंगा?
मैंने अभी भी उम्मीद नहीं खोई है कि इस दुनिया में कम से कम ऐसे लोगों से भरा हुआ है जो वास्तव में एचएफएससी को समझते हैं और सभी सवालों के सही जवाब देने में सक्षम हैं। और जवाब में एक दूसरे का विरोध किए बिना ऐसा करना वास्तव में अच्छा होगा ;-)