ฉันมี 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
แทน