NUMA आर्किटेक्चर को समझना

Understanding Numa Architecture



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

I/O बसों का डिज़ाइन कंप्यूटर धमनियों का प्रतिनिधित्व करता है और यह महत्वपूर्ण रूप से निर्धारित करता है कि ऊपर सूचीबद्ध एकल घटकों के बीच डेटा का कितना और कितनी जल्दी आदान-प्रदान किया जा सकता है। उच्च प्रदर्शन कंप्यूटिंग (एचपीसी) के क्षेत्र में उपयोग किए जाने वाले घटकों के नेतृत्व में शीर्ष श्रेणी का नेतृत्व किया जाता है। 2020 के मध्य तक, एचपीसी के समकालीन प्रतिनिधियों में एनवीडिया टेस्ला और डीजीएक्स, राडेन इंस्टिंक्ट, और इंटेल ज़ीऑन फी जीपीयू-आधारित त्वरक उत्पाद हैं (उत्पाद तुलना के लिए [1,2] देखें)।







NUMA को समझना

गैर-यूनिफ़ॉर्म मेमोरी एक्सेस (NUMA) समकालीन मल्टीप्रोसेसिंग सिस्टम में उपयोग की जाने वाली साझा मेमोरी आर्किटेक्चर का वर्णन करता है। NUMA एक कंप्यूटिंग सिस्टम है जो कई एकल नोड्स से इस तरह से बना है कि सभी नोड्स के बीच समग्र मेमोरी साझा की जाती है: प्रत्येक सीपीयू को अपनी स्थानीय मेमोरी सौंपी जाती है और सिस्टम में अन्य सीपीयू से मेमोरी तक पहुंच सकती है [१२,७]।



NUMA एक चतुर प्रणाली है जिसका उपयोग कई केंद्रीय प्रसंस्करण इकाइयों (CPU) को कंप्यूटर पर उपलब्ध किसी भी मात्रा में कंप्यूटर मेमोरी से जोड़ने के लिए किया जाता है। एकल NUMA नोड्स एक स्केलेबल नेटवर्क (I/O बस) से जुड़े होते हैं जैसे कि एक CPU अन्य NUMA नोड्स से जुड़ी मेमोरी को व्यवस्थित रूप से एक्सेस कर सकता है।



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





हालाँकि, यह उस समय से अधिक समय लेता है जब वह CPU अपनी स्थानीय मेमोरी तक पहुँच रहा होता है। स्थानीय मेमोरी एक्सेस एक प्रमुख लाभ है, क्योंकि यह उच्च बैंडविड्थ के साथ कम विलंबता को जोड़ती है। इसके विपरीत, किसी अन्य सीपीयू से संबंधित मेमोरी तक पहुँचने में उच्च विलंबता और कम बैंडविड्थ प्रदर्शन होता है।

पीछे मुड़कर देखें: साझा-मेमोरी मल्टीप्रोसेसरों का विकास

फ्रैंक डेनेमैन [8] का कहना है कि आधुनिक सिस्टम आर्किटेक्चर वास्तव में यूनिफ़ॉर्म मेमोरी एक्सेस (UMA) की अनुमति नहीं देते हैं, भले ही ये सिस्टम विशेष रूप से उस उद्देश्य के लिए डिज़ाइन किए गए हों। सीधे शब्दों में कहें तो समानांतर कंप्यूटिंग का विचार प्रोसेसर का एक समूह होना था जो किसी दिए गए कार्य की गणना करने में सहयोग करता है, जिससे अन्यथा शास्त्रीय अनुक्रमिक गणना में तेजी आती है।



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

हालाँकि, बस-आधारित कंप्यूटर सिस्टम एक अड़चन के साथ आते हैं - सीमित मात्रा में बैंडविड्थ जो स्केलेबिलिटी की समस्याओं की ओर ले जाता है। सिस्टम में जितने अधिक CPU जोड़े जाते हैं, प्रति नोड उतनी ही कम बैंडविड्थ उपलब्ध होती है। इसके अलावा, जितने अधिक CPU जोड़े जाते हैं, बस उतनी ही लंबी होती है, और परिणामस्वरूप विलंबता जितनी अधिक होती है।

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

