仮想化

vCPUとは?

別名: virtual CPU
定義

A vCPU is a virtual processor presented to a guest, backed by scheduling time on a physical core or thread. The decisive question is whether the backing thread is shared with other tenants or reserved. A dedicated vCPU has no other tenant scheduled against it; a shared one competes, producing steal time.

vCPUが重要な理由

決定的な問題は、バッキングスレッドが他のテナントと共有されているか、予約されているかです。専用のvCPUには、他のテナントがスケジュールされません。共有のものは競合し、スチールタイムを生成します。

実践でのvCPU

サーバーを実行する場合、vCPUはワークロードが実際に消費するものです。まずスチールタイムを確認します。それが一貫して数パーセントを超える場合、vCPUは共有されており、他のテナントがサイクルを消費しています。レイテンシを修正するためにvCPU数を増やすかもしれませんが、問題がコアではなく競合であるかどうかを確認してください。間違えると、あなたのものではないスケジューリング時間に対して支払うことになり、アプリケーションは説明できない停止に悩まされます。

vCPUについて人々が誤解していること

一般的なエラーは、vCPUを保証された速度の物理コアとして扱うことです。KVM環境では、各vCPUはホストスレッドによってサポートされ、共有ホストではそのスレッドが競合します。人々はvCPUが多いほど常に役立つと想定しますが、バッキングスレッドが競合している場合、スチールタイムが発生します。修正:vCPU数をスケーリングする前にスチールタイムを確認してください。

vCPU — よくある質問

vCPUはいくつ必要ですか?

ワークロードによります。忙しいWebサーバーの場合は、2つから始めてCPUスチールタイムを監視してください。スチールが低いままでまだ制限されている場合は、vCPUを追加してください。当社のKVMプランでは、短い再起動でCPUとRAMを増やせるため、再構築なしで調整できます。

後でvCPU数を変更できますか?

是的,在您现有的服务器上,可以通过短暂重启增加CPU,磁盘可以在线扩容。降级则需要重建而非实时迁移,所以最好从小规模开始,然后逐步升级。

vCPUが登場する箇所

仮想化の詳細

KVM
KVMはLinuxカーネルに組み込まれたフルハードウェア仮想化であり、各ゲストに独自のカーネルと、他のテナントからのハードウェア強制分離を提供します。
OpenVZ
OpenVZはコンテナベースの仮想化であり、すべてのインスタンスがホストカーネルを共有するため、ゲストはカーネルモジュールをロードしたり、異なるオペレーティングシステムを実行したりできません。
LXC
LXCはLinuxネイティブのコンテナ化であり、ホストカーネルを共有しながら、名前空間とcgroupsでプロセスを分離します。
ハイパーバイザー
ハイパーバイザーとは、仮想マシンを作成・実行し、物理CPU、メモリ、I/Oを割り当てるソフトウェアレイヤーです。
嵌套虚拟化
ネスト仮想化により、仮想マシン自体が仮想マシンを実行できるようになり、プロセッサの仮想化拡張機能がゲストに公開されます。
cloud-init
cloud-initは、プラットフォームが提供するメタデータを使用して、仮想マシンを初回起動時に構成するための標準的なメカニズムです。