メモリ仮想化の調査結果

メモリ仮想化の調査結果

[[414450]]

この記事はWeChatの公開アカウント「雲店論建」から転載したもので、著者はJunchuanです。この記事を転載する場合は、雲店論鑑公式アカウントまでご連絡ください。

クラウドと仮想化

クラウド コンピューティングは、インターネット サービスを通じて動的かつスケーラブルなリソースを提供するコンピューティング モデルです。長年の開発を経て、企業の IT 技術にとって重要なサポートとなりました。仮想化はクラウド コンピューティングのコア テクノロジーの 1 つです。コンピューターを複数の論理コンピューター、つまり仮想マシンに抽象化します。各仮想マシンは、互いに影響を与えることなく異なるオペレーティング システムを実行できる、独立した安全な環境です。

仮想化テクノロジーは、リソースの使用とスケジュールに大きな利便性をもたらしました。クラウド コンピューティング システムは、負荷状況に応じてリソースをタイムリーにスケジュールできるため、リソースの使用率が向上し、アプリケーションやサービスがリソース不足の影響を受けないようにすることができます。サービス品質。ただし、仮想化にはコストもかかります。リソースの抽象化はパフォーマンスの低下をもたらしますが、これは仮想化が解決しようとしている問題でもあります。

仮想化されたリソースの抽象化は、CPU 仮想化、メモリ仮想化、デバイス仮想化の 3 つの部分に簡単に分けることができます。その中で、デバイス仮想化は、パフォーマンスを低下させることなく、ネットワーク、ストレージ、その他のデバイスから仮想マシンへの直接アクセスをすでに実現しています。 CPU 仮想化は、ハードウェア特性をサポートし、通常の命令を実行する際にベアメタルと同じパフォーマンスを発揮します。一方、メモリ仮想化はベアメタルと比べてまだ大きな差があり、これは現時点では注目に値する問題です。

メモリ仮想化

仮想メモリ: メモリの仮想化に関しては、仮想メモリの概念について言及する必要があります。初期のオペレーティング システムには物理アドレスと限られたスペースしかなかったため、プロセスはメモリを使用する際に他のプロセスのメモリを上書きしないように注意する必要がありました。この問題を回避するために、仮想メモリの概念が抽象化され、各プロセスが連続した独立した仮想メモリ空​​間を持つようになります。プロセスは VA (仮想アドレス) を通じてメモリを直接使用します。メモリにアクセスする際にCPUが発行するVAは、ハードウェアMMU(メモリ管理ユニット)によってインターセプトされ、PA(物理アドレス)に変換されます。 VA から PA へのマッピングはページ テーブルを使用して管理され、MMU は変換中にページ テーブルを自動的に照会します。

メモリ仮想化: 仮想メモリの概念と同様に、ホスト上の各仮想マシンは物理アドレス空間全体に排他的にアクセスできると認識されるため、各仮想マシンが独立したアドレス空間を持つようにするには、メモリを再度抽象化、つまりメモリ仮想化する必要があります。このように、仮想マシンと物理マシンの両方に、GVA (ゲスト仮想アドレス) と GPA (ゲスト物理アドレス)、および HVA (ホスト仮想アドレス) と HPA (ホスト物理アドレス) という VA と PA の概念があります。仮想マシン内のプログラムは GVA を使用しますが、最終的には HPA に変換する必要があります。 2 つの VA から PA へのマッピング (GVA から GPA と HVA から HPA) もページ テーブルを使用して管理されます。 GPA から HVA へのマッピングは通常、仮想マシンのハイパーバイザー VMM (仮想マシン モニター) によって管理される、いくつかの連続した線形マッピングです。

プロセス メモリ アクセスを VA から PA に変換する必要があります。メモリ仮想化の導入後、変換パスは大幅に変更されました。本来は、VA を PA に変換するだけでよかったのです。仮想化後、変換プロセスは GVA -> GPA -> HVA -> HPA になります。パスが長くなり、複雑になるにつれて、メモリ アクセスのセキュリティとパフォーマンスに課題が生じますが、これはメモリ仮想化が達成する必要のある目標でもあります。1) セキュリティ、つまりアドレス変換の正当性により、仮想マシンは自分に属さないメモリにアクセスできません。 2) パフォーマンス、つまり、変換関係を確立する際のオーバーヘッドの低さや、変換プロセス自体のオーバーヘッドの低さなど、アドレス変換の効率性。

クラシックソリューション

メモリ仮想化の目標を達成するために、多くの仮想化ソリューションが提案されてきました。 SPT (シャドウ ページ テーブル) と EPT (拡張ページ テーブル) は 2 つの典型的なソリューションであり、最もよく知られているソリューションでもあります。まずこれから始めて、その仕組みを確認し、その後、他の仮想化オプションに移ります。

