У мене є 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
коли справа стосується спільного використання ресурсів (зокрема CPU, але більш вдячна відповідь буде оцінена, якщо вона не надто складна).
top
і я вважаю, що вони почалися досить просто з командного рядка: cgexec -g cpu:foo myprogram
і ./myprogram
. Минув час, тому я не пам'ятаю з певністю.
cpu.shares
- дуже своєрідний варіант конфігурації; Я рекомендую розділити речі за процесорами, якщо можливо, cpuset.cpus
замість цього.