मैं अलग-अलग सीपीयू के सेट पर बहु-थ्रेडेड बेंचमार्क चलाने की कोशिश कर रहा हूं। एक लंबी कहानी को छोटा करने के लिए, मैंने शुरुआत में कोशिश की isolcpus
और taskset
, लेकिन समस्याओं को मारा । अब मैं cgroups / csets के साथ खेल रहा हूं।
मुझे लगता है कि "सरल" cset shield
उपयोग-मामले को अच्छी तरह से काम करना चाहिए। मेरे पास 4 कोर हैं, इसलिए मैं बेंचमार्किंग के लिए कोर 1-3 का उपयोग करना चाहूंगा (मैंने इन कोर को एडाप्टिव टिक्स मोड में होने के लिए कॉन्फ़िगर किया है), फिर कोर 0 का उपयोग बाकी सब के लिए किया जा सकता है।
यहाँ ट्यूटोरियल के बाद , यह उतना ही सरल होना चाहिए:
$ sudo cset shield -c 1-3
cset: --> shielding modified with:
cset: "system" cpuset of CPUSPEC(0) with 105 tasks running
cset: "user" cpuset of CPUSPEC(1-3) with 0 tasks running
तो अब हमारे पास एक "ढाल" है जो अलग-थलग है (उपयोगकर्ता परेशान) और कोर 0 सब कुछ (सिस्टम परेशान) के लिए है।
ठीक है, अब तक अच्छा लग रहा है। अब देखते हैं htop
। प्रक्रियाओं को CPU 0 पर माइग्रेट किया जाना चाहिए:
है ना? कुछ प्रक्रियाओं को परिरक्षित कोर पर चलने के रूप में दिखाया गया है। इस मामले को समाप्त करने के लिए कि htop में बग है, मैंने taskset
ढाल में होने वाली प्रक्रिया के आत्मीयता के निरीक्षण का उपयोग करने का भी प्रयास किया ।
शायद वो काम अमोघ थे? चलिए CPU3 पर चलने वाली एक अनियंत्रित प्रक्रिया को दिखाते हैं (जो कि ढाल में होनी चाहिए) htop
और देखें कि क्या यह सिस्टम cgroup में इसके अनुसार दिखाई देता है cset
:
$ cset shield -u -v | grep 864
root 864 1 Soth [gmain]
vext01 2412 2274 Soth grep 864
हां, यह सिस्टम cgroup के अनुसार चल रहा है cset
। इसलिए htop
और cset
असहमत।
तो यहाँ क्या हो रहा है? मुझे किस पर भरोसा करना चाहिए: cpu affinities ( htop
/ taskset
) या cset
?
मुझे संदेह है कि आप cset
एक साथ उपयोग और संपन्नता के लिए नहीं हैं। शायद ढाल ठीक काम कर रहा है, और मुझे आत्मीयता मास्क और htop
आउटपुट को अनदेखा करना चाहिए । किसी भी तरह से, मैं इस भ्रामक लगता है। क्या कोई प्रकाश को बहा सकता है?
numactl
और cgconfig
और cgrules
/ cgred
आप क्या कर रहे कारगर बनाने के लिए। ये कुछ काम के साथ डेबियन के लिए उपलब्ध हो सकते हैं ।