(コントロールグループ)を使用して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