इंटेल कोर i7 के लिए NUMA को सक्षम करना


22

लिनक्स कर्नेल में, दस्तावेज़ CONFIG_NUMAकहता है:

Enable NUMA (Non Uniform Memory Access) support. 

he kernel will try to allocate memory used by a CPU on the  
local memory controller of the CPU and add some more
NUMA awareness to the kernel.

For 64-bit this is recommended if the system is Intel Core i7
(or later), AMD Opteron, or EM64T NUMA.

मेरे पास Intel Core i7 प्रोसेसर है, लेकिन AFAICT में केवल एक NUMA नोड है:

$ numactl --hardware
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7
node 0 size: 16063 MB
node 0 free: 15031 MB
node distances:
node   0 
  0:  10 

तो क्या होने का उद्देश्य है CONFIG_NUMA=y, जब i7 में केवल एक NUMA नोड है?

जवाबों:


13

मुझे लगता है कि यह चित्र पर्याप्त व्याख्या करता है:

                  यहाँ छवि विवरण दर्ज करें

  • सॉकेट या सुमा नोड स्मृति के लिए एक स्थानीय पहुंच के साथ कोर का एक संग्रह है। प्रत्येक सॉकेट में 1 या अधिक कोर होते हैं। ध्यान दें कि यह आवश्यक रूप से एक भौतिक सॉकेट को संदर्भित नहीं करता है, बल्कि मशीन की मेमोरी वास्तुकला के लिए है, जो आपके चिप विक्रेता पर निर्भर करेगा।

  • प्रोसेसर कोर (सीपीयू कोर, तार्किक प्रोसेसर) एक एकल प्रसंस्करण इकाई को संदर्भित करता है जो संगणना प्रदर्शन करने में सक्षम है।

तो ऊपर इंगित करता है कि NUMA आर्किटेक्चर का लाभ उठाने के लिए आपको मशीन में कई प्रोसेसर की आवश्यकता होगी।

आप कर्नेल में NUMA समर्थन संकलित कर सकते हैं और इसे एकल प्रोसेसर मशीन पर चला सकते हैं। यह एसएमपी सपोर्ट के समान है। इसे भी संकलित किया गया है लेकिन जब कर्नेल यह पता लगाता है कि सिस्टम में एकल प्रोसेसर है तो वह इसका उपयोग नहीं करेगा (इसे अक्षम करें)। वही NUMA के लिए है। आप संबंधित संदेशों के लिए dmesgकर्नेल रिंग बफर या /var/log/dmesgफ़ाइल देख सकते हैं :

NUMA - एकल प्रोसेसर (या NUMA अक्षम) X मल्टी प्रोसेसर:

No NUMA configuration found
NUMA: Allocated memnodemap from b000 - b440

एसएमपी - सिंगल प्रोसेसर एक्स मल्टी प्रोसेसर:

SMP: Allowing 1 CPUs, 0 hotplug CPUs
SMP: Allowing 32 CPUs, 0 hotplug CPUs

संदर्भ


2
@slm - आप क्या कहते हैं बनाता है भावना, लेकिन क्यों गिरी प्रलेखन (मेरे सवाल में उद्धृत) करता है कहते हैं कि मैं सक्षम होना चाहिए CONFIG_NUMAके लिए core i7?
user1968963

1
हसवेल के बाद से यह सच नहीं है कि NUMA 'सिंगल प्रोसेसर' (मतलब सिंगल सॉकेट) मशीन के लिए किसी काम का नहीं है। कुछ Haswell उत्पादों में यह दिखाया गया है कि इंटेल 'Die पर क्लस्टर' मोड को क्या कहते हैं। सिंगल सॉकेट प्रोसेसर में कई मेमोरी कंट्रोलर्स इंटीग्रेटेड होते हैं और इसलिए मेमोरी के लिए कई सारे रास्ते होते हैं, जिन्हें इस फीचर के साथ अलग-अलग NUMA रीजन के रूप में माना जा सकता है, जिनमें से सभी में एक सॉकेट होता है।
पॉल काहनी