आज, प्रत्येक प्रोसेसर में एक साझा ऑन-चिप कैश और एक ऑफ-चिप मेमोरी के साथ कई कोर होते हैं और सर्वर के भीतर मेमोरी के विभिन्न हिस्सों में परिवर्तनीय मेमोरी एक्सेस लागत होती है।

डेटा एक्सेस की दक्षता में सुधार करना समकालीन सीपीयू डिज़ाइन के मुख्य लक्ष्यों में से एक है। प्रत्येक सीपीयू कोर एक छोटे स्तर के एक कैश (32 केबी) और एक बड़े (256 केबी) स्तर 2 कैश के साथ संपन्न था। विभिन्न कोर बाद में कई एमबी के स्तर 3 कैश को साझा करेंगे, जिसका आकार समय के साथ काफी बढ़ गया है।

कैश मिस से बचने के लिए - डेटा का अनुरोध करना जो कैश में नहीं है - सीपीयू कैश, कैशिंग संरचनाओं और संबंधित एल्गोरिदम की सही संख्या खोजने पर बहुत अधिक शोध समय व्यतीत होता है। स्नूप को कैशिंग करने के लिए प्रोटोकॉल के अधिक विस्तृत विवरण के लिए [8] देखें [4] और कैश कोहेरेंसी [3,5], साथ ही NUMA के पीछे डिजाइन विचार।

NUMA . के लिए सॉफ़्टवेयर समर्थन

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

विभिन्न यूनिक्स और यूनिक्स-संबंधित ऑपरेटिंग सिस्टम निम्नलिखित तरीकों से NUMA का समर्थन करते हैं (नीचे दी गई सूची [14] से ली गई है):

  • मूल सर्वर श्रृंखला के साथ 1240 सीपीयू से अधिक सीसीएनयूएमए आर्किटेक्चर के लिए सिलिकॉन ग्राफिक्स आईआरआईएक्स समर्थन।
  • Microsoft Windows 7 और Windows Server 2008 R2 ने 64 लॉजिकल कोर पर NUMA आर्किटेक्चर के लिए समर्थन जोड़ा।
  • Linux कर्नेल के संस्करण 2.5 में पहले से ही मूल NUMA समर्थन शामिल था, जिसे बाद के कर्नेल रिलीज़ में और बेहतर किया गया था। Linux कर्नेल का संस्करण 3.8 एक नया NUMA फाउंडेशन लेकर आया जिसने बाद के कर्नेल रिलीज़ [13] में अधिक कुशल NUMA नीतियों के विकास की अनुमति दी। लिनक्स कर्नेल का संस्करण 3.13 कई नीतियों को लेकर आया है, जिसका उद्देश्य एक प्रक्रिया को उसकी मेमोरी के पास रखना है, साथ में मामलों को संभालना, जैसे कि मेमोरी पेज को प्रक्रियाओं के बीच साझा करना, या पारदर्शी विशाल पृष्ठों का उपयोग करना; नई सिस्टम नियंत्रण सेटिंग्स NUMA संतुलन को सक्षम या अक्षम करने की अनुमति देती हैं, साथ ही साथ विभिन्न NUMA मेमोरी बैलेंसिंग मापदंडों का विन्यास [15]।
  • तार्किक समूहों की शुरूआत के साथ Oracle और OpenSolaris मॉडल NUMA आर्किटेक्चर दोनों।
  • फ्रीबीएसडी ने संस्करण 11.0 में प्रारंभिक NUMA आत्मीयता और नीति विन्यास जोड़ा।

कंप्यूटर साइंस एंड टेक्नोलॉजी, प्रोसीडिंग्स ऑफ द इंटरनेशनल कॉन्फ्रेंस (CST2016) पुस्तक में, निंग काई ने सुझाव दिया है कि NUMA आर्किटेक्चर का अध्ययन मुख्य रूप से हाई-एंड कंप्यूटिंग वातावरण और प्रस्तावित NUMA- जागरूक रेडिक्स पार्टिशनिंग (NaRP) पर केंद्रित था, जो प्रदर्शन को अनुकूलित करता है। व्यापार खुफिया अनुप्रयोगों में तेजी लाने के लिए NUMA नोड्स में साझा कैश की। जैसे, NUMA कुछ प्रोसेसर के साथ साझा मेमोरी (SMP) सिस्टम के बीच एक मध्य मैदान का प्रतिनिधित्व करता है [6]।

