जवाबों:
प्रक्रिया के अंदर, कॉल होगा sched_setaffinity()
, या pthreads सामान के लिए;pthread_setaffinity_np()
संबंधित नोट पर, यदि आप अपने प्रोग्राम के सीपीयू आत्मीयता के बारे में चिंता कर रहे हैं, तो यह ध्यान देने योग्य हो सकता है कि यह मेमोरी आवंटन कैसे कर रहा है। एक से अधिक नियंत्रक (यानी कई सीपीयू सॉकेट, प्रत्येक अपने स्वयं के साथ) से जुड़ी मेमोरी वाले सिस्टम में विभिन्न सीपीयू-मेमोरी जोड़े के बीच चर विलंबता और बैंडविड्थ होगा। आप NUMA आत्मीयता के साथ-साथ numactl
कमांड या सिस्टम कॉल का उपयोग करना चाहते हैं, जिस पर वह काम करता है। मैंने जिस एक कार्यक्रम पर काम किया, उसमें से 10% प्रदर्शन में सुधार हुआ।
taskset -c 1-3 ./a.out arg1 arg2
a.out
प्रोसेसर 1, 2 या 3 (शून्य आधारित) पर दिए गए तर्कों और आत्मीयता के साथ प्रक्रिया को लॉन्च करता है।
यहां एक न्यूनतम सी परीक्षण कार्यक्रम है जो इसे कार्रवाई में देखने के लिए इस्तेमाल किया जा सकता है: https://stackoverflow.com/questions/10490756/how-to-use-sched-getaffinity-and-sched-setaffinity-in-linux-from -c / 50117787 # 50117787
taskset -p -c 1,3 45678
बजाय होना चाहिएtaskset -c 1,3 -p 45678
; यानी,-c 1,3
यह एक मुखौटा विनिर्देश है और, जैसे,-p
और के बीच रखा जाना चाहिएpid
।