Fedora 20を実行しているKVMシステムでulimit -s unlimited
(スタックサイズ制限の削除)実験的なアドバイザーのテストスクリプトを実行しました。このスクリプトがすることは無限の再帰だけです。
#!/bin/bash
fn() {
true
fn
}
fn
私はCPU使用率が100%に達すると予想し、少しのリソースがなくなった(長い時間がかかるかもしれません)後、bashは最終的にカーネルによって中断されます。
しかし、実際に起こっていることは少し奇妙で、説明する正しい知識がありません。
VM内部では、topはこの興味深いスクリプトの100%CPU使用率を報告します。言葉になりますね。
ただし、外部ではvirt-managerはCPU使用率が0%と表示され、繰り返し100%の急増が予想されます。これが十分に奇妙ではないように、各連続スパイク間で観察される待ち時間は増加しています(最終的に待ち時間は増加を止め、一貫性を持つようになります)。
なぜこれですか?中で何が起こりましたか?それとも、virt-managerが報告した使い方が誤解を招くのでしょうか?それでは、ピーク間のパターンを引き起こす原因は何ですか?
ベストアンサー1
仮想マシン内でtopを使用すると、CPU使用率が約100%であることがわかりますが、物理ホストでは、仮想マシンはすべてのCPU時間を使用できません。これは、カーネルの観点からkvm vmが正常であるためです。プロセスなので、カーネルプロセススケジューラは他のプロセスとCPUを共有します。