NUMA और लिनक्स

जैसा कि ऊपर बताया गया है, Linux कर्नेल ने संस्करण 2.5 से NUMA का समर्थन किया है। डेबियन जीएनयू/लिनक्स और उबंटू दोनों ही दो सॉफ्टवेयर पैकेज numactl [16] और numad [17] के साथ प्रक्रिया अनुकूलन के लिए NUMA समर्थन प्रदान करते हैं। numactl कमांड की मदद से, आप अपने सिस्टम में उपलब्ध NUMA नोड्स की सूची सूचीबद्ध कर सकते हैं [१८]:

# numactl --हार्डवेयर
उपलब्ध:2नोड्स(0-1)
नोड0सीपीयू:0 1 2 3 4 5 6 7 16 17 १८ 19 बीस इक्कीस 22 2. 3
नोड0आकार:८१५७एमबी
नोड0नि: शुल्क:88एमबी
नोड1सीपीयू:8 9 10 ग्यारह 12 १३ 14 पंद्रह 24 25 26 २७ 28 29 30 31
नोड1आकार:८१९१एमबी
नोड1नि: शुल्क:5176एमबी
नोड दूरी:
नोड0 1
0:10 बीस
1:बीस 10

नूमाटॉप इंटेल द्वारा विकसित एक उपयोगी उपकरण है जो रनटाइम मेमोरी इलाके की निगरानी और NUMA सिस्टम में प्रक्रियाओं का विश्लेषण करने के लिए विकसित किया गया है [१०,११]। उपकरण संभावित NUMA-संबंधित प्रदर्शन बाधाओं की पहचान कर सकता है और इसलिए NUMA सिस्टम की क्षमता को अधिकतम करने के लिए मेमोरी/सीपीयू आवंटन को फिर से संतुलित करने में मदद करता है। अधिक विस्तृत विवरण के लिए [९] देखें।

उपयोग परिदृश्य

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

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

निष्कर्ष

अंत में, NUMA आर्किटेक्चर स्केलेबिलिटी को संबोधित करता है, जो इसके मुख्य लाभों में से एक है। NUMA CPU में, एक नोड में उसी नोड पर मेमोरी तक पहुंचने के लिए एक उच्च बैंडविड्थ या कम विलंबता होगी (उदाहरण के लिए, स्थानीय CPU रिमोट एक्सेस के साथ ही मेमोरी एक्सेस का अनुरोध करता है; प्राथमिकता स्थानीय CPU पर होती है)। यदि डेटा विशिष्ट प्रक्रियाओं (और इस प्रकार प्रोसेसर) के लिए स्थानीयकृत हैं, तो यह मेमोरी थ्रूपुट में नाटकीय रूप से सुधार करेगा। नुकसान एक प्रोसेसर से दूसरे प्रोसेसर में डेटा ले जाने की उच्च लागत है। जब तक यह मामला बहुत बार नहीं होता है, तब तक एक NUMA सिस्टम अधिक पारंपरिक आर्किटेक्चर वाले सिस्टम से बेहतर प्रदर्शन करेगा।

