DAX 驅動操作¶
直接訪問裝置驅動最初旨在為類記憶體塊裝置提供類似記憶體的訪問機制。 它被擴充套件為支援 CXL 記憶體裝置,該裝置提供使用者配置的記憶體裝置。
CXL 子系統依賴於 DAX 子系統,以:
透過
/dev/daxN.Y生成類似檔案的使用者空間介面,或者啟用記憶體熱插拔介面,將 CXL 記憶體新增到頁面分配器。
DAX 子系統透過 cxl_dax_region 驅動程式公開此功能。dax_region 提供 CXL memory_region 和 DAX 裝置 之間的轉換。
DAX 裝置¶
DAX 裝置 是在 /dev/daxN.Y 中公開的類似檔案的介面。 可以透過使用者空間軟體,使用 mmap() 系統呼叫訪問透過 DAX 裝置公開的記憶體區域。 結果是直接對映到任務的頁表中的 CXL 容量。
希望手動處理 CXL 記憶體分配的使用者應該使用此介面。
kmem 轉換¶
dax_kmem 驅動程式將 DAX 裝置 轉換為由 kernel/memory-hotplug.c 管理的一系列 熱插拔記憶體塊。 此容量將在使用者選擇的記憶體區域中公開給核心頁面分配器。
memmap_on_memory 設定(全域性的和 DAX 裝置本地的)決定了核心將在哪裡分配此記憶體的 struct folio 描述符。 如果設定了 memmap_on_memory,記憶體熱插拔將留出部分記憶體塊容量來分配頁面。 如果未設定,則透過正常的 GFP_KERNEL 分配來分配記憶體 - 因此很可能位於執行熱插拔操作的 CPU 的本地 NUM 節點上。