1

ゲストの起動時に、xen がゲストに必要なすべての物理メモリを割り当てることを理解しています。また、シャドウ ページ テーブルを維持します (これを維持するために struct page_info を使用していると仮定しています。私は正しいですか? 誰も説明できない場合は?) アクセスしたいのは、そのリストをトラバースして、ゲストがこのページが割り当てられているユーザーは、少なくとも 1 回アクセスしたことがあります。

struct page_info {
  union {
  };
  pointer next, prev;
  union {
  };
};

これを達成する方法を誰かに説明してもらえますか?

4

1 に答える 1

1

ゲストの起動時に、xen がゲストに必要なすべての物理メモリを割り当てることを理解しています。

おそらく。現在の Xen ツールスタックはこれを行っていると思いますが、代わりに、ゲストが実際にアクセスするまで割り当てを実際に実行せずに、ゲストの物理メモリの予約を実行するという提案があります。これの動機は、メモリーのオーバーコミットにより、メモリーのバルーニングを可能にするゲストのホストの容量を増やし、セキュリティ上の目的と分離の実施に必要な時間のかかるすべてのゲスト メモリーのスクラブを回避することです。ゲスト。

また、シャドウページテーブルを維持します

一部のゲストの場合、一部の構成では、はい。これは、Xen がハードウェア拡張ページ テーブル サポート (Intel EPT など) を使用していない完全仮想化 (別名 HVM) ゲストに対して行われます。準仮想化ゲストの場合はそうしません。

(これを維持するために struct page_info を使用していると仮定しています。私は正しいですか?そうでない場合、誰かが説明できますか?)

うーん。シャドウ ページ テーブルは、非常に洗練された複雑なソフトウェアです。複数のデータ構造を使用して、ゲストの仮想化されたアドレス空間を維持します。コードを理解するには、コードを詳細に調べる必要があると思います。ここでの短い答えの範囲を超えています。

このページが割り当てられているゲストが少なくとも 1 回アクセスしたかどうかを確認するためにそのリストを走査する必要があるため、アクセスしたいものです。

ゲスト ページ テーブルでページを存在しないものとしてマークし、Xen のシャドウ ページ テーブル コードでページ フォールト ハンドラーを変更して、トラップで存在するものとして修正する必要がありますが、発生したアクセスを追跡するために独自のデータ構造も更新する必要があります。 . 仮想マシンのライブ マイグレーションを実行するときに使用されるダーティ ビットマップ トラッキングと呼ばれる、読み取りではなく書き込みのゲスト ページ アクセスを追跡するための、これと同様のコードがあります。

これを達成する方法を誰かに説明してもらえますか?

物理メモリの場所へのゲストの読み取りアクセスを追跡したい動機を説明していただけると助かります。

于 2012-11-13T01:29:08.830 に答える