2011-09-25 13 views
7

संभव डुप्लिकेट:
how to set CPU affinity of a particular pthread?विभिन्न कोरों पर विभिन्न धागे कैसे चलाएं?

मैं एक C++ प्रोग्राम लिख रहा हूँ, उबंटू में g ++ संकलक का उपयोग कर। मेरे प्रोग्राम में 4 धागे हैं और मेरे सीपीयू पर 4 कोर हैं। मैं यह सुनिश्चित करना चाहता हूं कि प्रत्येक धागा एक अलग कोर पर चलाया जाएगा। मैं शायद ही कभी pthread से परिचित हूँ।

+2

क्या मैं पूछ सकता हूं कि आप ऐसा क्यों करना चाहते हैं? यदि आप सुनिश्चित करते हैं कि ट्रेड एक-दूसरे को झुका नहीं देते हैं (इसलिए वे एक ही समय में चल सकते हैं), ओएस जब भी किसी भी कोर के पास खाली समय होता है तो उन्हें शेड्यूल करने का ख्याल रखेगा। – James

+0

@autopulated, वास्तव में कोर और सॉकेट एफ़िनिटी होने से प्रदर्शन को बहुत प्रभावित कर सकते हैं। कांटा/शामिल होने की कल्पना करें, आम तौर पर आप अतिरिक्त कोरों को मुफ्त कोर पर निर्धारित करना चाहते हैं, वास्तव में समानांतर में चलाने के लिए उसी पर शुरू नहीं होते हैं (जैसा आमतौर पर तेज़ होता है)। इसके अलावा आप इलाके का उपयोग करने के लिए उसी सॉकेट 1 पर शेड्यूल करना पसंद करेंगे। – bestsss

+0

लोकैलिटी एक अच्छा कारण है, लेकिन जैसा कि नीचे डेविड द्वारा इंगित किया गया है, परिणाम उतनी ही अच्छी नहीं हैं जितनी आप उम्मीद करेंगे। – James

उत्तर

13

ऐसा मत करो। सिस्टम को थ्रेड शेड्यूल करने दें। यदि आप धागे को अलग-अलग कोरों में जोड़ते हैं तो आप शेड्यूलर को बस बाधित करते हैं। जब आपका ऐप एकमात्र उपभोग करने वाला सीपीयू होता है, तो शेड्यूलर प्रत्येक थ्रेड को एक अलग कोर पर स्वाभाविक रूप से शेड्यूल करेगा।

+8

यह एक टिप्पणी है, उत्तर नहीं। यह शायद सही है, लेकिन यदि अभ्यास का विचार यह पता लगाना है कि धागे पिन किए जाने पर क्या होता है, तो आप सीखने को हतोत्साहित कर रहे हैं। जब आप उस पर हों, तो लिनक्स मैनुअल को जलाएं, ज्ञान खतरनाक है ;- –

+0

+1 आपकी उपयोगी राय के लिए – Saeed

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