VMを作成するときにすべてのCPUコアをVMに渡したくないのはなぜですか?

VMを作成するときにすべてのCPUコアをVMに渡したくないのはなぜですか?

(私はxcp-ng / xenをハイパーバイザーとして使用していますが、qemu / kvmとvirtualboxを使用してから一般的な質問です。これについても知りたいです。)VMを作成するたびに、できるだけ多くのコアを提供するオプションがあります。可能な限り、システムにいくつかのCPUコアがある場合でも、必要に応じてすべてのVMにすべてのCPUコアを提供できます。これは、VMがそれを共有するという意味のようです。

それから私の心に質問が浮かびました。理由がありますか?いいえホストシステムが単にハイパーバイザーのミッションを実行し、すべての仮想マシンにすべてのコアを提供する場合はどうなりますか?

答え1

これは、仮想マシンが無視できないロード状態にあるときに発生するコンテキスト遷移の量が増加するためです。コンテキスト遷移は、ハイパーバイザーで実行すると、はるかにコストがかかります。以下は最近のものです。仮想化オーバーヘッド性能測定そうでした。

各仮想マシンを少数のCPUコアに制限すると、他の利点もあります。たとえば、仮想マシンの1つに障害が発生しても、マシンの他のすべてが中断できないことを意味します。 CPUを共有するVMには潜在的なセキュリティ上の問題もありますが、実行中のすべてのVM(スペクター/メルトダウン攻撃など)を信頼するため、問題になりません。

答え2

VMを作成するときにpassすべてのCPUコアを使用したくないのはなぜですか?

質問のタイトルを見ると、まったく異なる2つを混ぜているようです。 「パス」とは、仮想マシン専用という意味です。これは、Virtualboxで「仮想CPU」の数を設定するときに実行する操作ではありません。一般的な概念では、この数はコンソールの物理コアの数を超えないと思いますが、私の経験では必ずしもそうではありません。たとえば、Virtualboxでは、4つのコアと8つのスレッドCPUを持つホストで、それぞれ6つの仮想CPUを持ついくつかの仮想マシンを起動しました。これらの仮想マシンのいくつかは、ホストマシンで日常的な作業を実行しながら重いコンパイル操作を実行しています。否定的な副作用はありません。コンソールで遅延、途切れ、速度低下が感じられません。利点に関しては、4-CPU VMに比べて制限的ですが、測定可能な速度向上があります。つまり、カーネルのコンパイル操作ははるかに速く完了しますが、それほど大きくはありません。ゲストの仮想CPUの数を増やしても、これ以上の利点はありませんでした。したがって、この設定ではゲストにCPUコアを「転送」しません。ゲストに仮想CPUを提供することはqemu / kvm / Virtualboxに依存し、明らかにVirtualboxはこれをうまく行います。

(注:あなたの投稿では「Xen」という言葉も言及しました。したいかもしれません)

関連情報