У меня есть 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вместо этого.