2012-05-07 7 views
11

मैं करने के लिएशेड_getaffinity (2) और sched_setaffinity (2) का उपयोग कैसे करें। सी कार्यक्रम में उपयोग करने के लिए कोड का नमूना

भागो 16 प्रतियां समवर्ती प्रोसेसर के साथ pinning (प्रति कोर 2 प्रतियां)

भागो प्रोसेसर के साथ pinning (प्रति कोर 2 प्रतियां) कोशिश कर रहा हूँ 8 प्रतियां समवर्ती दे और कुछ समारोह के बाद फर्टस्ट प्रोसेसर कोर को फर्टस्ट कोर को फिसलने का कहना है कि फंक्शन 1 खत्म हो जाता है।

मुझे जिस समस्या का सामना करना पड़ रहा है वह है कि सबसे दूर प्रोसेसर का चयन कैसे करें।

कुछ मित्रों ने शेड_getaffinity (2) और sched_setaffinity का उपयोग करने का सुझाव दिया है लेकिन मुझे कोई अच्छा उदाहरण नहीं मिला है।

कृपया मदद करें।

उत्तर

14

कोर 7 पर वर्तमान प्रक्रिया चलाने की अनूमति sched_setaffinity उपयोग करने के लिए आप यह करते हैं:

cpu_set_t my_set;  /* Define your cpu_set bit mask. */ 
CPU_ZERO(&my_set);  /* Initialize it all to 0, i.e. no CPUs selected. */ 
CPU_SET(7, &my_set);  /* set the bit that represents core 7. */ 
sched_setaffinity(0, sizeof(cpu_set_t), &my_set); /* Set affinity of tihs process to */ 
                /* the defined mask, i.e. only 7. */ 

अधिक जानकारी के लिए http://linux.die.net/man/2/sched_setaffinity & http://www.gnu.org/software/libc/manual/html_node/CPU-Affinity.html देखें।

5

CPU_SETSIZE का उपयोग sched_ [set | get] affinity के लिए cpusetsize पैरामीटर के रूप में न करें। नाम भ्रामक हैं लेकिन यह गलत है। makro CPU_SETSIZE है (मैन 3 cpu_set उद्धृत) "अधिकतम CPU संख्या से अधिक मान जो cpu_set_t में संग्रहीत किया जा सकता है।" आपको

sched_setaffinity(0, sizeof(cpu_set_t), &my_set); 

का उपयोग करना होगा।

संबंधित मुद्दे