cgred / cgrulesengd - 새 사용자 pid를 작업 파일로 이동하지 않습니다.

cgred / cgrulesengd - 새 사용자 pid를 작업 파일로 이동하지 않습니다.

cgrulesengd는 데몬으로 실행하는 동안 pid를 작업 파일로 이동할 수 없습니다. cgrulesengd를 다시 시작하면 모든 pid가 작업 파일로 올바르게 이동되지만 새 pid는 그렇지 않습니다.

따라서 hello 사용자로 로그인한 다음 루트 cgrulesengd -n -d에서 실행하면 사용자 hello와 그의 모든 프로세스가 /cgrup/mem/hello/tasks 파일로 이동됩니다. 하지만 로그아웃하고 로그인하면 사용자 hello는 더 이상 cgrulesengd의 영향을 받지 않습니다.

이것은 내 테스트 파일입니다.

#!/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

산출:

./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

방금 memory.max_usage_in_byteand memory.memsw.max_usage_in_bytesis != 0일 때 모든 새로운 PID가 올바르게 이동된다는 것을 발견했습니다.

내 질문은 다음과 같습니다

  1. 왜 내가 0 을 얻고 memory.max_usage_in_byte?memory.memsw.max_usage_in_bytes
  2. 새 PID가 작업 파일에 자동으로 첨부되지 않는 이유는 무엇입니까?

버전: libcgroup-0.41-x86_64-1

임시 해결책: echo $$ >> /cgroup/mem/$USER/tasks/etc/profile에 추가되었습니다.

관련 정보