Me registré porque no pude ejecutar cgroups con varios tutoriales/comentarios/lo que sea que encuentres en google. Quiero limitar la cantidad de RAM que puede usar un usuario específico. Internet dice "cgroups". Mi servidor de pruebas ejecuta Ubuntu 14.04. Puede dividir los tutoriales mencionados en dos categorías. Establezca límites directamente usando echo y use una configuración específica. Ninguno de los dos funciona para mí.
Establecer límites usando eco
cgcreate -g cpu,cpuacct,...:/my_group
termina sin avisos. Cuando intento correr
echo 100M > memory.limit_in_bytes
simplemente dice "no permitido" incluso cuando se usa sudo. Ni siquiera llego al punto de limitar a otro usuario.
Establecer límites usando config
Leí sobre dos archivos de configuración. Así que aquí están mis archivos de configuración:
cgconfig.conf
mount {
memory = /cgroup/memory;
}
group limit_grp {
memory {
memory.limit_in_bytes=100M;
memory.memsw.limit_in_bytes=125M;
}
}
cgrules.conf
testuser memory limit_grp
cuando corro
cgconfigparser -l /etc/cgconfig.conf
se monta en systemd. Ahora inicio sesión con testuser, ejecuto una tarea que requiere mucha memoria y se ejecuta sin preocuparme por mi límite.
Intenté reiniciar, nada cambió. Incluso algunos intentos extraños usando la configuración del kernel no funcionaron. Soy nuevo en cgroups y no esperaba que fuera tan complicado. Agradecería cualquier sugerencia sobre mi tema. ¡Gracias de antemano!
Respuesta1
La razón por la que está viendo este comportamiento probablemente se debe al hecho de que su sesión de inicio de sesión ya tiene un grupo de límite de memoria asociado y el proceso lo hereda, de acuerdo con la configuración de systemd.
Verifique su proceso en ejecución cgroup con:
cat /proc/pid/cgroup
...y es posible que veas algo como:
13:name=systemd:/user/0.user/2.session
12:debug:/
11:pids:/
10:net_prio:/user/0.user/2.session
9:perf_event:/user/0.user/2.session
8:net_cls:/user/0.user/2.session
7:freezer:/user/0.user/2.session
6:devices:/user/0.user/2.session
5:memory:/user/0.user/2.session
4:blkio:/user/0.user/2.session
3:cpuacct:/user/0.user/2.session
2:cpu:/
1:cpuset:/
Suponiendo que no desea este comportamiento, puede usar su cgroup personalizado con el controlador de memoria editando /etc/systemd/logind.conf
y eliminando memory
de la Controllers
línea.
Respuesta2
Tuve un problema similar (aunque en Fedora 29): parecía que mi problema /etc/cgconfig.conf
fue completamente ignorado. Correr
sudo systemctl enable cgconfig
y reiniciar resolvió el problema.