
cgrulesengd no puede mover el pid al archivo de tareas mientras se ejecuta como demonio. Si reinicio cgrulesengd, todos los pid se mueven correctamente al archivo de tareas, pero el nuevo pid no.
Entonces, si inicio sesión como usuario hola y luego ejecuto desde la raíz cgrulesengd -n -d, el usuario hola y todos sus procesos se mueven al archivo /cgrup/mem/hello/tasks. Pero cuando cierro sesión e inicio sesión, el saludo del usuario ya no se ve afectado por cgrulesengd.
Este es mi archivo de prueba.
#!/bin/bash
USER='hello'
cgdelete memory:${USER}/
cgclear
/etc/rc.d/rc.cgred stop
umount /cgroup/mem
rm -fr /cgroup/mem/
mkdir /cgroup/mem
mount -t cgroup -o memory mem /cgroup/mem
mkdir /cgroup/mem/${USER}
chown root:root /cgroup/mem/${USER}/*
chown ${USER}:root /cgroup/mem/${USER}/tasks
echo 100M > /cgroup/mem/${USER}/memory.limit_in_bytes
echo 100M > /cgroup/mem/${USER}/memory.memsw.limit_in_bytes
[ ! -f '/etc/cgrules.conf_orig' ] && cp -pa /etc/cgrules.conf /etc/cgrules.conf_orig
echo "${USER} memory ${USER}/" > /etc/cgrules.conf
#echo "* * system/" >> /etc/cgrules.conf
/etc/rc.d/rc.cgred start
#cgrulesengd -n -d
ls -all /cgroup/mem/${USER}/tasks
cat /cgroup/mem/${USER}/tasks
echo -n "memory.limit_in_bytes "
cat /cgroup/mem/${USER}/memory.limit_in_bytes
echo -n "memory.max_usage_in_byte "
cat /cgroup/mem/${USER}/memory.max_usage_in_bytes
echo -n "memory.memsw.limit_in_bytes "
cat /cgroup/mem/${USER}/memory.memsw.limit_in_bytes
echo -n "memory.memsw.max_usage_in_bytes "
cat /cgroup/mem/${USER}/memory.memsw.max_usage_in_bytes
Producción:
./test_cgred.sh
Stopping CGroup Rules Engine Daemon... [ OK ]
umount: /cgroup/mem: not mounted
Starting CGroup Rules Engine Daemon: [ OK ]
-rw-r--r-- 1 hello root 0 Sep 26 00:46 /cgroup/mem/hello/tasks
memory.limit_in_bytes 104857600
memory.max_usage_in_byte 0
memory.memsw.limit_in_bytes 104857600
memory.memsw.max_usage_in_bytes 0
Acabo de descubrir que cuando memory.max_usage_in_byte
y memory.memsw.max_usage_in_bytes
es! = 0, todos los pid nuevos se mueven correctamente.
Mi pregunta es:
- ¿Por qué obtengo 0
memory.max_usage_in_byte
ymemory.memsw.max_usage_in_bytes
? - ¿Por qué el nuevo pid no se adjunta automáticamente al archivo de tareas?
Versión: libcgroup-0.41-x86_64-1
Solución temporal: agregada echo $$ >> /cgroup/mem/$USER/tasks
a /etc/profile.