एक अनियंत्रित cpuset में थ्रेड्स के लिए शेड्यूलर प्राथमिकताओं और नीतियों के प्रभाव, यदि कोई हों, तो क्या हैं?


12

मेरे पास एक लिनक्स सिस्टम है जहाँ हमने cpu के दो cpu_exclusive cpusets, A और B बनाने के लिए उपयोग किया है, और जहाँ हमने सभी उपयोगकर्ता थ्रेड्स और सभी अनबाउंड कर्नेल थ्रेड को c cग्रुप से जुड़ी cgroup में माइग्रेट किया है। c। में चलने वाली चीजें A में शेड्यूलर नीतियाँ भिन्न हैं। और प्राथमिकताओं में भिन्नता है, और cpuset A में कई और थ्रेड चल रहे हैं, जबकि cpuset A में कोर हैं।

Cpuset B से जुड़ी कुछ छोटी संख्या में बहुत सक्रिय प्रक्रियाएँ भी हैं, जहाँ इन प्रक्रियाओं में उपयोगकर्ता थ्रेड की कुल संख्या कभी भी विशेष रूप से cpuset B में उपलब्ध कोर की संख्या से अधिक नहीं होती है। लक्ष्य यह है कि cpuset में चल रहे इन महत्वपूर्ण कार्यों को ढाल दिया जाए। मशीन पर अन्य गतिविधि से बी और प्रसंस्करण विलंबता को कम करने के लिए।

इस तरह के एक सेटअप में, cpuset B में चलने वाले उपयोगकर्ता थ्रेड की शेड्यूलिंग नीति / प्राथमिकता का कोई भी प्रभाव पड़ता है? अलग-अलग तरीके से बताया गया है: डिफ़ॉल्ट रूप से SCHED_FIFO या SCHED_RR से B cpuset थ्रेड्स की शेड्यूलिंग नीति बदलने से कोई परिणाम, अच्छा या बुरा होगा?

ऐसा लगता है कि उत्तर 'नहीं' होना चाहिए, क्योंकि अनुसूचक को cpuset B में चलने वाले प्रत्येक थ्रेड को अपने स्वयं के समर्पित कोर को निर्दिष्ट करने में सक्षम होना चाहिए, इसलिए प्राथमिकता या अनुसूची के लिए कुछ भी नहीं होगा, और इसलिए बी की नीति और सापेक्ष प्राथमिकता cpuset सूत्र मायने नहीं रखेगा। दूसरी ओर, चिंता करने के लिए बाध्य कर्नेल थ्रेड्स और 'शेड्यूलर डोमेन' पहलू हैं, और शायद अन्य चीजें जिन्हें मैंने नहीं माना है।

क्या किसी भी व्यावहारिक अर्थ में अति-विशिष्ट अनन्य cpuset मामले में चलने वाली थ्रेड्स की शेड्यूलिंग नीतियाँ और प्राथमिकताएँ?

जवाबों:


4

उपयोग की जाने वाली स्लाइस सीपीयू गहन नौकरियों के लिए मायने रखती है, जिनके लिए कैश दृढ़ता की आवश्यकता होती है, जब तक कि आप प्रत्येक पीआईडी ​​के लिए एक विशेष कोर को लॉक न करें। आप शेड्यूलर जवाबदेही को कम करते हुए, शेड्यूलर पॉलिसी SCHED_BATCH के साथ समय स्लाइस बढ़ा सकते हैं और कुछ मामलों में 300% तक के प्रदर्शन में सुधार कर सकते हैं। छोटे समय के स्लाइस का विपरीत प्रभाव SCHED_RR के साथ होता है (जो थ्रूपुट को कम करेगा लेकिन वास्तविक समय की जवाबदेही बढ़ाएगा)।

आप एक ही कमांड के रूप में सेट बी में सभी पीआईडी ​​के लिए विशिष्ट पीआईडी ​​की नीति निर्धारित करने के लिए शेड्यूलूल का उपयोग कर सकते हैं। इसका उपयोग विशिष्ट पीआईडी ​​को विशिष्ट कोर पर लॉक करने के लिए भी किया जा सकता है, जो कि इष्टतम समाधान होगा क्योंकि कैश की दृढ़ता अब समय के स्लाइस पर निर्भर नहीं करती है, लेकिन यह अधिक प्रयास लेता है क्योंकि आपको प्रत्येक पीआईडी ​​के लिए एक अलग शेड्यूलट कमांड चलाना होगा।


1

यदि प्रत्येक प्रक्रिया का अपना मूल है तो कोई प्राथमिकता नहीं है।

हालाँकि, यदि आप एक प्रक्रिया को निर्धारित करते हैं जिसमें हर 15 मिनट में 30 मिनट लगते हैं, तो आपको प्राथमिकता देने की आवश्यकता होगी क्योंकि प्रक्रिया ओवरलैपिंग शुरू हो जाएगी।

हालांकि कोई "सर्वश्रेष्ठ" शेड्यूलिंग नीति नहीं है।

वे वास्तव में इस बात पर निर्भर करते हैं कि आप क्या हासिल करना चाहते हैं। लेकिन शुरुआत में, मैं इसे SCHED_OTHER को छोड़ दूंगा, डिफ़ॉल्ट और कुछ समय के लिए निरीक्षण करने से पहले मैं और अधिक विशेषज्ञ सामान आज़माऊंगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.