एक एम्बेडेड सिस्टम पर (ग्लिब 2.6.1 का उपयोग कर एआरएम प्रोसेसर पर लिनक्स कर्नेल 2.6.28) मैं एक से अधिक थ्रेड वाले अनुप्रयोग चला रहा हूं। मैं उन धागे में से एक को दूसरों की तुलना में अधिक CPU समय प्राप्त करना चाहता हूं।pthreads के लिए अच्छा स्तर?
प्राथमिकताओं की स्थापना के लिए एक विकल्प \ _RR
(या SCHED
\ _FIFO
) SCHED
के साथ \ _setschedparam
pthread
उपयोग करने के लिए हो रहा है, फिर भी इस सूत्र काफी बहुत ज्यादा सीपीयू देता है (जब तक यह सोता है, इसे दूर अपने साथी से सभी सीपीयू खाती है धागे जो अभी भी SCHED_OTHER
का उपयोग कर रहे हैं)।
एक और विकल्प धागे का अच्छा स्तर स्थापित करेगा। हालांकि यह वही होगा जो मैं खोज रहा था (थ्रेड बस थोड़ा और सीपीयू प्राप्त करता है लेकिन अन्य धागे को भूखा नहीं कर सकता), मैं इसे सही तरीके से काम नहीं कर सकता। मैन पेजों के मुताबिक "धागे एक सामान्य अच्छे मूल्य को साझा नहीं करते हैं", जिसे मैं समझता हूं कि मैं एक ही प्रक्रिया में अलग-अलग धागे को अलग-अलग अच्छे मान सेट कर सकता हूं।
pid_t tid;
tid = syscall(SYS_gettid);
int ret = setpriority(PRIO_PROCESS, tid, priority);
यह है कि टीआईडी लगता है हालांकि सभी धागे के बीच एक ही है:
यहाँ मेरी कोड है। getpriority
पर कॉल करते समय भी थ्रेड के लिए व्यक्तिगत अच्छे-स्तर को सेट करने से सभी थ्रेड में नवीनतम सेट अच्छा स्तर वापस आ जाएगा। प्रदर्शन से यह संगत है (यानी एक ही कार्य के साथ थ्रेड ए और थ्रेड बी चलाएं, फिर ए टू -19 और बी से 1 9 सेट करें और दोनों एक ही समय में समाप्त हो जाएंगे)।
फिर भी, जब थ्रेड ए चलाते हैं, तो इसे -19 पर सेट करते हैं और फिर बी चलाते हैं और इसे +19 पर सेट करते हुए बी को पूर्ण शक्ति (ए से आगे बढ़ने का तरीका) पर चलाया जाएगा।
तो ऐसा लगता है कि एक धागा उस समय के अच्छे स्तर के सेट का उपयोग करेगा जब इसे बाद में बदलने का कोई तरीका नहीं है।
मैंने अधिक जानकारी या किसी भी प्रकार की पुष्टि के लिए पागल की तरह गुगल किया है, लेकिन जो कुछ मैंने पाया वह अब अस्पष्ट है। क्या किसी के पास लिनक्स (2.6.28, glibc 2.6.1) पर धागे के लिए कितने अच्छे स्तर हैं, इस पर कोई विवरण उपलब्ध है? और मैं संभवतः पहले से चल रहे थ्रेड के अच्छे स्तर को कैसे बदल सकता हूं?
मुझे पता है कि यह पार्टी के लिए थोड़ा देर हो चुकी है लेकिन ऐसा लगता है कि आप ऐसा करने की कोशिश कर रहे हैं जो मैं करने की कोशिश कर रहा हूं, और विचार करता हूं कि मैं यहां Google खोज के माध्यम से आया हूं, अन्य भी हो सकते हैं। मैं जानना चाहता था कि आपने अपने धागे कैसे बनाए? Pthreads के अनुसार, वे कहते हैं कि अगर सभी एनटीपीएल धागे के साथ बनाया जाता है तो सभी धागे को समान प्राथमिकता साझा करनी होती है। –