ฉันมี 3 กระบวนการในเครื่องแกนเดียว แต่ละขั้นตอนเหมือนกันและเผา CPU ให้เร็วที่สุดเท่าที่จะทำได้ สองของพวกเขา ( AและB) ถูกเปิดตัวด้วย cgexec ในกลุ่มที่แยกจากกันโดยมีการแชร์ตั้งไว้ที่ 512 และ 512 และที่สาม ( C) เปิดตัวเป็นประจำไม่ใช่ cgexec
เมื่อทุกอย่างพร้อมใช้งานCได้รับ 66% ของ CPU ในขณะที่AและBแบ่ง 33% ถ้าฉันฆ่าCแล้วAและBจะได้รับ 50% ในแต่ละ (ตามคาด)
ทำไมถึงCได้ 66% ฉันคาดว่าจะได้ 33% ต่อสถานการณ์นี้หรืออาจจะ 50% (C) 25% (A) และ 25% (B) 66% จะCไม่ได้ผลไม่ว่าฉันจะทำคณิตศาสตร์อย่างไร
โดยทั่วไปฉันต้องการเข้าใจว่ากระบวนการเปิดตัวโดยไม่ต้องcgexecโต้ตอบกับกระบวนการที่เปิดตัวcgexecเมื่อมันมาถึงการแบ่งปันทรัพยากร (โดยเฉพาะ CPU แต่คำตอบทั่วไปจะได้รับการชื่นชมมากขึ้นถ้ามันไม่ซับซ้อนเกินไป)
topและผมเชื่อว่าพวกเขาได้เริ่มต้นอย่างเป็นธรรมเพียงจากคำสั่งที่พรอมต์: และcgexec -g cpu:foo myprogram ./myprogramมันเป็นเวลานานแล้วที่ฉันจำไม่ได้ด้วยความมั่นใจ
cpu.sharesเป็นตัวเลือกการกำหนดค่าที่แปลกประหลาดมาก ฉันขอแนะนำให้แยกสิ่งต่าง ๆ โดยใช้ CPU หากเป็นไปได้ให้ใช้cpuset.cpusแทน