मेरे पास एक ही कोर मशीन पर 3 प्रक्रियाएं हैं। प्रत्येक प्रक्रिया बिल्कुल समान है और सीपीयू को जितनी तेजी से जला सकती है (तंग लूप) कर सकती है। उनमें से दो ( Aऔर B) अलग समूहों में cgexec के साथ 512 और 512 के सेट के साथ Cलॉन्च किए गए हैं । तीसरा ( ) नियमित रूप से लॉन्च किया गया है, न कि cgexec के साथ।
एक बार सभी कर रहे हैं और चल रहे हैं, Cसीपीयू, जबकि 66% हो जाता है Aऔर Bविभाजन 33%। अगर मैं मारने Cतो Aऔर B50% प्रत्येक मिल (उम्मीद के रूप में)।
C66% क्यों मिलता है? मुझे इस परिदृश्य में 33%, या शायद 50% (C), 25% (A) और 25% (B) की अपेक्षा होगी। 66% Cकाम नहीं करने जा रहे हैं, फिर भी मैं गणित कैसे करता हूं।
सामान्य तौर पर, मैं समझना चाहता हूं कि संसाधन साझाकरण (विशेष रूप से सीपीयू) के cgexecसाथ शुरू की गई प्रक्रियाओं के साथ बातचीत किए बिना कैसे लॉन्च की गई प्रक्रियाएं cgexec(यदि यह बहुत जटिल नहीं है, तो अधिक सामान्य उत्तर की सराहना की जाएगी)।
topऔर मुझे विश्वास है कि वे एक कमांड प्रॉम्प्ट से काफी सरलता से शुरू किए गए थे: cgexec -g cpu:foo myprogramऔर ./myprogram। यह एक समय हो गया है तो मुझे निश्चितता के साथ याद नहीं है।
cpu.sharesएक बहुत ही अजीब विन्यास विकल्प है; यदि संभव हो तो cpuset.cpusइसके बजाय मैं सीपीयू द्वारा चीजों को विभाजित करने की सलाह देता हूं ।