sched_setaffinity()
कॉल का उपयोग कर CPU कोर के विशिष्ट सेट पर प्रक्रिया को पिन करना संभव है। मैनुअल पेज कहता है:क्या सीपीयू कोर या एसएमपी नोड को एक प्रक्रिया पिन करना कैश कोहेरेंसी यातायात को कम करने में मदद करता है?
Restricting a process to run on a single CPU also avoids the
performance cost caused by the cache invalidation that occurs when a process
ceases to execute on one CPU and then recommences execution on a different
CPU.
जो लगभग एक स्पष्ट चीज़ है (या नहीं?)। मेरे लिए यह स्पष्ट नहीं है कि यह है -
क्या एलडब्लूपी को एक विशिष्ट सीपीयू या एसएमपी नोड में पिन करना कैश कोहेरेंसी बस यातायात को कम करता है? उदाहरण के लिए, चूंकि एक प्रक्रिया पिन हो रही है, इसलिए अन्य CPUs को अपनी निजी मेमोरी को संशोधित नहीं करना चाहिए, इस प्रकार केवल उसी सीपीयू जो एक ही एसएमपी नोड का हिस्सा हैं, को कैश-सुसंगत रहना चाहिए।
मैं ज़ीऑन एक्स 5570 का उपयोग कर रहा हूं, जो कुछ हद तक NUMA है। मान लें कि मेरे पास 4 कोर प्रति सीपीयू और 4 सीपीयू हैं। सवाल यह है कि - यदि मैं 4 थ्रेड लगातार मेमोरी बाड़ के साथ कुछ व्यस्त-प्रतीक्षा कर रहा हूं, तो कैश अमान्यता अनुरोध अन्य CPUs पर भेजा जाएगा, लेकिन उन एलडब्लूपी को उसी सीपीयू के 4 कोर पर पिन किया गया है?यदि हां, तो कौन यह सुनिश्चित करता है कि अन्य सीपीयू सैद्धांतिक रूप से उसी स्मृति को संशोधित नहीं कर सकते हैं और इसलिए यह अनुकूलन लागू किया जा सकता है? मुझे पता है कि कुछ लोग डीएमए और डिवाइस ड्राइवरों के साथ ऐसा करते हैं, लेकिन उपयोगकर्ता-स्थान लिनक्स ऐप्स के बारे में कैसे? –
एक ही सीपीयू पर 4 कोर के लिए, मुझे नहीं लगता कि यह एक समस्या क्यों होनी चाहिए (एल 2 को ज़ीऑन 5xxx पर साझा किया जाता है, और सीपीयू जो कुछ भी करने की ज़रूरत है उसे एल 1 को सिंक में रखने के लिए बस ठीक है, मैं ठीक हूं इसके साथ किसी भी मुद्दे को कभी नहीं देखा है)। अन्य 3 सीपीयू में से एक पर कोर के लिए, स्निंग फ़िल्टर के रूप में स्नूप फ़िल्टर है। आप आम तौर पर व्यस्त नहीं रहना चाहते हैं-वैसे भी प्रतीक्षा करें (जो थोड़ा समझ में आता है), इसलिए प्रदर्शन के मुद्दों को किसी भी तरह से कोई फर्क नहीं पड़ता। – Damon
बेशक यह आपके आवेदन पर बहुत निर्भर करता है, लेकिन जब कोई व्यस्त रहता है, तो आमतौर पर लंबे कार्यों के बीच बहुत कम समय के लिए होता है, इसलिए आमतौर पर 16 धागे के साथ भी बहुत अधिक विवाद नहीं होता है। इस प्रकार, किसी भी कैश स्थिरता प्रभाव जो आप देख सकते हैं, यहां तक कि कल्पित रूप से, वास्तव में बहुत मायने रखता नहीं है। यदि वे करते हैं, तो आपको वास्तव में अपने अधिकांश समय कताई खर्च करना होगा, और फिर शुरुआत से कुछ गड़बड़ है। – Damon