У мене є 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замість цього.