仮想化に欠かせないIO準仮想化についてお話しします

仮想化に欠かせないIO準仮想化についてお話しします

[[217426]]

QEMU-KVM は VMM として完全な仮想化環境を提供し、ゲストは変更なしで KVM 環境で実行できます。ただし、IO 仮想化に関しては、KVM は QEMU の純粋なソフトウェアを使用して IO デバイスをシミュレートしますが、これはあまり効率的ではありません。 KVM では、IO 仮想化の効率を向上させるために、準仮想化方式である virtio を使用する必要があります。

完全仮想化と準仮想化の簡単な紹介

完全仮想化では、ゲスト オペレーティング システムは VMM 上で実行され、仮想化されていることを認識せず、変更なしで動作します。対照的に、準仮想化では、ゲスト オペレーティング システムは VMM 上で実行されていることを認識するだけでなく、VMM コードに接続するために変更する必要もあります。

完全仮想化では、VMM はデバイス ハードウェアをエミュレートする必要がありますが、このエミュレーションは徹底的かつクリーンですが、非効率的で、コードが最も複雑になります。準仮想化モードでは、ゲストと VMM が連携してシミュレーションをより効率的に実行します。

IO完全仮想化はQEMUソフトウェアエミュレーションを使用する

1. 仮想マシンが I/O 操作を実行する場合、「Intel の CPU 仮想化についても議論」によると、仮想マシンは VM 出口を介して CPU 制御を VMM に返し、それによってルート モードで ring0 の VMM に陥り、「シミュレーションに陥る」ことが分かります。

2. この I/O 要求の情報は IO 共有ページに保存されます。 QEMU が IO 共有ページから情報を読み取った後、ハードウェア シミュレーション コードは今回の IO 操作をシミュレートし、カーネル内のハードウェア ドライバーを呼び出して IO 要求を物理ハードウェアに送信します。完了後、結果が IO 共有ページに返されます。

3. KVM モジュールのキャプチャ コードは、IO 共有ページの結果を読み取り、ゲストに結果を返します。

4. VM エントリを通じて、ゲストは CPU の制御を取り戻し、IO によって返された結果を処理します。

注: VMM とゲスト間の IO 情報の共有は IO 共有ページに限定されず、DMA も使用できます。 QEMU は IO 結果を IO 共有ページに格納せず、DMA を介してゲストのメモリに直接書き込み、KVM モジュールを介して DMA 操作が完了したことをクライアントに通知します。

次の図 (インターネットから) は、ソフトウェア シミュレーション IO のフローチャートです。

IO 準仮想化 virtio

ゲストとホストは、virtio フロントエンドおよびバックエンド テクノロジーを使用して、ゲスト IO 中の VM Exit (ゲストとホスト間のコンテキスト切り替え) を削減し、ゲストとホストが IO を並行して処理できるようにして、スループットを向上させ、レイテンシを削減します。ただし、完全な仮想化テクノロジと比較すると、IO パスは削減されません。以下は virtio の IO パスです。

ゲストが IO 要求を行うと、ゲストはまずホスト カーネルに切り替える必要があり、次にホスト カーネルはハイパーライザーに切り替えてゲストの要求を処理します。ハイパーバイザーは、システム コールを通じてデータ パケットを外部ネットワークに送信し、その後ホスト カーネルに切り替え、さらにゲストに切り替えます。この長い IO パスは、VM の終了と VM のエントリが削減されることを除いて、完全仮想化の場合と同じです。

仮想ホスト

virio の IO パスが長すぎる問題を解決するために、vhost が作成されました。これはホストカーネル内に配置され、ゲストと直接通信するために使用されるモジュールであり、ゲストとホストカーネル間でデータ交換が行われ、コンテキストの切り替えが削減されます。 virtoアーキテクチャと比較すると、vhostはvirtioドライババックエンドドライバをユーザーモードからカーネルモードに移動します(vhostのカーネルモジュールはvirtiOバックエンドドライバとして機能します)

次の図 (RedHat より) は、virtio および vhost アーキテクチャにおけるカーネルのさまざまなワークフローを示しています (vhost-net は vhost アーキテクチャにおけるネットワーク カードの実装です)。

