थ्रेड पूल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 5: Line 5:
तंतु पूल का आकार कृत्यों को निष्पादित करने के लिए संरक्षित में रखे तंतु  की संख्या है। यह सामान्यतः एप्लिकेशन का एक ट्यून करने योग्य पैरामीटर होता है, जिसे प्रोग्राम के  निष्पादन  को अनुकूलित करने के लिए समायोजित किया जाता है।<ref name="ACM, Thread pool size" /> निष्पादन  को अनुकूलित करने के लिए इष्टतम तंतु पूल आकार निर्धारित करना महत्वपूर्ण है।
तंतु पूल का आकार कृत्यों को निष्पादित करने के लिए संरक्षित में रखे तंतु  की संख्या है। यह सामान्यतः एप्लिकेशन का एक ट्यून करने योग्य पैरामीटर होता है, जिसे प्रोग्राम के  निष्पादन  को अनुकूलित करने के लिए समायोजित किया जाता है।<ref name="ACM, Thread pool size" /> निष्पादन  को अनुकूलित करने के लिए इष्टतम तंतु पूल आकार निर्धारित करना महत्वपूर्ण है।


प्रत्येक कृत्य के लिए एक नवीन धागा बनाने पर तंतु पूल का एक लाभ यह है कि तंतु निर्माण और विनाश उपरि पूल के प्रारंभिक निर्माण तक ही सीमित है, जिसके परिणामस्वरूप  ठीक  निष्पादन  ट्यूनिंग और  ठीक पद्धति [[स्थिरता मॉडल]] हो सकती है। समय के निबंधन से एक तंतु और उससे जुड़े संसाधनों को बनाना और नष्ट करना एक बहुमूल्य प्रक्रिया हो सकती है। संरक्षित में तंतु  की अत्यधिक संख्या, यद्यपि , मेमोरी को बर्बाद करती है, और रन करने योग्य तंतु  के बीच संदर्भ-स्विचिंग  निष्पादन  दंड को आमंत्रित करती है। किसी अन्य नेटवर्क होस्ट के लिए एक सॉकेट कनेक्शन, जिसे छोड़ने और फिर से स्थापित करने के लिए कई सीपीयू चक्र लग सकते हैं, इसे एक से अधिक नेटवर्क लेनदेन के दौरान रहने वाले धागे से जोड़कर अधिक कुशलता से बनाए रखा जा सकता है।
प्रत्येक कृत्य के लिए एक नवीन तंतु  बनाने पर तंतु पूल का एक लाभ यह है कि तंतु निर्माण और विनाश उपरि पूल के प्रारंभिक निर्माण तक ही सीमित है, जिसके परिणामस्वरूप  ठीक  निष्पादन  ट्यूनिंग और  ठीक पद्धति [[स्थिरता मॉडल]] हो सकती है। समय के निबंधन से एक तंतु और उससे जुड़े संसाधनों को बनाना और नष्ट करना एक बहुमूल्य प्रक्रिया हो सकती है। संरक्षित में तंतु  की अत्यधिक संख्या, यद्यपि , मेमोरी को अंतर्हित करती है, और चलाने योग्य तंतु  के बीच संदर्भ-स्विचिंग  निष्पादन  दंड का आह्वान करता है। किसी अन्य नेटवर्क होस्ट के लिए एक गर्तिका संपर्क, जिसे छोड़ने और फिर से स्थापित करने के लिए कई सीपीयू चक्र लग सकते हैं, इसे एक से अधिक नेटवर्क संचालन के समय रहने वाले तंतु  से जोड़कर अधिक दक्षतापूर्वक बनाए रखा जा सकता है।