16
For 64-bit this is recommended if the system is Intel Core i7
(or later), AMD Opteron, or EM64T NUMA.

सबसे पहले, ध्यान दें कि इंटेल कोर i7 सिर्फ एक मार्केटिंग पदनाम है, और वाक्यांश इंटेल कोर i7 (या बाद में) बहुत अस्पष्ट है। तो इसका क्या मतलब हो सकता है?

लिनक्स कर्नेल की Kconfigमदद से एक इंटेल कोर 7i का उल्लेख करने वाले टेक्स्ट एडिट , फिर इंटेल कोर i7 के लिए ठीक किए गए, 2008 के नवंबर में किए गए थे। कमिट लॉग पढ़ता है:

x86: update CONFIG_NUMA description
Impact: clarify/update CONFIG_NUMA text

CONFIG_NUMA description talk about a bit old thing.
So, following changes are better.

 o CONFIG_NUMA is no longer EXPERIMENTAL

 o Opteron is not the only processor of NUMA topology on x86_64 no longer,
   but also Intel Core7i has it.

यह तर्कसंगत रूप से केवल इंटेल कोर i7 सीपीयू को संदर्भित कर सकता है या उस समय तक प्रति युक्ति जारी किया जा सकता है। यह ब्लूमफील्ड प्रोसेसर होगा , जो नेहेलम माइक्रोआर्किटेक्चर पर आधारित है , जो CPU (जो AMD ने 2003 में Opteron / AMD64 के साथ किया था) पर मेमोरी कंट्रोलर को स्थानांतरित कर दिया और QuickPath Interconnect ( QPI (AMD के हाइपरट्रांसपोर्ट के लिए लटकन के रूप में) को पेश किया। सीपीयू / सीपीयू और सीपीयू / आईओएच (आईओ हब, एक्स-नॉर्थब्रिज) इंटरकनेक्शन के लिए।

ब्लूमडेल i7 CPU नए कोर i {3,5,7} नामकरण योजना में पहली प्रविष्टियां थीं । इसलिए जब लिनक्स डॉक पाठ लिखा गया था, तो i7 ने i5 के विपरीत कोर i7 को विशेष रूप से संदर्भित नहीं किया (पहली बार 09-2009 में) या i3 (01/2010 में पहली बार), लेकिन नए Nehalem के साथ सभी संभावनाएं इसकी एकीकृत मेमोरी कंट्रोलर और QPI है।

I7 पर 11/2008 से इंटेल प्रेस रिलीज़ है ( इंटेल ने सबसे तेजी से प्रोसेसर ग्रह पर लॉन्च किया ) जिसमें कहा गया है कि कोर आई 7 प्रोसेसर पिछले इंटेल "एक्सट्रीम" प्लेटफार्मों की मेमोरी बैंडविड्थ को दोगुना कर देता है , लेकिन एनयूएमए का उल्लेख बिल्कुल नहीं करता है। ।

कारण, मुझे लगता है, कि NUMA डेस्कटॉप पीसी के लिए मायने नहीं रखता है, यहां तक ​​कि "चरम" के लिए भी नहीं।

NUMA महंगे सर्वरों के लिए मायने रखता है जिनके पास समर्पित भौतिक मेमोरी एक्सेस लेन (न केवल एक मेमोरी कंट्रोलर) के साथ कई सीपीयू सॉकेट (न केवल एक सॉकेट पर कई कोर) हैं, जिससे प्रत्येक सीपीयू की अपनी समर्पित स्थानीय मेमोरी है, जो इसके लिए "करीब" है अन्य CPU की मेमोरी से। (थिंक 8 सॉकेट, 64 कोर, 256 जीबी रैम।) NUMA का अर्थ है कि एक सीपीयू रिमोट मेमोरी (किसी अन्य सीपीयू की स्थानीय मेमोरी) को अपनी स्थानीय मेमोरी के अलावा, उच्च लागत पर भी एक्सेस कर सकता है। NUMA SMP जैसी साझा मेमोरी आर्किटेक्चर का संश्लेषण है, जहां सभी मेमोरी सभी कोर के लिए समान रूप से उपलब्ध है, और एक वितरित मेमोरी आर्किटेक्चर जैसे MPP (बड़े पैमाने पर समानांतर प्रसंस्करण), जो प्रत्येक नोड को मेमोरी का एक समर्पित ब्लॉक देता है। यह एमपीपी है, लेकिन यह एप्लिकेशन को एसएमपी जैसा दिखता है।

डेस्कटॉप मदरबोर्ड में दोहरी सॉकेट नहीं होते हैं और चरम डेस्कटॉप i7 संस्करणों सहित इंटेल डेस्कटॉप सीपीयू में दोहरे सॉकेट कॉन्फ़िगरेशन के लिए अतिरिक्त QPI लिंक का अभाव होता है।

NUMA के लिए QPI कैसे प्रासंगिक है, यह देखने के लिए विकिपीडिया QPI लेख देखें।

एकल-प्रोसेसर मदरबोर्ड पर इसके सरलतम रूप में, IO हब से प्रोसेसर को जोड़ने के लिए एक एकल QPI का उपयोग किया जाता है (जैसे, Intel Core i7 को X58 से कनेक्ट करने के लिए)। वास्तुकला के अधिक जटिल उदाहरणों में, अलग-अलग QPI लिंक जोड़े एक या एक से अधिक प्रोसेसर और एक या एक से अधिक IO हब या मदरबोर्ड पर एक नेटवर्क में रूटिंग हब को कनेक्ट करते हैं, जिससे सभी घटकों को नेटवर्क के माध्यम से अन्य घटकों का उपयोग करने की अनुमति मिलती है। HyperTransport के साथ के रूप में, QuickPath आर्किटेक्चर मानता है कि प्रोसेसर में एकीकृत मेमोरी कंट्रोलर होंगे, और एक गैर-समान मेमोरी एक्सेस (NUMA) आर्किटेक्चर को सक्षम करता है।

[...]

हालाँकि कुछ हाई-एंड कोर i7 प्रोसेसर QPI को उजागर करते हैं, अन्य "मुख्यधारा" नेहेल डेस्कटॉप और सिंगल-सॉकेट बोर्डों के लिए मोबाइल प्रोसेसर जैसे (LGA 1156 Core i3, Core i5 और Lynfield / Clarksfield और उत्तराधिकारी परिवारों से अन्य कोर i7 प्रोसेसर) QPI को बाहरी रूप से उजागर न करें, क्योंकि ये प्रोसेसर बहु-सॉकेट सिस्टम में भाग लेने के लिए अभिप्रेत नहीं हैं। हालाँकि, QPI का उपयोग इन चिप्स पर आंतरिक रूप से किया जाता है […]

मल्टी-सॉकेट सर्वर बोर्ड पर Intel Nehalem CPU जिस तरह से गैर-स्थानीय मेमोरी एक्सेस बनाता है वह QPI के माध्यम से होता है। NUMA पर लेख में भी :

Intel ने 2007 में अपने Nehalem और Tukwila CPUs के साथ अपने x86 और Itanium सर्वर के लिए NUMA संगतता की घोषणा की। दोनों सीपीयू परिवार एक साझा चिपसेट साझा करते हैं; इंटरकनेक्शन को इंटेल क्विक पाथ इंटरकनेक्ट (QPI) कहा जाता है। हाइपरट्रांसपोर्ट का उपयोग करते हुए, AMD ने अपने Opteron प्रोसेसर (2003) के साथ NUMA को लागू किया।

यह रिपोर्ट देखने के लिए 11/2008 से वापस देखें कि इंटेल ने i7 पर दो QPI लिंक में से एक को निष्क्रिय कर दिया है, इस प्रकार दोहरे सॉकेट कॉन्फ़िगरेशन को अक्षम कर रहा है, जहां NUMA लागू होता है:

नेहेलम का यह पहला, हाई-एंड डेस्कटॉप कार्यान्वयन कोड-नाम ब्लूमफील्ड है, और यह अनिवार्य रूप से एक ही सिलिकॉन है जिसे अंततः दो-सॉकेट सर्वर में जाना चाहिए। नतीजतन, ब्लूमफील्ड चिप्स जहाज पर दो क्यूपीआई लिंक के साथ आते हैं, जैसा कि ऊपर दिए गए शॉट को इंगित करता है। हालाँकि, दूसरा QPI लिंक अप्रयुक्त है। इस आर्किटेक्चर पर आधारित 2P सर्वरों में, दूसरा इंटरकनेक्ट दो सॉकेट्स को लिंक करेगा, और इसके ऊपर, सीपीयू कैश कोहेरेंसी मैसेजेस (एक नए प्रोटोकॉल का उपयोग करके) और डेटा (मेमोरी सबसिस्टम NUMA होगा) के साथ साझा करेंगे। Opteron को।

इसलिए मैं अपने Google शोध परिणामों से संबंधित आपके प्रश्न से भटक रहा हूं ... आप पूछ रहे हैं कि 2008 के आखिर में लिनक्स डॉक्स ने इसे चालू करने की सिफारिश क्यों की? यकीन नहीं होता कि इस सवाल का सही उत्तर है ... हमें डॉक्टर लेखक से पूछना होगा। NUMA चालू करने से डेस्कटॉप CPU उपयोगकर्ताओं को लाभ नहीं होता है, लेकिन मल्टी सॉकेट उपयोगकर्ताओं की मदद करते हुए, उन्हें या तो चोट नहीं पहुंचाता है, तो क्यों नहीं? यह औचित्य हो सकता था। पाया कि आर्क लिनक्स ट्रैकर पर NUMA को अक्षम करने के बारे में चर्चा में परिलक्षित हुआ ( FS # 31187 - [linux] - कॉन्फ़िगर फ़ाइलों से NUMA को अक्षम करें )।

डॉक्टर लेखक ने नेहल वास्तुकला की NUMA क्षमता के बारे में भी सोचा होगा, जब डॉक्टर को लिखा गया था, 11/2008 कोर i7 प्रोसेसर (920, 940, 965) केवल प्रतिनिधि थे; पहला नेहेलम चिप्स, जिसके लिए NUMA ने वास्तव में समझदारी दिखाई होगी, संभवतः क्यूई / 2009 के Xeon प्रोसेसर हैं, जैसे कि डुअल QPI लिंक जैसे Xeon E5520


2

मुझे लगता है कि यदि आप --showस्विच का उपयोग करते हैं तो यह अधिक समझ में आता है:

$ numactl --show
policy: default
preferred node: current
physcpubind: 0 1 2 3 
cpubind: 0 
nodebind: 0 
membind: 0 

तो आप इस तरह से भौतिक चिकित्सक के उपयोग को नियंत्रित कर सकते हैं:

$ numactl --physcpubind=+0-2 myapp

यह myappपहले 2 सीपीयू कोर के लिए आवेदन को सीमित करेगा । मेरा सिस्टम 4 कोर के साथ एक i5 है।

संदर्भ


2

मैं अपने डेस्कटॉप पीसी के लिए एक ही चीज पर शोध कर रहा हूं, जबकि मैं अपने कर्नेल का निर्माण कर रहा हूं। मैंने बहुत शोध के बाद NUMA को अक्षम करने का निर्णय लिया है। मेरा सीपीयू एक कोर i7 3820 है जिसमें एचटी के साथ 8 प्रोसेसर हैं। इस पृष्ठ ने मेरे निर्णय में आने में मदद की।

कॉन्फ़िगर फ़ाइलों से NUMA को अक्षम करें

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


1

एक सीपीयू के साथ एक पीसी में, एक NUMA पूरी तरह से बेकार है। बेझिझक इसे अपने कर्नेल में अक्षम करें।

आप हमेशा कार्यक्षेत्र (1) द्वारा सीपीयू बॉन्डिंग को नियंत्रित कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.