SPT: 元のハードウェアはページ テーブル変換の 1 レベルしかサポートしていないため、仮想マシンまたは物理マシン上で VA を PA に直接変換しても、GVA から HPA への変換は完了しません。したがって、SPT は、次の図に示すように、GVA から HPA へのマッピングを直接管理するショートカット、つまりシャドウ ページ テーブルを確立します。各シャドウ ページ テーブル インスタンスは、仮想マシン内のプロセスに対応します。シャドウ ページ テーブルを確立するには、VMM が仮想マシン内のプロセスのページ テーブルを照会する必要があります。

シャドウ ページ テーブルは GVA から HPA への直接マッピングを管理するため、SPT アドレス変換パスは物理マシン パスと同等であり、ページ テーブルの 1 つのレイヤーを直接照会するだけでアドレス変換を完了できます。 4 レベルのページ テーブルを使用する場合、変換プロセスは次の図に示されます。

利点: SPT アドレス変換プロセスのオーバーヘッドは低く、物理マシンの場合と同程度です。

デメリット:

1) アドレス変換関係の確立には非常にコストがかかります。アドレス変換の正当性を保証するために、変換関係の確立、つまり仮想マシン プロセスのページ テーブルの変更はすべてインターセプトされ、特権 VMM にトラップされて実行されます。

2) シャドウ ページ テーブル自体がメモリを占有する必要があり、1 つのシャドウ ページ テーブルは仮想マシン内の 1 つのプロセスにのみ対応するため、全体としてより多くのメモリ リソースを占有することになります。

EPT: 後のハードウェアでは仮想化のためのネストされたページ テーブルのサポートが追加され、ハードウェアが 2 レベルのページ テーブル変換を自動的に完了できるようになりました。 EPT はハードウェア サポートに基づくソリューションです。 GVA から GPA を管理する仮想マシン ページ テーブルに基づいて、次の図に示すように、GPA から HPA へのマッピングを管理するための新しい拡張ページ テーブルが追加されます。 2 層のページ テーブルは互いに独立しており、2 層のマッピング関係の変換はハードウェアによって自動的に完了します。

仮想マシン内の各レベルのページ テーブル (gL4、gL3、gL2、gL1) の内容は GPA のみであるため、次のレベルを照会するときには、まず拡張ページ テーブル (nL4、nL3、nL2、nL1) を介して HPA に変換する必要があり、変換パス全体が非常に長くなります。ページ テーブルのレベルが両方とも 4 の場合、変換プロセスは次の図に示されます。

利点: アドレス変換関係を確立するためのオーバーヘッドが低くなります。独立した EPT ページ テーブルの存在により、アドレス変換の正当性が保証されます。したがって、仮想マシンのページ テーブルは、VMM の介入なしにそれ自体で変更できます。

デメリット: 変換プロセスは非常にコストがかかり、最悪の場合、24 (4 + 4 + 4 * 4) 回のハードウェア テーブル参照変換が必要になります。

どちらの従来のソリューションもセキュリティがしっかりと保証されていますが、パフォーマンスにはそれぞれ欠点があります。 SPT は、アドレス変換の正当性を確保するために変換関係を確立する際に多大なコストを支払いますが、EPT は変換関係を確立するためのコストを排除しますが、変換パスは長くなります。

その他の探検

メモリ仮想化については、業界および学界でまだ多くの研究が行われています。基本的な考え方は SPT や EPT に似ており、3 つのカテゴリに分けられます。1) 1 層ページ テーブル ソリューション。 SPT と同様に、ページ テーブルのレイヤーを使用して GVA から HPA へのマッピングを直接管理します。 2) 2層ページテーブル方式。 EPT と同様に、GVA から GPA へのマッピングと GPA から HPA へのマッピングをそれぞれ管理するために、独立したページ テーブルの 2 つのレイヤーが使用されます。 3) ハイブリッド方式。最初の 2 つのソリューションを組み合わせて、動的な選択を行います。

ダイレクト ページング: 1 層のページ テーブル ソリューション。初期のハードウェアが 1 層のページ テーブルしかサポートしていなかった場合の Xen の準仮想化ソリューションです。 SPT と比較した最大の違いは、GVA から GPA への仮想マシン ページ テーブルが個別にメンテナンスされないことです。仮想マシンは、仮想化環境にあることを認識しています。つまり、ページ テーブルの内容が HPA であることを認識しています。仮想マシンもページ テーブルを変更するときにトラップ アウトする必要がありますが、バッチ処理可能なアクティブ トラッピングを使用しますが、SPT はパッシブ インターセプト トラップです。ページ テーブルを読み取る場合、HPA のみを取得でき、GPA を取得するには M2P (Machine to Physical) テーブルをチェックする必要があります。

