निष्पक्ष पंक्तियन: Difference between revisions
m (Arti Shah moved page निष्पक्ष कतार to निष्पक्ष पंक्तियन without leaving a redirect) |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|Scheduling algorithm for sharing of limited resources}} | {{short description|Scheduling algorithm for sharing of limited resources}} | ||
फेयर क्यूइंग कुछ [[शेड्यूलिंग (कंप्यूटिंग)]] और [[ नेटवर्क अनुसूचक ]]्स में उपयोग किए जाने वाले [[शेड्यूलिंग एल्गोरिदम]] का | फेयर क्यूइंग कुछ [[शेड्यूलिंग (कंप्यूटिंग)]] और [[ नेटवर्क अनुसूचक |नेटवर्क अनुसूचक]] ्स में उपयोग किए जाने वाले [[शेड्यूलिंग एल्गोरिदम]] का परिवार है। एल्गोरिदम को सीमित संसाधन साझा किए जाने पर [[निष्पक्षता माप]] प्राप्त करने के लिए डिज़ाइन किया गया है, उदाहरण के लिए बड़े पैकेट या प्रक्रियाओं के साथ प्रवाह को रोकने के लिए जो अन्य प्रवाह या प्रक्रियाओं की तुलना में अधिक थ्रूपुट या सीपीयू समय का उपभोग करके छोटी नौकरियां उत्पन्न करते हैं। | ||
कुछ उन्नत [[ प्रसार बदलना ]] और [[राउटर (कंप्यूटिंग)]] में फेयर क्यूइंग लागू किया गया है। | कुछ उन्नत [[ प्रसार बदलना |प्रसार बदलना]] और [[राउटर (कंप्यूटिंग)]] में फेयर क्यूइंग लागू किया गया है। | ||
== इतिहास == | == इतिहास == | ||
फेयर क्यूइंग शब्द जॉन नागले द्वारा 1985 में गढ़ा गया था, जब खराब व्यवहार करने वाले मेजबानों से नेटवर्क व्यवधान को कम करने के लिए स्थानीय क्षेत्र नेटवर्क और [[इंटरनेट]] के बीच गेटवे में [[राउंड-रॉबिन शेड्यूलिंग]] का प्रस्ताव दिया गया था।<ref name="RFC970"/><ref name="Nagle87">{{Cite journal | last1 = Nagle | first1 = J. B.| title = अनंत भंडारण के साथ ऑन पैकेट स्विच| doi = 10.1109/TCOM.1987.1096782 | journal = [[IEEE Transactions on Communications]]| volume = 35 | issue = 4 | pages = 435–438 | year = 1987 | citeseerx = 10.1.1.649.5380}}</ref><ref>{{citation |url=https://www.ietf.org/proceedings/01.pdf |title=Proceedings of the 16-17 January 1986 DARPA Gateway Algorithms and Data Structures Task Force |publisher=[[IETF]] |author=Phillip Gross |date=January 1986 |access-date=2015-03-04 |pages=5, 98 |quote=Nagle presented his "fair queuing" scheme, in which gateways maintain separate queues for each sending host. In this way, hosts with pathological implementations can not usurp more than their fair share of the gateway’s resources. This invoked spirited and interested discussion.}}</ref> | फेयर क्यूइंग शब्द जॉन नागले द्वारा 1985 में गढ़ा गया था, जब खराब व्यवहार करने वाले मेजबानों से नेटवर्क व्यवधान को कम करने के लिए स्थानीय क्षेत्र नेटवर्क और [[इंटरनेट]] के बीच गेटवे में [[राउंड-रॉबिन शेड्यूलिंग]] का प्रस्ताव दिया गया था।<ref name="RFC970"/><ref name="Nagle87">{{Cite journal | last1 = Nagle | first1 = J. B.| title = अनंत भंडारण के साथ ऑन पैकेट स्विच| doi = 10.1109/TCOM.1987.1096782 | journal = [[IEEE Transactions on Communications]]| volume = 35 | issue = 4 | pages = 435–438 | year = 1987 | citeseerx = 10.1.1.649.5380}}</ref><ref>{{citation |url=https://www.ietf.org/proceedings/01.pdf |title=Proceedings of the 16-17 January 1986 DARPA Gateway Algorithms and Data Structures Task Force |publisher=[[IETF]] |author=Phillip Gross |date=January 1986 |access-date=2015-03-04 |pages=5, 98 |quote=Nagle presented his "fair queuing" scheme, in which gateways maintain separate queues for each sending host. In this way, hosts with pathological implementations can not usurp more than their fair share of the gateway’s resources. This invoked spirited and interested discussion.}}</ref> | ||
1989 में एलन डेमर्स, [[श्रीनिवासन केशव]] और [[स्कॉट शेन्कर]] द्वारा | 1989 में एलन डेमर्स, [[श्रीनिवासन केशव]] और [[स्कॉट शेन्कर]] द्वारा बाइट-भारित संस्करण प्रस्तावित किया गया था, और यह पहले के नागल फेयर क्यूइंग एल्गोरिदम पर आधारित था।<ref>{{cite journal|last1=Demers|first1=Alan|last2=Keshav|first2=Srinivasan|last3=Shenker|first3=Scott|title=निष्पक्ष कतारबद्ध एल्गोरिदम का विश्लेषण और अनुकरण|journal=ACM SIGCOMM Computer Communication Review|date=1989|volume=19|issue=4|pages=1–12|doi=10.1145/75247.75248|doi-access=free}}</ref><ref>{{cite journal|last1=Demers|first1=Alan|last2=Keshav|first2=Srinivasan|last3=Shenker|first3=Scott|title=एक उचित कतारबद्ध एल्गोरिदम का विश्लेषण और सिमुलेशन|journal=Internetworking: Research and Experience|volume=1|pages=3–26|date=1990|url=http://people.csail.mit.edu/imcgraw/links/research/pubs/networks/WFQ.pdf}}</ref> बाइट-वेटेड फेयर क्यूइंग एल्गोरिदम का लक्ष्य प्रत्येक पैकेट के लिए सैद्धांतिक प्रस्थान तिथि की गणना करके बिट-प्रति-बिट मल्टीप्लेक्सिंग की नकल करना है। | ||
इस अवधारणा को आगे चलकर [[भारित निष्पक्ष कतार]] और यातायात को आकार देने की अधिक सामान्य अवधारणा में विकसित किया गया है, जहां सेवा लक्ष्यों की वांछित प्रवाह गुणवत्ता प्राप्त करने या कुछ प्रवाह में तेजी लाने के लिए कतारबद्ध प्राथमिकताओं को गतिशील रूप से नियंत्रित किया जाता है। | इस अवधारणा को आगे चलकर [[भारित निष्पक्ष कतार]] और यातायात को आकार देने की अधिक सामान्य अवधारणा में विकसित किया गया है, जहां सेवा लक्ष्यों की वांछित प्रवाह गुणवत्ता प्राप्त करने या कुछ प्रवाह में तेजी लाने के लिए कतारबद्ध प्राथमिकताओं को गतिशील रूप से नियंत्रित किया जाता है। | ||
Line 12: | Line 12: | ||
== सिद्धांत == | == सिद्धांत == | ||
फेयर क्यूइंग प्रति प्रवाह एक कतार (कंप्यूटर नेटवर्किंग) का उपयोग करती है और उन्हें रोटेशन में सेवाएं देती है, ताकि प्रत्येक प्रवाह संसाधनों का | फेयर क्यूइंग प्रति प्रवाह एक कतार (कंप्यूटर नेटवर्किंग) का उपयोग करती है और उन्हें रोटेशन में सेवाएं देती है, ताकि प्रत्येक प्रवाह संसाधनों का समान अंश प्राप्त कर सके।<ref name="RFC970">John Nagle: [http://tools.ietf.org/html/rfc970 "On packet switches with infinite storage,"] [[Request for Comments|RFC]] 970, [[IETF]], December 1985.</ref><ref name="Nagle87"/> | ||
पारंपरिक [[फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स)]] (एफआईएफओ) या [[प्राथमिकता कतार]] पर लाभ यह है कि | पारंपरिक [[फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स)]] (एफआईएफओ) या [[प्राथमिकता कतार]] पर लाभ यह है कि उच्च-डेटा-दर प्रवाह, जिसमें बड़े पैकेट या कई डेटा पैकेट शामिल हैं, लिंक क्षमता के अपने उचित हिस्से से अधिक नहीं ले सकता है। | ||
फेयर क्यूइंग का उपयोग राउटर, स्विच और सांख्यिकीय मल्टीप्लेक्सर्स में किया जाता है जो बफर (कंप्यूटर विज्ञान) से पैकेट अग्रेषित करते हैं। बफ़र एक कतार प्रणाली के रूप में काम करता है, जहां डेटा पैकेट अस्थायी रूप से प्रसारित होने तक संग्रहीत होते हैं। | फेयर क्यूइंग का उपयोग राउटर, स्विच और सांख्यिकीय मल्टीप्लेक्सर्स में किया जाता है जो बफर (कंप्यूटर विज्ञान) से पैकेट अग्रेषित करते हैं। बफ़र एक कतार प्रणाली के रूप में काम करता है, जहां डेटा पैकेट अस्थायी रूप से प्रसारित होने तक संग्रहीत होते हैं। | ||
Line 23: | Line 23: | ||
नेटवर्क शेड्यूलिंग के संदर्भ में, निष्पक्षता की कई परिभाषाएँ हैं। नागेल का लेख पैकेटों के राउंड-रॉबिन शेड्यूलिंग का उपयोग करता है,<ref name="Nagle87"/>जो पैकेटों की संख्या के संदर्भ में उचित है, लेकिन जब पैकेटों का आकार अलग-अलग होता है तो बैंडविड्थ के उपयोग पर नहीं। निष्पक्षता माप की कई औपचारिक धारणाएँ परिभाषित की गई हैं जिनमें [[अधिकतम-न्यूनतम निष्पक्षता]], सबसे खराब स्थिति वाली निष्पक्षता,<ref>{{Cite book | doi = 10.1109/INFCOM.1996.497885| chapter = WF/sup 2/Q: Worst-case fair weighted fair queueing| title = Proceedings of IEEE INFOCOM '96. Conference on Computer Communications| volume = 1| pages = 120| year = 1996| last1 = Bennett | first1 = J. C. R. | last2 = Hui Zhang| isbn = 978-0-8186-7293-4| s2cid = 17558577}}</ref> और निष्पक्षता सूचकांक.<ref>{{Cite book | doi = 10.1109/IPCCC.2002.995147| chapter = Variably weighted round robin queueing for core IP routers| title = Conference Proceedings of the IEEE International Performance, Computing, and Communications Conference (Cat. No.02CH37326)| pages = 159| year = 2002| last1 = Ito | first1 = Y.| last2 = Tasaka | first2 = S.| last3 = Ishibashi | first3 = Y.| isbn = 978-0-7803-7371-6| s2cid = 60787008}}</ref> | नेटवर्क शेड्यूलिंग के संदर्भ में, निष्पक्षता की कई परिभाषाएँ हैं। नागेल का लेख पैकेटों के राउंड-रॉबिन शेड्यूलिंग का उपयोग करता है,<ref name="Nagle87"/>जो पैकेटों की संख्या के संदर्भ में उचित है, लेकिन जब पैकेटों का आकार अलग-अलग होता है तो बैंडविड्थ के उपयोग पर नहीं। निष्पक्षता माप की कई औपचारिक धारणाएँ परिभाषित की गई हैं जिनमें [[अधिकतम-न्यूनतम निष्पक्षता]], सबसे खराब स्थिति वाली निष्पक्षता,<ref>{{Cite book | doi = 10.1109/INFCOM.1996.497885| chapter = WF/sup 2/Q: Worst-case fair weighted fair queueing| title = Proceedings of IEEE INFOCOM '96. Conference on Computer Communications| volume = 1| pages = 120| year = 1996| last1 = Bennett | first1 = J. C. R. | last2 = Hui Zhang| isbn = 978-0-8186-7293-4| s2cid = 17558577}}</ref> और निष्पक्षता सूचकांक.<ref>{{Cite book | doi = 10.1109/IPCCC.2002.995147| chapter = Variably weighted round robin queueing for core IP routers| title = Conference Proceedings of the IEEE International Performance, Computing, and Communications Conference (Cat. No.02CH37326)| pages = 159| year = 2002| last1 = Ito | first1 = Y.| last2 = Tasaka | first2 = S.| last3 = Ishibashi | first3 = Y.| isbn = 978-0-7803-7371-6| s2cid = 60787008}}</ref> | ||
=== भारित बंटवारे का सामान्यीकरण === | === भारित बंटवारे का सामान्यीकरण === | ||
प्रारंभिक विचार प्रत्येक प्रवाह को समान दर देता है। | प्रारंभिक विचार प्रत्येक प्रवाह को समान दर देता है। प्राकृतिक विस्तार में उपयोगकर्ता को प्रत्येक प्रवाह के लिए आवंटित बैंडविड्थ के हिस्से को निर्दिष्ट करने की अनुमति दी जाती है, जिससे भारित निष्पक्ष कतार और [[सामान्यीकृत प्रोसेसर साझाकरण]] होता है। | ||
== एक बाइट-भारित निष्पक्ष कतार एल्गोरिथ्म == | == एक बाइट-भारित निष्पक्ष कतार एल्गोरिथ्म == | ||
Line 37: | Line 35: | ||
=== एल्गोरिदम विवरण === | === एल्गोरिदम विवरण === | ||
वास्तविक समापन समय का मॉडलिंग, व्यवहार्य होते हुए भी, कम्प्यूटेशनल रूप से गहन है। हर बार जब | वास्तविक समापन समय का मॉडलिंग, व्यवहार्य होते हुए भी, कम्प्यूटेशनल रूप से गहन है। हर बार जब पैकेट को ट्रांसमिशन के लिए चुना जाता है और हर बार नया पैकेट किसी कतार में आता है, तो मॉडल को काफी हद तक पुन: गणना करने की आवश्यकता होती है। | ||
कम्प्यूटेशनल भार को कम करने के लिए, आभासी समय की अवधारणा पेश की गई है। प्रत्येक पैकेट के लिए समाप्ति समय की गणना इस वैकल्पिक नीरस रूप से बढ़ते वर्चुअल टाइमस्केल पर की जाती है। जबकि आभासी समय उस समय पैकेट के प्रसारण को पूरा करने का सटीक मॉडल नहीं बनाता है, यह उस क्रम को सटीक रूप से मॉडल करता है जिसमें पूर्ण-विशेषताओं वाले मॉडल के उद्देश्यों को पूरा करने के लिए प्रसारण होना चाहिए। वर्चुअल समय का उपयोग करते हुए, पहले से कतारबद्ध पैकेटों के लिए समाप्ति समय की पुन: गणना करना अनावश्यक है। हालाँकि मौजूदा पैकेटों के लिए समाप्ति समय, निरपेक्ष रूप से, संभावित रूप से नए आगमन से प्रभावित होता है, वर्चुअल टाइम लाइन पर समाप्ति समय अपरिवर्तित होता है - वर्चुअल टाइम लाइन किसी भी नए ट्रांसमिशन को समायोजित करने के लिए वास्तविक समय के संबंध में विकृत होती है। | कम्प्यूटेशनल भार को कम करने के लिए, आभासी समय की अवधारणा पेश की गई है। प्रत्येक पैकेट के लिए समाप्ति समय की गणना इस वैकल्पिक नीरस रूप से बढ़ते वर्चुअल टाइमस्केल पर की जाती है। जबकि आभासी समय उस समय पैकेट के प्रसारण को पूरा करने का सटीक मॉडल नहीं बनाता है, यह उस क्रम को सटीक रूप से मॉडल करता है जिसमें पूर्ण-विशेषताओं वाले मॉडल के उद्देश्यों को पूरा करने के लिए प्रसारण होना चाहिए। वर्चुअल समय का उपयोग करते हुए, पहले से कतारबद्ध पैकेटों के लिए समाप्ति समय की पुन: गणना करना अनावश्यक है। हालाँकि मौजूदा पैकेटों के लिए समाप्ति समय, निरपेक्ष रूप से, संभावित रूप से नए आगमन से प्रभावित होता है, वर्चुअल टाइम लाइन पर समाप्ति समय अपरिवर्तित होता है - वर्चुअल टाइम लाइन किसी भी नए ट्रांसमिशन को समायोजित करने के लिए वास्तविक समय के संबंध में विकृत होती है। | ||
Line 43: | Line 41: | ||
नए कतारबद्ध पैकेट के लिए वर्चुअल समाप्ति समय वर्चुअल प्रारंभ समय और पैकेट के आकार के योग द्वारा दिया जाता है। वर्चुअल प्रारंभ समय उसी कतार के पिछले वर्चुअल समाप्ति समय और वर्तमान तत्काल के बीच अधिकतम है। | नए कतारबद्ध पैकेट के लिए वर्चुअल समाप्ति समय वर्चुअल प्रारंभ समय और पैकेट के आकार के योग द्वारा दिया जाता है। वर्चुअल प्रारंभ समय उसी कतार के पिछले वर्चुअल समाप्ति समय और वर्तमान तत्काल के बीच अधिकतम है। | ||
सभी उम्मीदवार पैकेटों (यानी, सभी गैर-खाली प्रवाह कतारों के शीर्ष पर स्थित पैकेट) के आभासी समापन समय की गणना के साथ, निष्पक्ष कतार आभासी समापन समय की तुलना करती है और न्यूनतम | सभी उम्मीदवार पैकेटों (यानी, सभी गैर-खाली प्रवाह कतारों के शीर्ष पर स्थित पैकेट) के आभासी समापन समय की गणना के साथ, निष्पक्ष कतार आभासी समापन समय की तुलना करती है और न्यूनतम का चयन करती है। न्यूनतम वर्चुअल फिनिशिंग समय वाला पैकेट प्रसारित होता है। | ||
=== स्यूडोकोड === | === स्यूडोकोड === | ||
Line 51: | Line 49: | ||
| colspan="2" | | | colspan="2" | | ||
'''Shared variables''' | '''Shared variables''' | ||
const N // Nb of queues | |||
queues[1..N] // queues | |||
lastVirFinish[1..N] // last virtual finish instant | |||
|- | |- | ||
| | | | ||
'''receive'''(packet) | '''receive'''(packet) | ||
queueNumm:= chooseQueue(packet) | |||
queues[queueNum].enqueue(packet) | |||
updateTime(packet, queueNum) | |||
| | | | ||
'''updateTime'''(packet, queueNum) | '''updateTime'''(packet, queueNum) | ||
// virStart is the virtual start of service | |||
virStartr:= max(now(), lastVirFinish[queueNum]) | |||
packet.virFinishi:= packet.size + virStart | |||
lastVirFinish[queueNum]N:= packet.virFinish | |||
|- | |- | ||
| | | | ||
'''send()''' | '''send()''' | ||
queueNumm:= selectQueue() | |||
packete:= queues[queueNum].dequeue() | |||
'''return''' packet | |||
| | | | ||
'''selectQueue()''' | '''selectQueue()''' | ||
itt:= 1 | |||
minVirFinish = <math>\infty</math> | |||
'''while''' it ≤ N '''do''' | |||
queuee:= queues[it] | |||
'''if''' '''not''' queue.empty '''and''' queue.head.virFinish < minVirFinish '''then''' | |||
minVirFinish = queue.head.virFinish | |||
queueNumu:= it | |||
it := it + 1 | |||
'''return''' queueNum | |||
|} | |} | ||
फ़ंक्शन रिसीव() को हर बार | फ़ंक्शन रिसीव() को हर बार पैकेट प्राप्त होने पर निष्पादित किया जाता है, और सेंड() को हर बार तब निष्पादित किया जाता है जब भेजने के लिए पैकेट का चयन किया जाना चाहिए, ''यानी'' जब लिंक निष्क्रिय हो और कतारें खाली न हों। यह छद्म कोड मानता है कि फ़ंक्शन now() है जो वर्तमान वर्चुअल समय लौटाता है, और फ़ंक्शन choiceQueue() है जो उस कतार का चयन करता है जहां पैकेट संलग्न है। | ||
फ़ंक्शन चयन क्यू () न्यूनतम वर्चुअल समाप्ति समय के साथ कतार का चयन करता है। पठनीयता के लिए, यहां प्रस्तुत छद्म कोड | फ़ंक्शन चयन क्यू () न्यूनतम वर्चुअल समाप्ति समय के साथ कतार का चयन करता है। पठनीयता के लिए, यहां प्रस्तुत छद्म कोड रैखिक खोज करता है। लेकिन क्रमबद्ध सूची को बनाए रखने को लॉगरिदमिक समय में लागू किया जा सकता है, जिससे ''O(log(n))'' जटिलता उत्पन्न होती है, लेकिन अधिक जटिल कोड के साथ। | ||
== यह भी देखें == | == यह भी देखें == |
Revision as of 20:19, 5 October 2023
फेयर क्यूइंग कुछ शेड्यूलिंग (कंप्यूटिंग) और नेटवर्क अनुसूचक ्स में उपयोग किए जाने वाले शेड्यूलिंग एल्गोरिदम का परिवार है। एल्गोरिदम को सीमित संसाधन साझा किए जाने पर निष्पक्षता माप प्राप्त करने के लिए डिज़ाइन किया गया है, उदाहरण के लिए बड़े पैकेट या प्रक्रियाओं के साथ प्रवाह को रोकने के लिए जो अन्य प्रवाह या प्रक्रियाओं की तुलना में अधिक थ्रूपुट या सीपीयू समय का उपभोग करके छोटी नौकरियां उत्पन्न करते हैं।
कुछ उन्नत प्रसार बदलना और राउटर (कंप्यूटिंग) में फेयर क्यूइंग लागू किया गया है।
इतिहास
फेयर क्यूइंग शब्द जॉन नागले द्वारा 1985 में गढ़ा गया था, जब खराब व्यवहार करने वाले मेजबानों से नेटवर्क व्यवधान को कम करने के लिए स्थानीय क्षेत्र नेटवर्क और इंटरनेट के बीच गेटवे में राउंड-रॉबिन शेड्यूलिंग का प्रस्ताव दिया गया था।[1][2][3] 1989 में एलन डेमर्स, श्रीनिवासन केशव और स्कॉट शेन्कर द्वारा बाइट-भारित संस्करण प्रस्तावित किया गया था, और यह पहले के नागल फेयर क्यूइंग एल्गोरिदम पर आधारित था।[4][5] बाइट-वेटेड फेयर क्यूइंग एल्गोरिदम का लक्ष्य प्रत्येक पैकेट के लिए सैद्धांतिक प्रस्थान तिथि की गणना करके बिट-प्रति-बिट मल्टीप्लेक्सिंग की नकल करना है।
इस अवधारणा को आगे चलकर भारित निष्पक्ष कतार और यातायात को आकार देने की अधिक सामान्य अवधारणा में विकसित किया गया है, जहां सेवा लक्ष्यों की वांछित प्रवाह गुणवत्ता प्राप्त करने या कुछ प्रवाह में तेजी लाने के लिए कतारबद्ध प्राथमिकताओं को गतिशील रूप से नियंत्रित किया जाता है।
सिद्धांत
फेयर क्यूइंग प्रति प्रवाह एक कतार (कंप्यूटर नेटवर्किंग) का उपयोग करती है और उन्हें रोटेशन में सेवाएं देती है, ताकि प्रत्येक प्रवाह संसाधनों का समान अंश प्राप्त कर सके।[1][2]
पारंपरिक फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स) (एफआईएफओ) या प्राथमिकता कतार पर लाभ यह है कि उच्च-डेटा-दर प्रवाह, जिसमें बड़े पैकेट या कई डेटा पैकेट शामिल हैं, लिंक क्षमता के अपने उचित हिस्से से अधिक नहीं ले सकता है।
फेयर क्यूइंग का उपयोग राउटर, स्विच और सांख्यिकीय मल्टीप्लेक्सर्स में किया जाता है जो बफर (कंप्यूटर विज्ञान) से पैकेट अग्रेषित करते हैं। बफ़र एक कतार प्रणाली के रूप में काम करता है, जहां डेटा पैकेट अस्थायी रूप से प्रसारित होने तक संग्रहीत होते हैं।
आर की लिंक डेटा-दर के साथ, किसी भी समय एन सक्रिय डेटा प्रवाह (गैर-रिक्त कतार वाले) को आर/एन की औसत डेटा दर के साथ सेवित किया जाता है। थोड़े समय के अंतराल में डेटा दर इस मूल्य के आसपास उतार-चढ़ाव कर सकती है क्योंकि पैकेट क्रमिक रूप से बदले में वितरित किए जाते हैं।
निष्पक्षता
नेटवर्क शेड्यूलिंग के संदर्भ में, निष्पक्षता की कई परिभाषाएँ हैं। नागेल का लेख पैकेटों के राउंड-रॉबिन शेड्यूलिंग का उपयोग करता है,[2]जो पैकेटों की संख्या के संदर्भ में उचित है, लेकिन जब पैकेटों का आकार अलग-अलग होता है तो बैंडविड्थ के उपयोग पर नहीं। निष्पक्षता माप की कई औपचारिक धारणाएँ परिभाषित की गई हैं जिनमें अधिकतम-न्यूनतम निष्पक्षता, सबसे खराब स्थिति वाली निष्पक्षता,[6] और निष्पक्षता सूचकांक.[7]
भारित बंटवारे का सामान्यीकरण
प्रारंभिक विचार प्रत्येक प्रवाह को समान दर देता है। प्राकृतिक विस्तार में उपयोगकर्ता को प्रत्येक प्रवाह के लिए आवंटित बैंडविड्थ के हिस्से को निर्दिष्ट करने की अनुमति दी जाती है, जिससे भारित निष्पक्ष कतार और सामान्यीकृत प्रोसेसर साझाकरण होता है।
एक बाइट-भारित निष्पक्ष कतार एल्गोरिथ्म
यह एल्गोरिदम प्रतिस्पर्धी प्रवाह के बीच लिंक संसाधनों के बिटवाइज़ राउंड-रॉबिन साझाकरण की निष्पक्षता का अनुकरण करने का प्रयास करता है। हालाँकि, पैकेट-आधारित प्रवाह को पैकेट के अनुसार और क्रम में प्रसारित किया जाना चाहिए। बाइट-वेटेड फेयर क्यूइंग एल्गोरिदम प्रत्येक पैकेट के लिए समाप्ति समय को मॉडलिंग करके पैकेट के लिए ट्रांसमिशन ऑर्डर का चयन करता है जैसे कि उन्हें बिटवाइज़ राउंड रॉबिन प्रसारित किया जा सकता है। इस मॉडलिंग के अनुसार जल्द से जल्द समाप्ति समय वाला पैकेट ट्रांसमिशन के लिए अगला चुना जाता है।
एल्गोरिदम की जटिलता O(log(n)) है, जहां n कतारों/प्रवाहों की संख्या है।
एल्गोरिदम विवरण
वास्तविक समापन समय का मॉडलिंग, व्यवहार्य होते हुए भी, कम्प्यूटेशनल रूप से गहन है। हर बार जब पैकेट को ट्रांसमिशन के लिए चुना जाता है और हर बार नया पैकेट किसी कतार में आता है, तो मॉडल को काफी हद तक पुन: गणना करने की आवश्यकता होती है।
कम्प्यूटेशनल भार को कम करने के लिए, आभासी समय की अवधारणा पेश की गई है। प्रत्येक पैकेट के लिए समाप्ति समय की गणना इस वैकल्पिक नीरस रूप से बढ़ते वर्चुअल टाइमस्केल पर की जाती है। जबकि आभासी समय उस समय पैकेट के प्रसारण को पूरा करने का सटीक मॉडल नहीं बनाता है, यह उस क्रम को सटीक रूप से मॉडल करता है जिसमें पूर्ण-विशेषताओं वाले मॉडल के उद्देश्यों को पूरा करने के लिए प्रसारण होना चाहिए। वर्चुअल समय का उपयोग करते हुए, पहले से कतारबद्ध पैकेटों के लिए समाप्ति समय की पुन: गणना करना अनावश्यक है। हालाँकि मौजूदा पैकेटों के लिए समाप्ति समय, निरपेक्ष रूप से, संभावित रूप से नए आगमन से प्रभावित होता है, वर्चुअल टाइम लाइन पर समाप्ति समय अपरिवर्तित होता है - वर्चुअल टाइम लाइन किसी भी नए ट्रांसमिशन को समायोजित करने के लिए वास्तविक समय के संबंध में विकृत होती है।
नए कतारबद्ध पैकेट के लिए वर्चुअल समाप्ति समय वर्चुअल प्रारंभ समय और पैकेट के आकार के योग द्वारा दिया जाता है। वर्चुअल प्रारंभ समय उसी कतार के पिछले वर्चुअल समाप्ति समय और वर्तमान तत्काल के बीच अधिकतम है।
सभी उम्मीदवार पैकेटों (यानी, सभी गैर-खाली प्रवाह कतारों के शीर्ष पर स्थित पैकेट) के आभासी समापन समय की गणना के साथ, निष्पक्ष कतार आभासी समापन समय की तुलना करती है और न्यूनतम का चयन करती है। न्यूनतम वर्चुअल फिनिशिंग समय वाला पैकेट प्रसारित होता है।
स्यूडोकोड
Shared variables const N // Nb of queues queues[1..N] // queues lastVirFinish[1..N] // last virtual finish instant | |
receive(packet) queueNumm:= chooseQueue(packet) queues[queueNum].enqueue(packet) updateTime(packet, queueNum) |
updateTime(packet, queueNum) // virStart is the virtual start of service virStartr:= max(now(), lastVirFinish[queueNum]) packet.virFinishi:= packet.size + virStart lastVirFinish[queueNum]N:= packet.virFinish |
send() queueNumm:= selectQueue() packete:= queues[queueNum].dequeue() return packet |
selectQueue()
itt:= 1
minVirFinish =
while it ≤ N do
queuee:= queues[it]
if not queue.empty and queue.head.virFinish < minVirFinish then
minVirFinish = queue.head.virFinish
queueNumu:= it
it := it + 1
return queueNum
|
फ़ंक्शन रिसीव() को हर बार पैकेट प्राप्त होने पर निष्पादित किया जाता है, और सेंड() को हर बार तब निष्पादित किया जाता है जब भेजने के लिए पैकेट का चयन किया जाना चाहिए, यानी जब लिंक निष्क्रिय हो और कतारें खाली न हों। यह छद्म कोड मानता है कि फ़ंक्शन now() है जो वर्तमान वर्चुअल समय लौटाता है, और फ़ंक्शन choiceQueue() है जो उस कतार का चयन करता है जहां पैकेट संलग्न है।
फ़ंक्शन चयन क्यू () न्यूनतम वर्चुअल समाप्ति समय के साथ कतार का चयन करता है। पठनीयता के लिए, यहां प्रस्तुत छद्म कोड रैखिक खोज करता है। लेकिन क्रमबद्ध सूची को बनाए रखने को लॉगरिदमिक समय में लागू किया जा सकता है, जिससे O(log(n)) जटिलता उत्पन्न होती है, लेकिन अधिक जटिल कोड के साथ।
यह भी देखें
घाटा राउंड रोबिन की कमी
- निष्पक्षता माप
- सामान्यीकृत प्रोसेसर साझाकरण
- अधिकतम-न्यूनतम निष्पक्षता
- नेटवर्क शेड्यूलर
- सांख्यिकीय बहुसंकेतन
- भारित उचित कतार
- भारित राउंड रोबिन
संदर्भ
- ↑ 1.0 1.1 John Nagle: "On packet switches with infinite storage," RFC 970, IETF, December 1985.
- ↑ 2.0 2.1 2.2 Nagle, J. B. (1987). "अनंत भंडारण के साथ ऑन पैकेट स्विच". IEEE Transactions on Communications. 35 (4): 435–438. CiteSeerX 10.1.1.649.5380. doi:10.1109/TCOM.1987.1096782.
- ↑ Phillip Gross (January 1986), Proceedings of the 16-17 January 1986 DARPA Gateway Algorithms and Data Structures Task Force (PDF), IETF, pp. 5, 98, retrieved 2015-03-04,
Nagle presented his "fair queuing" scheme, in which gateways maintain separate queues for each sending host. In this way, hosts with pathological implementations can not usurp more than their fair share of the gateway's resources. This invoked spirited and interested discussion.
- ↑ Demers, Alan; Keshav, Srinivasan; Shenker, Scott (1989). "निष्पक्ष कतारबद्ध एल्गोरिदम का विश्लेषण और अनुकरण". ACM SIGCOMM Computer Communication Review. 19 (4): 1–12. doi:10.1145/75247.75248.
- ↑ Demers, Alan; Keshav, Srinivasan; Shenker, Scott (1990). "एक उचित कतारबद्ध एल्गोरिदम का विश्लेषण और सिमुलेशन" (PDF). Internetworking: Research and Experience. 1: 3–26.
- ↑ Bennett, J. C. R.; Hui Zhang (1996). "WF/sup 2/Q: Worst-case fair weighted fair queueing". Proceedings of IEEE INFOCOM '96. Conference on Computer Communications. Vol. 1. p. 120. doi:10.1109/INFCOM.1996.497885. ISBN 978-0-8186-7293-4. S2CID 17558577.
- ↑ Ito, Y.; Tasaka, S.; Ishibashi, Y. (2002). "Variably weighted round robin queueing for core IP routers". Conference Proceedings of the IEEE International Performance, Computing, and Communications Conference (Cat. No.02CH37326). p. 159. doi:10.1109/IPCCC.2002.995147. ISBN 978-0-7803-7371-6. S2CID 60787008.