
(컨트롤 그룹)을 사용하여 virtualbox의 메모리 사용량을 제한하려고 하는데 cgroup
작동하지 않는 것 같습니다.
내 컴퓨터는 다음과 같습니다
$ uname -a
Linux fc.bgi 2.6.40-4.fc15.i686 #1 SMP Fri Jul 29 18:54:39 UTC 2011 i686 i686 i386 GNU/Linux
나는 다음과 같이 작동하도록 노력하고 있습니다 :
메모리 계층 아래에 새 cgroup을 생성합니다:
$ cgcreate -g memory:vbox
vbox에 대해 memory.limit_in_bytes를 설정하십시오.
$ cgset -r memory.limit_in_bytes=512M vbox
pid를 실행하는 vbox를 vbox로 그룹화합니다.
$ cgclassify -g memory:vbox 20015
누군가 이것이 작동하지 않는 이유를 설명할 수 있습니까?
답변1
다음과 같이 파일에 /etc/security/limits.conf를 사용하여 메모리 사용량을 제한할 수 있습니다.
domain type item value
는 어떤 상황에서도 초과할 수 없는 한도 domain
입니다 .@groupname
type
hard
soft
hard
item
프로젝트 필드는 제한된 프로젝트 유형을 지정합니다. 예를 들면 core(코어 파일의 크기), data(프로그램 데이터 영역의 크기), fsize(사용자가 생성한 파일의 크기), nofile(열린 데이터 파일의 수), rss(상주 세트 크기), stack( stack size), cpu(단일 프로세스의 CPU 시간(분)), nproc(동시 프로세스 수), maxlogins(동시 로그인 수) 및 Priority(프로세스 우선 순위). 데이터, RSS 및 스택 항목은 모두 프로그램에서 소비하는 메모리와 관련이 있습니다. 이러한 데이터 용량과 기타 데이터 용량 측정 단위는 킬로바이트입니다.
선택한 필드 value
와 관련하여 item
, 예를 들어 cpu
필드를 item
선택하고 입력 2
하면 (VirtualBox 그룹) CPU 시간보다 더 많은 시간이 소요될 value
경우 종료됩니다.domain
2
그것도 사용할 수 있지만 ulimit
bash 쉘로 제한됩니다.
요청한 대로 완료되지는 않았지만 이것이 귀하의 목표 달성에 도움이 되기를 바랍니다.
답변2
파일에 문제가 있는 것 같아요 /etc/cgconfig.conf
. 이 설정은 나에게 적합합니다.
[root@localhost cgroup]# cat /etc/cgconfig.conf
mount {
memory = /cgroup/memory;
}
[root@localhost cgroup]# service cgconfig start
Starting cgconfig service: [ OK ]
[root@localhost cgroup]# ls
memory
[root@localhost cgroup]# ls memory/
cgroup.event_control memory.limit_in_bytes memory.memsw.max_usage_in_bytes memory.soft_limit_in_bytes memory.use_hierarchy
cgroup.procs memory.max_usage_in_bytes memory.memsw.usage_in_bytes memory.stat notify_on_release
memory.failcnt memory.memsw.failcnt memory.move_charge_at_immigrate memory.swappiness release_agent
memory.force_empty memory.memsw.limit_in_bytes memory.oom_control memory.usage_in_bytes tasks
[root@localhost cgroup]# cgcreate -g memory:vbox
[root@localhost cgroup]# cgset -r memory.limit_in_bytes=512M vbox
[root@localhost cgroup]# cgclassify -g memory:vbox 11727
[root@localhost cgroup]# cat memory/vbox/tasks
11727
그러나 cgreate
및 명령을 사용하는 대신 이러한 설정이 포함된 파일을 생성하여 재부팅할 때마다 프로세스를 반복할 필요가 없도록 하는 것이 좋습니다. 귀하의 경우 파일은 다음과 같습니다.cgset
/etc/cgconfig.conf
[root@localhost cgroup]# cat /etc/cgconfig.conf
mount {
memory = /cgroup/memory;
}
group vbox {
memory {
memory.limit_in_bytes="536870912";
}
}
이제 서비스가 시작될 때마다 vbox cgroup이 준비됩니다. 파일의 숫자를 사용하거나 사용하여 cgconfig
virtualbox의 PID를 파일로 이동하십시오 ./cgroups/memory/vbox/tasks
cgclassify
echo