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