HMM (Heterogeneous Memory Management) v7
デバイスのアドレス空間とCPUのプロセスアドレス空間を、ミラーする仕組みである。ただし、これをするとうれしいアプリケーションが今一歩わからない。HMMの参考文献のPDFの最後のページにユースケースが書いてはあるのだけど。そんなにGPU前提のアプリケーションを書くのが楽になるのだろうか?
さて、MMU Notifier自体は、該当メモリがスワップした等を連絡するための仕組みである。これ自体は、ホストからゲストに通知するためKVM用に導入されたが、InfinibandとかGPUとかのMMU状態通知でも使えることは、そのころからわかっていた話である。
- mmu_notifierのパッチ2つは、mmu_eventの追加および、アドレスレンジと左記イベントをまとめた構造体の導入である。そして、mmu_notifierの変更の影響は、ハイパーバイザとドライバ周り
- HMMの基本構造は、hmm_mirror構造体およびhmm_device構造体、そしてページテーブルは、hmm_pt構造体からなる。そして、HMMはmmu_notifierからのイベントをhmm_event構造体を通して、デバイスのページとCPUのページのミラーリング操作する。
- これって、NVIDIAも絡んでいるにもかかわらず、そのソースコードがないのはどうしてなんだろう?
- 参考文献
- HMM
- MMU Notifierまわり
- ソースコード
- http://article.gmane.org/gmane.linux.kernel.mm/126456
- http://article.gmane.org/gmane.linux.kernel.mm/126457
- '[PATCH 3/7] HMM: introduce heterogeneous memory management.' - MARC
- '[PATCH 4/7] HMM: add HMM page table.' - MARC
- '[PATCH 5/7] HMM: add per mirror page table.' - MARC
- '[PATCH 6/7] HMM: add device page fault support.' - MARC