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