लिंक और संदर्भ

  1. एनवीडिया टेस्ला बनाम रेडियन इंस्टिंक्ट की तुलना करें, https://www.itcentralstation.com/products/comparisons/nvidia-tesla_vs_radeon-instinct
  2. NVIDIA DGX-1 बनाम रेडियन इंस्टिंक्ट की तुलना करें, https://www.itcentralstation.com/products/comparisons/nvidia-dgx-1_vs_radeon-instinct
  3. कैश सुसंगतता, विकिपीडिया, https://en.wikipedia.org/wiki/Cache_coherence
  4. बस जासूसी, विकिपीडिया, https://en.wikipedia.org/wiki/Bus_snooping
  5. मल्टीप्रोसेसर सिस्टम में कैश समेकन प्रोटोकॉल, गीक्स के लिए गीक्स, https://www.geeksforgeeks.org/cache-coherence-protocols-in-multiprocessor-system /
  6. कंप्यूटर विज्ञान और प्रौद्योगिकी - अंतर्राष्ट्रीय सम्मेलन की कार्यवाही (सीएसटी2016), निंग काई (एड।), विश्व वैज्ञानिक प्रकाशन कंपनी पीटीई लिमिटेड, आईएसबीएन: 9789813146419
  7. डैनियल पी। बोवेट और मार्को सेसाती: लिनक्स कर्नेल को समझने में NUMA आर्किटेक्चर को समझना, तीसरा संस्करण, ओ'रेली, https://www.oreilly.com/library/view/understanding-the-linux/059605652/
  8. फ्रैंक डेनेमैन: NUMA डीप डाइव पार्ट 1: UMA से NUMA तक, https://frankdenneman.nl/2016/07/07/numa-deep-dive-part-1-uma-numa/
  9. कॉलिन इयान किंग: नुमाटॉप: एक NUMA सिस्टम मॉनिटरिंग टूल, http://smackerelofopinion.blogspot.com/2015/09/numatop-numa-system-monitoring-tool.html
  10. नुमाटॉप, https://github.com/intel/numatop
  11. डेबियन जीएनयू/लिनक्स के लिए पैकेज न्यूमटॉप, https://packages.debian.org/buster/numatop
  12. जोनाथन केहैयस: गैर-यूनिफ़ॉर्म मेमोरी एक्सेस/आर्किटेक्चर को समझना (NUMA), https://www.sqlskills.com/blogs/jonathan/understanding-non-uniform-memory-accessarchitectures-numa/
  13. कर्नेल 3.8 के लिए लिनक्स कर्नेल समाचार, https://kernelnewbies.org/Linux_3.8
  14. गैर-यूनिफ़ॉर्म मेमोरी एक्सेस (NUMA), विकिपीडिया, https://en.wikipedia.org/wiki/Non-uniform_memory_access
  15. Linux स्मृति प्रबंधन दस्तावेज़ीकरण, NUMA, https://www.kernel.org/doc/html/latest/vm/numa.html
  16. डेबियन जीएनयू/लिनक्स के लिए पैकेज numactl, https://packages.debian.org/sid/admin/numactl
  17. डेबियन जीएनयू/लिनक्स के लिए पैकेज numad, https://packages.debian.org/buster/numad
  18. कैसे पता करें कि NUMA कॉन्फ़िगरेशन सक्षम या अक्षम है या नहीं?, https://www.thegeekdiary.com/centos-rhel-how-to-find-if-numa-configuration-is-enabled-or-disabled/
  19. प्रोसेसर एफ़िनिटी, विकिपीडिया, https://en.wikipedia.org/wiki/Processor_affinity

धन्यवाद

लेखक इस लेख को तैयार करते समय उनके समर्थन के लिए गेरोल्ड रूप्प्रेच को धन्यवाद देना चाहते हैं।

लेखक के बारे में

Plaxedes Nehanda एक बहु-कुशल, स्व-चालित बहुमुखी व्यक्ति है, जो दक्षिण अफ्रीका के जोहान्सबर्ग में स्थित कई टोपी पहनता है, उनमें से एक इवेंट प्लानर, एक वर्चुअल असिस्टेंट, एक ट्रांसक्राइबर, साथ ही एक शौकीन चावला शोधकर्ता है।

प्रिंस के. नेहंडा जिम्बाब्वे के हरारे में पेफ्लो मीटरिंग में इंस्ट्रुमेंटेशन एंड कंट्रोल (मेट्रोलॉजी) इंजीनियर हैं।

फ्रैंक हॉफमैन सड़क पर काम करता है - अधिमानतः बर्लिन (जर्मनी), जिनेवा (स्विट्जरलैंड), और केप टाउन (दक्षिण अफ्रीका) से - एक डेवलपर, प्रशिक्षक और लिनक्स-उपयोगकर्ता और लिनक्स पत्रिका जैसी पत्रिकाओं के लेखक के रूप में। वह डेबियन पैकेज प्रबंधन पुस्तक के सह-लेखक भी हैं ( http://www.dpmb.org )