तंतु स्टार्टअप समय को अलग रखकर भी तंतु पूल का उपयोग करना उपयोगी हो सकता है। तंतु पूल के कार्यान्वयन हैं जो काम को श्रेणीबद्ध करने के लिए तुच्छ बनाते हैं, समरूपता को नियंत्रित करते हैं और तंतु  को मैन्युअल रूप से प्रबंधित करते समय आसानी से किया जा सकता है।<ref>{{Cite web | url=https://doc.qt.io/qt-5/qthreadpool.html | title=QThreadPool Class &#124; Qt Core 5.13.1}}</ref><ref>{{Cite web | url=https://github.com/vit-vit/ctpl |title =GitHub - vit-vit/CTPL: Modern and efficient C++ Thread Pool Library.|website =[[GitHub]]|date = 2019-09-24}}</ref> इन मामलों में उपयोग के  निष्पादन  लाभ गौण हो सकते हैं।
तंतु प्रवर्तन समय को अलग रखकर भी तंतु पूल का उपयोग करना उपयोगी हो सकता है। तंतु पूल के कार्यान्वयन हैं जो कार्य को श्रेणीबद्ध करने के लिए नगण्य बनाते हैं, समरूपता को नियंत्रित करते हैं और तंतु  को हस्तचालन से प्रबंधित करते समय आसानी से किया जा सकता है।<ref>{{Cite web | url=https://doc.qt.io/qt-5/qthreadpool.html | title=QThreadPool Class &#124; Qt Core 5.13.1}}</ref><ref>{{Cite web | url=https://github.com/vit-vit/ctpl |title =GitHub - vit-vit/CTPL: Modern and efficient C++ Thread Pool Library.|website =[[GitHub]]|date = 2019-09-24}}</ref> इन स्थितियों में उपयोग के  निष्पादन  लाभ माध्यमिक हो सकते हैं।


सामान्यतः, एक तंतु पूल एक ही कंप्यूटर पर चलता है। हालाँकि, तंतु पूल वैचारिक रूप से [[सर्वर फार्म]] से संबंधित होते हैं जिसमें एक मास्टर प्रक्रिया, जो स्वयं एक तंतु पूल हो सकती है, समग्र थ्रूपुट को बढ़ाने के लिए विभिन्न कंप्यूटरों पर कार्यकर्ता प्रक्रियाओं को कृत्य वितरित करती है। इस दृष्टिकोण के लिए शर्मनाक रूप से समानांतर समस्याएं अत्यधिक उत्तरदायी हैं।{{cn|date=December 2016}}
सामान्यतः, एक तंतु पूल एक ही कंप्यूटर पर चलता है। यद्यपि, तंतु पूल धारणात्मक रूप से [[वेब सर्वर|सर्वर]] रूप से संबंधित होते हैं जिसमें एक मास्टर प्रक्रिया, जो स्वयं एक तंतु पूल हो सकती है, संपूर्ण संदेश प्रवाह को बढ़ाने के लिए विभिन्न कंप्यूटरों पर कार्यकर्ता प्रक्रियाओं को कृत्य वितरित करती है। इस दृष्टिकोण के लिए शर्मनाक रूप से समानांतर समस्याएं अत्यधिक उत्तरदायी हैं।{{cn|date=December 2016}}


प्रतीक्षा कृत्यों की संख्या के आधार पर किसी एप्लिकेशन के जीवनकाल के दौरान तंतु  की संख्या को गतिशील रूप से समायोजित किया जा सकता है। उदाहरण के लिए, एक [[वेब सर्वर]] तंतु  जोड़ सकता है यदि कई [[ वेब पृष्ठ ]] अनुरोध आते हैं और जब वे अनुरोध कम हो जाते हैं तो तंतु  को हटा सकते हैं।{{disputed inline|reason=This sounds more like pre-spawning than like a pool pattern.|date=December 2015}} एक बड़ा तंतु पूल होने की लागत संसाधन उपयोग में वृद्धि है। तंतु बनाने या नष्ट करने के लिए निर्धारित करने के लिए उपयोग किया जाने वाला एल्गोरिदम समग्र निष्पादन  को प्रभावित करता है:
प्रतीक्षा कृत्यों की संख्या के आधार पर किसी एप्लिकेशन के जीवनकाल के समय तंतु  की संख्या को गतिशील रूप से समायोजित किया जा सकता है। उदाहरण के लिए, एक [[वेब सर्वर]] तंतु  जोड़ सकता है यदि कई [[ वेब पृष्ठ ]] अनुरोध आते हैं और जब वे अनुरोध कम हो जाते हैं तो तंतु  को हटा सकते हैं।{{disputed inline|reason=This sounds more like pre-spawning than like a pool pattern.|date=December 2015}} एक बड़ा तंतु पूल होने की लागत संसाधन उपयोग में वृद्धि है। तंतु बनाने या नष्ट करने के लिए निर्धारित करने के लिए उपयोग किया जाने वाला एल्गोरिदम संपूर्ण निष्पादन  को प्रभावित करता है:
* बहुत सारे धागे बनाने से संसाधनों की बर्बादी होती है और अप्रयुक्त धागे बनाने में समय लगता है।
* बहुत सारे तंतु  बनाने से संसाधनों की अंतर्हित होती है और अप्रयुक्त तंतु  बनाने में समय लगता है।
* बहुत सारे धागों को नष्ट करने के लिए बाद में उन्हें फिर से बनाते समय अधिक समय की आवश्यकता होती है।
* बहुत सारे तंतु को नष्ट करने के लिए बाद में उन्हें फिर से बनाते समय अधिक समय की आवश्यकता होती है।
* तंतु  को बहुत धीरे-धीरे बनाने से क्लाइंट का  निष्पादन  खराब हो सकता है (लंबे समय तक प्रतीक्षा करें)।
* तंतु  को बहुत धीरे-धीरे बनाने से क्लाइंट का  निष्पादन  खराब हो सकता है (लंबे समय तक प्रतीक्षा करें)।
* तंतु  को बहुत धीरे-धीरे नष्ट करना संसाधनों की अन्य प्रक्रियाओं को भूखा कर सकता है।
* तंतु  को बहुत धीरे-धीरे नष्ट करना संसाधनों की अन्य प्रक्रियाओं को भूखा कर सकता है।

Revision as of 10:32, 8 March 2023

प्रतीक्षा कृत्यों (नीला) और पूर्ण कृत्यों (पीला) के साथ एक नमूना तंतु पूल (हरा बॉक्स)

कंप्यूटर प्रोग्रामिंग में, एक तंतु पूल एक कंप्यूटर प्रोग्राम में निष्पादन की संगामिति (कंप्यूटर विज्ञान) प्राप्त करने के लिए एक सॉफ्टवेयर डिजाइन पैटर्न है। प्रायः इसे प्रतिरूपित कर्मी या कार्यकर्ता-चालक दल मॉडल भी कहा जाता है,[1] एक तंतु पूल पर्यवेक्षण प्रोग्राम द्वारा समवर्ती संगणना निष्पादन के लिए आवंटित किए जाने वाले कृत्य (कंप्यूटर) के लिए प्रतीक्षा कर रहे कई तंतु (कंप्यूटर विज्ञान) को बनाए रखता है। तंतु के एक पूल को बनाए रखने से, मॉडल निष्पादन को बढ़ाता है और अल्पकालिक कृत्यों के लिए तंतु के निरंतर निर्माण और विनाश के कारण निष्पादन में विलंबता से बचता है।[2] उपलब्ध तंतु की संख्या प्रोग्राम के लिए उपलब्ध संगणना संसाधनों के लिए ट्यून की जाती है, जैसे कि निष्पादन पूरा होने के बाद एक समानांतर कृत्य श्रेणी।

निष्पादन

तंतु पूल का आकार कृत्यों को निष्पादित करने के लिए संरक्षित में रखे तंतु की संख्या है। यह सामान्यतः एप्लिकेशन का एक ट्यून करने योग्य पैरामीटर होता है, जिसे प्रोग्राम के निष्पादन को अनुकूलित करने के लिए समायोजित किया जाता है।[3] निष्पादन को अनुकूलित करने के लिए इष्टतम तंतु पूल आकार निर्धारित करना महत्वपूर्ण है।

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

तंतु प्रवर्तन समय को अलग रखकर भी तंतु पूल का उपयोग करना उपयोगी हो सकता है। तंतु पूल के कार्यान्वयन हैं जो कार्य को श्रेणीबद्ध करने के लिए नगण्य बनाते हैं, समरूपता को नियंत्रित करते हैं और तंतु को हस्तचालन से प्रबंधित करते समय आसानी से किया जा सकता है।[4][5] इन स्थितियों में उपयोग के निष्पादन लाभ माध्यमिक हो सकते हैं।

सामान्यतः, एक तंतु पूल एक ही कंप्यूटर पर चलता है। यद्यपि, तंतु पूल धारणात्मक रूप से सर्वर रूप से संबंधित होते हैं जिसमें एक मास्टर प्रक्रिया, जो स्वयं एक तंतु पूल हो सकती है, संपूर्ण संदेश प्रवाह को बढ़ाने के लिए विभिन्न कंप्यूटरों पर कार्यकर्ता प्रक्रियाओं को कृत्य वितरित करती है। इस दृष्टिकोण के लिए शर्मनाक रूप से समानांतर समस्याएं अत्यधिक उत्तरदायी हैं।[citation needed]

प्रतीक्षा कृत्यों की संख्या के आधार पर किसी एप्लिकेशन के जीवनकाल के समय तंतु की संख्या को गतिशील रूप से समायोजित किया जा सकता है। उदाहरण के लिए, एक वेब सर्वर तंतु जोड़ सकता है यदि कई वेब पृष्ठ अनुरोध आते हैं और जब वे अनुरोध कम हो जाते हैं तो तंतु को हटा सकते हैं।[disputed ] एक बड़ा तंतु पूल होने की लागत संसाधन उपयोग में वृद्धि है। तंतु बनाने या नष्ट करने के लिए निर्धारित करने के लिए उपयोग किया जाने वाला एल्गोरिदम संपूर्ण निष्पादन को प्रभावित करता है:

  • बहुत सारे तंतु बनाने से संसाधनों की अंतर्हित होती है और अप्रयुक्त तंतु बनाने में समय लगता है।
  • बहुत सारे तंतु को नष्ट करने के लिए बाद में उन्हें फिर से बनाते समय अधिक समय की आवश्यकता होती है।
  • तंतु को बहुत धीरे-धीरे बनाने से क्लाइंट का निष्पादन खराब हो सकता है (लंबे समय तक प्रतीक्षा करें)।
  • तंतु को बहुत धीरे-धीरे नष्ट करना संसाधनों की अन्य प्रक्रियाओं को भूखा कर सकता है।

यह भी देखें

संदर्भ

  1. Garg, Rajat P. & Sharapov, Ilya Techniques for Optimizing Applications - High Performance Computing Prentice-Hall 2002, p. 394
  2. Holub, Allen (2000). जावा थ्रेड्स को टैमिंग करना. Apress. p. 209.
  3. Yibei Ling; Tracy Mullen; Xiaola Lin (April 2000). "Analysis of optimal thread pool size". ACM SIGOPS Operating Systems Review. 34 (2): 42–55. doi:10.1145/346152.346320. S2CID 14048829.
  4. "QThreadPool Class | Qt Core 5.13.1".
  5. "GitHub - vit-vit/CTPL: Modern and efficient C++ Thread Pool Library". GitHub. 2019-09-24.


बाहरी संबंध