ダイレクト ページングもページ テーブルのレイヤーを使用して GVA から HPA へのマッピングを管理し、アドレス変換パスは SPT と同じです。 4 レベルのページ テーブルを使用する場合、最悪の場合でも 4 回のテーブル参照のみが必要になります。

利点: アドレス変換プロセスのオーバーヘッドは、物理マシンの場合と同程度に低くなります。

デメリット: 1) アドレス変換関係の確立には非常にコストがかかり、すべてのページ テーブルの変更にはアクティブなトラッピングが必要です。 2) 仮想マシンは準仮想化に適合する必要があり、仮想マシンはページ テーブルが GVA から HPA へのマッピングを管理することを認識する必要があります。

Direct Segment: 新しいハードウェアに基づいて学術コミュニティによって提案されたソリューションである 2 層ページ テーブル ソリューション。 GVA から GPA へのマッピング管理は EPT と同じであり、マルチレベル ページ テーブルも使用します。ただし、GPA から HPA へのマッピングではセグメント化されたメカニズムが採用されており、GPA を HPA に変換する場合は、ハードウェアを通じてオフセットを追加するだけで済みます。

GPA は HPA と同じではありませんが、両者のマッピング関係は非常に単純です。オフセットを追加するには、Direct Segment ハードウェアのみが必要です。変換パス全体は物理マシンのパスと非常に似ていますが、ハードウェア オフセットが少しだけ多くなっています。仮想マシンが 4 レベルのページ テーブルを使用する場合、変換パスは次の図に示されます。ここで、DS は GPA から HPA への変換に対するハードウェア サポートを示します。

利点: アドレス変換関係を確立するためのオーバーヘッドが低く、変換プロセスのオーバーヘッドも低くなります。

デメリット: 1) GPA から HPA へのセグメント マッピングにはハードウェア サポートが必要であり、既存のハードウェアにはそのような機能がありません。 2) 連続したメモリの大きなセグメントを割り当てる必要があるため、ホストのメモリが過度に断片化されないようにする必要があります。

Flat EPT: 2 層ページ テーブル ソリューション。これも、新しいハードウェアに基づいて学術コミュニティによって提案されたソリューションです。全体的にEPTと非常によく似ています。唯一の違いは、EPT が GPA から HPA を管理するために、通常はレベルごとに 512 エントリを持つ 4 つのレベルのマルチレベル ページ テーブルを使用することです。一方、Flat EPT は 1 レベルのみのフラット ページ テーブルを使用し、テーブル エントリの数は 512 をはるかに超えます。

EPT と同様に、仮想マシン内のすべてのレベルのページ テーブルの内容も GPA です。次のレベルをクエリする場合は、フラット拡張ページ テーブル (nL4) を介して HPA に変換する必要があります。フラット拡張ページ テーブルには 1 つのレベルしかないため、変換パスは EPT よりもはるかに短くなります。仮想マシンで 4 レベルのページ テーブルを使用する場合、変換パスは次の図のようになります。最悪の場合でも、必要なテーブル検索は 9 回 (4 + 1 + 4 * 1) だけです。

利点: アドレス変換関係を確立するためのオーバーヘッドが低く、変換プロセスのオーバーヘッドも低くなります。 Direct Segment と比較すると、メモリ割り当ての要件は非常に低く、フラットな拡張ページ テーブルに必要な連続メモリは少量のみです (8G の仮想マシンでは 16M のみ必要です)。

欠点: フラット拡張ページ テーブルのハードウェア サポートが必要です。現在のハードウェアは、512 エントリのマルチレベル拡張ページ テーブルのみをサポートしています。

SPT と EPT の混合: これは、学術コミュニティによって以前に提案された混合ソリューションです。簡単に言えば、SPT と EPT の動的なタイムシェアリング スイッチングです。仮想マシンの実行中、TLB ミスとページ フォールトのデータが監視および収集され、両者が設定されたしきい値に達すると、次の図に示すように、SPT と EPT の切り替えが実行されます。

  • TLBミス率がしきい値T1より高く、ページフォールト頻度がしきい値T2より低い場合は、EPTからSPTに切り替えます。
  • TLBミス率がしきい値T1より低く、ページフォールト頻度がしきい値T2より高い場合は、SPTからEPTに切り替えます。

利点: SPT と EPT の利点を最大限に活用して、より優れたパフォーマンスを実現する機会があります。

デメリット: 1) ページ テーブル切り替えしきい値の設定が難しく、ハードウェア構成がしきい値に影響を及ぼす可能性があります。 2) SPT と EPT の切り替えにもコストがかかり、主に SPT の破壊と再構築が必要になります。

要約する

