cboxを使用してvirtualboxのメモリ使用量を制限する


9

cgroup(コントロールグループ)を使用してvirtualboxのメモリ使用量を制限しようとしていますが、動作しないようです。

私のマシンは:

$ 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@groupnametypeであるhardか、softここでhardそれがどのような状況下で超えることができないLIMTあります。

item制限されるアイテムのタイプを指定するアイテムフィールドです。例には、core(コアファイルのサイズ)、data(プログラムのデータ領域のサイズ)、fsize(ユーザーが作成したファイルのサイズ)、nofile(開いているデータファイルの数)、rss(常駐セット)が含まれます。サイズ)、スタック(スタックサイズ)、cpu(分単位の単一プロセスのCPU時間)、nproc(同時プロセスの数)、maxlogins(同時ログインの数)、および優先度(プロセスの優先度)。データ、rss、およびスタック項目はすべて、プログラムによって消費されるメモリに関連しています。これらおよびその他のデータ容量の測定値は、キロバイト単位で測定されます。

valueに関連しているitemあなたは、あなたが選んだ持っている場合例えば、選んだ持っていることをフィールドcpuitemフィールドと入れ2value続いた場合にdomain(VirtualBoxののあなたのグループは)以上取るである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

ただし、cgreateand cgsetコマンドを使用するのではなく/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の準備が整います。必要なのは、仮想ボックスのPIDを/cgroups/memory/vbox/tasksファイルに移動すること、cgclassifyまたは単にechoそのファイル内の数値を使用することです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.