cgroup을 사용하여 virtualbox의 메모리 사용을 제한하십시오


9

cgroupvirtualbox의 메모리 사용을 제한 하기 위해 (제어 그룹) 을 사용하려고 하는데 작동하지 않는 것 같습니다.

내 기계는 :

$ 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

나는 이것을 다음과 같이 작동 시키려고 노력했다.

  1. 메모리 계층에서 새 cgroup 생성 :

    $ cgcreate -g memory:vbox
    
  2. vbox에 대한 memory.limit_in_bytes 설정 :

    $ cgset -r memory.limit_in_bytes=512M vbox
    
  3. pid를 실행하는 vbox를 vbox로 그룹화 :

    $ cgclassify -g memory:vbox 20015
    

왜 이것이 작동하지 않는지 설명 할 수 있습니까?

답변:


3

이 파일에서 /etc/security/limits.conf를 사용하여 메모리 사용량을 줄일 수 있습니다.

domain type item value

(가) 여기서 domain는 IS @groupname, typehard또는 soft여기서 hard그 어떤 상황에서도 초과되지 않을 수 LIMT이다.

item항목 필드는 제한되는 항목 유형을 지정합니다. 예를 들어 코어 (코어 파일 크기), 데이터 (프로그램 데이터 영역 크기), fsize (사용자가 만든 파일 크기), nofile (열린 데이터 파일 수), rss (상주 세트) 크기), 스택 (스택 크기), CPU (단일 프로세스의 CPU 시간 (분)), nproc (동시 프로세스 수), maxlogins (동시 로그인 수) 및 우선 순위 (프로세스 우선 순위). 데이터, RSS 및 스택 항목은 모두 프로그램에서 사용하는 메모리와 관련이 있습니다. 이들 및 기타 데이터 용량 측정치는 킬로바이트 단위로 측정됩니다.

그리고 value받는 사람과 관련되어 item당신이 선택한 경우, 예를 들어, 선택 가지고 필드 cpuitem필드 넣어 2에서 value다음 경우에 domain(버추얼의 그룹화하는) 이상의 가지고있다 2가 종료됩니다 CPU 시간.

당신도 사용할 수 ulimit있지만 bash 쉘로만 제한됩니다.

요청한 방법으로 수행되지는 않지만 이것이 목표 달성에 도움이되기를 바랍니다.


1

/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

그러나 cgreatecgset명령을 사용하는 대신 /etc/cgconfig.conf재부팅 할 때마다 프로세스를 반복 할 필요가 없도록 이러한 설정을 포함 하는 파일을 만드는 것이 좋습니다. 귀하의 경우 파일은 다음과 같습니다.

[root@localhost cgroup]# cat /etc/cgconfig.conf
mount {
    memory  = /cgroup/memory;
}

group vbox {
    memory {
        memory.limit_in_bytes="536870912";
    }
}

이제 cgconfig서비스 를 시작할 때마다 vbox cgroup이 준비됩니다. 필요한 것은 그 파일의 숫자 /cgroups/memory/vbox/tasks중 하나 cgclassify또는 단순히 echo숫자를 사용하여 virtualbox의 PID를 파일 로 옮기는 것 입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.