We have the explicit memory tiers framework to manage systems with multiple types of memory, e.g., DRAM in DIMM slots and CXL memory devices. Where, same kind of memory devices will be grouped into memory types, then put into memory tiers. To describe the performance of a memory type, abstract distance is defined. Which is in direct proportion to the memory latency and inversely proportional to the memory bandwidth. To keep the code as simple as possible, fixed abstract distance is used in dax/kmem to describe slow memory such as Optane DCPMM.
To support more memory types, in this series, we added the abstract distance calculation algorithm management mechanism, provided a algorithm implementation based on ACPI HMAT, and used the general abstract distance calculation interface in dax/kmem driver. So, dax/kmem can support HBM (high bandwidth memory) in addition to the original Optane DCPMM.
Huang Ying (4): memory tiering: add abstract distance calculation algorithms management acpi, hmat: refactor hmat_register_target_initiators() acpi, hmat: calculate abstract distance with HMAT dax, kmem: calculate abstract distance with general interface
drivers/acpi/numa/hmat.c | 146 ++++++++++++++++++++----------- drivers/dax/kmem.c | 62 ++++++++++--- include/linux/memory-tiers.h | 39 +++++++++ mm/memory-tiers.c | 165 ++++++++++++++++++++++++++++++++++- 4 files changed, 344 insertions(+), 68 deletions(-)