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