Я создал новую группу с именем mycgroup
, прикрепленную только к подсистеме памяти. Первоначально эта вновь созданная cgroup сообщает об отсутствии использования памяти, о чем свидетельствует вызов cat /var/cgroups/mycgroup/memory.usage_in_bytes
, который печатает 0.
Однако, когда я запускаю следующее через cgexec несколько раз, использование памяти начинает растидаже если этот процесс является простым echo
вызовом, который не останавливается и ничего не блокируется.
username@232:~/cache/build$ sudo cgdelete memory:mycgroup && sudo cgcreate -g "memory:mycgroup" -t username:username
username@232:~/cache/build$ sudo cgegex -g memory:mycgroup echo "HELLO"
sudo: cgegex: command not found
username@232:~/cache/build$ sudo cgexec -g memory:mycgroup echo "HELLO"
HELLO
username@232:~/cache/build$ sudo cgexec -g memory:mycgroup echo "HELLO"
HELLO
username@232:~/cache/build$ sudo cgexec -g memory:mycgroup echo "HELLO"
HELLO
username@232:~/cache/build$ sudo cgexec -g memory:mycgroup echo "HELLO"
HELLO
username@232:~/cache/build$ sudo cgexec -g memory:mycgroup echo "HELLO"
HELLO
username@232:~/cache/build$ sudo cgexec -g memory:mycgroup echo "HELLO"
HELLO
username@232:~/cache/build$ sudo cgexec -g memory:mycgroup echo "HELLO"
HELLO
username@232:~/cache/build$ sudo cgexec -g memory:mycgroup echo "HELLO"
HELLO
Все, что я делаю, - это вызываю эхо несколько раз, и эхо выполняется успешно. Однако после всех этих вызовов память, сообщаемая /var/cgroups/mycgroup/memory.limit_in_bytes
, начинает увеличиваться примерно на 70 КБ каждый раз. systemd-cgtop
показывает мне следующее после нескольких звонков:
Control Group Tasks %CPU Memory Input/s Output/s
/ 1533 92.5 26.9G - -
/mycgroup - - 892.0K - -
/system.slice 96 - - - -
/system.slice/ModemManager.service 3 - - - -
/system.slice/NetworkManager.service 4 - - - -
/system.slice/accounts-daemon.service 3 - - - -
/system.slice/acpid.service 1 - - - -
/system.slice/atop.service 1 - - - -
Для ясности я показал только первые несколько строк cgtop. Обратите внимание на использование памяти 892K mycgroup, с которой не связано ни одно из запущенных заданий / процессов. Действительно, /var/cgroups/mycgroup/cgroup.procs
пусто.
Так что же с этой памятью? Если нет никакого процесса, связанного с cgroup, почему это там? Что еще более проблематично, из-за этого я не могу отобразить значения в /var/cgroups/mycgroup/memory.limit_in_bytes
, которые ниже, чем значения в /var/cgroups/mycgroup/memory.usage_in_bytes
, что не позволяет мне осуществлять контроль над памятью над моей cgroup, нанося ущерб цели cgroup.