ホストに大きなメモリ負荷がかかっている場合に、Linux ゲスト VM のパフォーマンスを向上させると思われる更新された一連のパッチが金曜日に投稿されました。
2021 年半ば以来、Google の ChromeOS は「数千万台のデバイス」で同様のコードを使用しており、最近では MGLRU の研究で知られる Google エンジニアの Yu Zhao がこの改善のアップストリームに取り組んでいます。
パッチの目的は、KVM MMU ロックを取得せずに、アクセスされたビットをクリアするための高速パスを提供することです。 Yu Zhao はこれらのパッチを 2 月に投稿しており、金曜日の v2 パッチはコードをリファクタリングし、以前のレビューからのフィードバックを組み込んでいます。
パッチ シリーズ では次のように説明されています。
“このパッチセットの目標はホスト メモリがオーバーコミットされている場合にゲストのパフォーマンスを最適化します。これは、ハードウェアが KVM PTE のアクセス ビットを設定し、VM がネストされていないという単純だが一般的なケースに焦点を当てています。複雑なケースは、kvm->mmu_lock という既存の低速パスにフォールバックします。
高速パスは、アクセスされたビットを安全にクリアするための 2 つの技術、RCU と CAS に依存しています。前者は KVM ページ テーブルが解放されないように保護し、後者はアクセスされたビットをハードウェアと他のソフトウェア ページの両方に対してアトミックにクリアします。テーブル ウォーカー。」
ホストがメモリ不足に直面しているときの VM ゲストのパフォーマンス向上を定量化するためのベンチマークが間もなく公開されると言われています。
Google のエンジニアは、カーネルのもう 1 つの改善点として、オーバーコミットされた VM をより適切に処理するためのワーキング セット レポートにも取り組んでいます。