シングルレイヤー ページ テーブルの大きな利点は、アドレス変換プロセスのオーバーヘッドが低く、物理マシンの場合と同じであることです。解決する必要がある問題は、アドレス変換を確立するためのオーバーヘッドを削減することです。考えられる方向性の 1 つは、セキュリティをある程度放棄し、ページ テーブルの変更を軽くすることです。もう 1 つのより実用的な方向性は、適切なシナリオ、つまりページ テーブルの変更が頻繁に行われないロードで使用することです。

2 層ページ テーブルの利点は、アドレス変換を確立するためのオーバーヘッドが小さく、仮想マシンがページ テーブルを独立して変更できることです。考慮する必要がある問題は、翻訳パスを短縮することです。この方向性は実際には非常に実現可能ですが、新しいハードウェアのサポートに依存しており、要件を満たす新しいハードウェアが短期的に登場する可能性は低いです。

ハイブリッド ページ テーブルを設計する本来の目的は、2 種類のページ テーブルの利点を最大限に活用することですが、動的なモード切り替えを行うことは非常に困難です。負荷やハードウェアの違いによって、スイッチング効果に影響が出る場合があります。おそらく、既知の負荷を対象としたチューニングは実行可能なアプローチです。

長期的には、新しいハードウェアが利用可能になれば、2 層ページ テーブル (特に Flat EPT) がより完全なソリューションになります。アドレス変換は、セキュリティと汎用性を犠牲にすることなく、非常に効率的です。ただし、短期的には新しいハードウェアを使用するのは時期尚早であり、1 層ページ テーブル ソリューションをさらに調査して最適化する方が現実的です。当社は、メモリ仮想化の分野でさらなる可能性を探求し続けます。皆様の OpenAnolis コミュニティへの参加を歓迎し、ディスカッションに参加していただきます。

著者について

Tao Zhiheng (Junchuan) は、2020 年に Alibaba Cloud オペレーティング システム - クラウド ネイティブ基盤システム チームに加わり、現在はパフォーマンスの最適化に取り組んでいます。

<<:  クラウド時代の再編における Amazon Web Services China Summit 上海の違いは何でしょうか?

>>:  Google Cloud が SAP RISE プログラムに参加

推薦する

徹底解説!時系列データベース HiTSDB: 分散ストリーミング集約エンジン

[[226527]]背景Alibaba グループ内の顧客にサービスを提供する際に、HiTSDB 時系...

Xiaomiのコア競争力を振り返る:インターネットの「ラストマイル」を突破

携帯電話のハードウェア競争と過剰なマーケティングの行き詰まりを打破したXiaomiの真の競争力は、イ...

フルGCとマイナーGCの違いが分からない

[[317199]]この記事では、主に JVM のさまざまな GC を紹介し、誰もがこれらの概念を明...

関連性の高い外部リンクの重み値が高い理由を分析する2つの側面

外部リンクはウェブサイトの最適化に欠かせない要素であるため、多くの友人が外部リンクに興味を持っている...

外部リンクはまだあります:文文がSogouに正式に合併

Wenwenjun は Sogou 検索ファミリーに加わり、新しいウェブサイト wenwen.sog...

広告提携で収益を得るのと広告スペースを貸し出すのとではどちらが良いのでしょうか?

私たちウェブマスターや独立ブロガーにとって、ウェブサイトやブログを構築した後は、ホストドメイン名の費...

ウェブサイトの商品を販売する方法

起業家が独自に製品を作り、開発していくのはもちろん良いことですが、場合によっては「買収される」という...

Baiduの最適化調整後の新機能の概要

Baidu は最近、低品質コンテンツに対する最初の取り締まりからリンク不正に対する 2 回目の取り締...

Zolvit が Linode でクラウド コストを 50% 削減した方法

Akamaiのクラウドコンピューティングサービスによりクラウド コストが50%削減「Akamai チ...

同じウェブサイトを構築してもなぜ収益が上がらないのでしょうか?

現時点では、イチゴの卸売価格は1斤4元で、農産物直売所では1斤8元で販売できる。ジュースにすると、1...

Rushmail: 一括メールプラットフォームを使用してサービス品質を向上させる方法

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス今日のインターネット時代...

hostkvm のロサンゼルス cn2 vps、バックホールの簡単なレビュー: 中国電信 AS4809、中国聯通 AS9929、中国移動直接接続

Hostkvm は、誰もが好むアジアのデータセンターの VPS だけでなく、米国ロサンゼルスの非常に...

Baidu が Aibang.com を買収すると報じられているが、Aibang.com はコメントを控えた。

Baidu が Aibang.com を買収すると報じられているが、Aibang.com はコメント...

可観測性: IDE をデバッグする方法

[51CTO.com クイック翻訳] COVID-19パンデミックにより、多くの企業がクラウドネイテ...