/etc/cgconfig.conf
...
group memlimit {
memory {
memory.limit_in_bytes = 8589934592;
}
}
group cpulimit {
cpu {
cpu.shares = 1024;
}
}
/etc/cgrules.conf:
@gatewayer memory memlimit/
@gatewayer cpu cpulimit/
И я перезапустил службы с помощью команд:
service cgconfig restart
service cgred restart
После того, как я выполнил свой скрипт Python от пользователя, принадлежащего к группе gatewayer
, я мог видеть PID при выполнении cat /cgroup/memory/memlimit/cgroup.procs
, и к запущенному процессу было применено ограничение. Однако ограничение на процессор не действует, и cat /cgroup/cpu/cpulimit/cgroup.procs
не печатает PID, как ожидалось.
Я попытался проверить процесс, и результат оказался тем же, что память ограничена cgroups, а cpu - нет:
$ cat /proc/18113/cgroup
174:blkio:/
173:net_cls:/
172:freezer:/
171:devices:/
170:memory:/memlimit
169:cpuacct:/
168:cpu:/
167:cpuset:/
Может ли кто-нибудь помочь мне? Большое спасибо.
cpu.shares
не является ограничением на использование ЦП, если нет конкуренции за ЦП. Если ЦП бездействует, любой процесс может использовать весь ЦП, независимо от его значенияcpu.shares
. Однако при конкуренции за ЦП значениеcpu.shares
используется для определения процента времени ЦП, отведенного процессу (этот процессcpu.shares
/ сумма всехcpu.shares
). - person twalberg   schedule 29.05.2015