次の図 (Intel より) は、vhost の仕組みを紹介しています。

vhost ユーザー

vhost-user は vhost に似ていますが、カーネル内の vhost モジュールの代わりにユーザー モード プロセス vhost-user が使用される点が異なります。データ操作は、共有メモリを介して vhost-user プロセスと Guset 間で実行されます。 vhost アーキテクチャと比較すると、vhost-user は virtiO ドライバー バックエンド ドライバーをカーネル状態からユーザー状態に戻します (vhost-user プロセスは virtiO バックエンド ドライバーとして機能します)。

次の図 (Intel より) は、vhost-user がどのように動作するかを示しています。

要約する

io 仮想化は、完全仮想化 io から準仮想化 virtio へと進化しました。準仮想化バックエンド ドライバーは、VMM からカーネルへ、そしてカーネルからユーザー空間へのプロセスを実行します。

<<:  VMware の 3 つのネットワーク接続の違い

>>:  サービス仮想化が必要ない10の理由

推薦する

ファーウェイ:企業のデジタル変革の課題を克服

[51CTO.com からのオリジナル記事] IDC の 2017 年以降の世界の IT 業界に関す...

IBM、マルチクラウド プラットフォームで実行される AI モデル用の CodeFlare フレームワークをオープンソース化

IBM は、ハイブリッド クラウド上でのビッグ データと人工知能のワークフローの統合と効率的な拡張を...

Chiaマイニングマシン: 537ドル、2*e5-2690v4 (28C/56T)/32gDDR4/23T SSD/10Gbps帯域幅

莫大な利益が得られることから、マイニング(チアマイニング)は最近とても人気があるようです。誰もが大容...

bigbrainglobal-生涯60%割引/Onapp

Bigbrainglobal は、米国バージニア州に拠点を置く高品質のプライベート IDC です。現...

hostkvmはどうですか?ロシアのモスクワデータセンターのCN2ネットワークのVPSクラウドサーバーの簡単なレビュー

Hostkvm はロシアの VPS サービスを提供しています。公式紹介によると、BGP+RETN+C...

どのように最適化されていても、ウェブサイトはユーザーのためのものです。

検索エンジンの中で、Baidu のユーザー率が最も高いため、私たちウェブマスターは一日中 Baidu...

国家インターネット情報局:ウェブサイトユーザー情報漏洩事件の調査と対処が完了

新華社、北京、1月10日(華春雨、趙万偉)記者が10日、国家インターネット情報局から得た情報によると...

4年! OpenStackの運用と保守のアーキテクチャについての私のまとめ

序文シロクマさんに誘われて、何か書きます。よく考えてみると、クラウド コンピューティングの範囲は本当...

SeFlow-i7-4770/32g メモリ/2x2T ハードディスク/20T フロー/500mddos 保護/39 ユーロ

2004 年に設立されたイタリアの企業である SeFlow は、2,000 を超える顧客、1,300...

shockhosting: 大容量の VPS ハードディスクを必要とするユーザーに適しています。$4.99、KVM/1g メモリ/150g ハードディスク/1T トラフィック

shockhosting は新たな動きを見せています。以前の「s」の何とも言えない「時代」型の VP...

モバイルインターネットの時代では、フォーラムもモバイルであるべきである

インターネットには、数え切れないほどのウェブマスターが夢を抱いていた時代がありました。地域性と専門性...

iPhoneでGmailを安全に使用する方法

Gmail は多くの中国ユーザーにとって手放しにくいサービスです。Gmail サービスはブロックされ...

究極の 1 対 1 コード ソリューションである 1 対 1 コード テクノロジーには、次のような利点があります。

月収10万元の起業の夢を実現するミニプログラム起業支援プラン究極の 1 対 1 コード ソリューショ...

alphavps-4 ユーロ/512M メモリ/20G ハードドライブ/200G データ転送/G ポート/ブルガリア

alphavps.bg は 2017 年に設立されたブルガリアのホスティング会社で、主に仮想ホスティ...