私はFreeBSDjailでの作業に慣れていますが、XenServer 5.5/Vmware ESXI 5を試してみたかったのですが、VMごとのリソースを実際に制限できることを期待して、いくつかの仮想マシンをインストールした後、1つの小さなVM(512RAM、1 VCPU)、(サーバーには8GB ram 2プロセッサがあります)次のコード:
$ cat > fork.c
#include <stdio.h>
int main() { while(1) fork(); }
$ gcc fork.c -o bomb
$ ./bomb
仮想化のないFreeBSDサーバー(Xenserver/Vmwareなし)では、そのコードはマシンを強制終了し、ハードリセットを実行する必要がありますが、XenServerでの動作が「ほぼ」類似しており、何らかの損傷を引き起こしていることに驚きました。
XenServerは利用可能なすべてのCPUを消費し始め、他のFreeBSD VMはパフォーマンスが低下し始めました。
一方、最新バージョンのVmware Exiを使用すると、爆弾はフォーク爆弾を発射した仮想マシンにのみ影響し、サーバー全体のCPUは、ある時点ですべてのリソース(約40%)を消費し始めませんでした。これにより、VMの残りの部分のパフォーマンスに気付かずに、2番目のVMを作成して2番目の爆弾を実行できます。 2つの爆弾を同時に実行すると、CPUの合計使用率は90%でした。
私の場合、FreeBSDを使用しているだけですが、ホストサーバーを殺す可能性のあるフォーク爆弾を防ぐ方法がまだ見つかりません。XenServerを使用してもあまり役に立ちませんでした。 Vmwareは有望に見えますが、コストがかかるため問題ありません。
それで、フォークブームを処理するためにXenserverまたはFreebsdを微調整する方法のアイデアはありますか?
VCPUを制限することは役に立ちましたが、今私は別の問題に直面しています:
XenServerでVirtualMachineを強制的に停止/削除する方法(バグの可能性あり)
カスタマイズされたFreeBSDカーネル(xenオプション)を含むインスタンスを削除/停止/再起動できません。このカーネルを起動するときにXenServerがインスタンスの制御を失う方法があります。
更新
これにより、問題が修正されました。 rctl -リソース制限データベースの表示と更新