लिनक्स पर, एक प्रक्रिया के लिए सीपीयू आत्मीयता को सेट करने के लिए सिस्टम कॉल है sched_setaffinity
। फिर कमांड लाइन पर इसे करने का taskset
टूल है।
उस एकल कार्यक्रम को केवल एक सीपीयू पर चलाने के लिए, मुझे लगता है कि आप कुछ ऐसा चाहते हैं
taskset -c 1 ./myprogram
( -c
स्विच के तर्क के रूप में किसी भी सीपीयू नंबर को सेट करें।)
यह एकल-प्रोसेसर सिस्टम के करीब होना चाहिए, जब तक कि आपकी अन्य प्रक्रियाएं उस माप की तुलना में बहुत अधिक नहीं चलती हैं, जिसे आप मापना चाहते हैं, या वे अन्य सीपीयू के लिए निर्धारित हो जाते हैं। यदि आप केवल एक ही प्रक्रिया में एक सीपीयू समर्पित करना चाहते हैं , और अन्य प्रक्रियाओं को उस सीपीयू पर चलने से रोकना चाहते हैं, तो आपको उनकी आत्मीयता भी निर्धारित करनी होगी।
मैं ठीक से कैसे करना है पता नहीं है। आपको init
यह सुनिश्चित करने के लिए बूट प्रक्रिया में बहुत जल्दी प्रोसेसर प्रोसेसर सेट करना होगा कि यह सिस्टम की सभी प्रक्रियाओं को विरासत में मिले। वर्कअराउंड के रूप में, आप taskset -c -p 0 $PID
सभी अन्य प्रक्रियाओं के लिए उन्हें केवल CPU # 0 पर चलने के लिए उपयोग कर सकते हैं ।
systemd भीCPUAffinity=
इकाई फाइलों में आत्मीयता नियंत्रित करने के लिए और देखते हैं एक जोड़े का सवाल unix.SE पर यहाँ डिफ़ॉल्ट आत्मीयता स्थापित करने पर है, लेकिन मैं एक अच्छा समाधान के साथ किसी भी नहीं मिला।
हालांकि के रूप में @Kamil Maciorowski टिप्पणी की है और superuser.com पर एक और सवाल के जवाब , की स्थापना isolcpus=1
पर गिरी कमांड लाइन है, जो कुछ तुम चाहते हो सकता है कि "सामान्य शेड्यूलिंग एल्गोरिदम से कि सीपीयू को अलग" चाहिए।