Expanding CXL Software Ecosystem through HMSDK on Linux

Honggyu Kim, SK hynix - With the advent of CXL memory, some systems are becoming more heterogeneous having memory systems with different latency and bandwidth characteristics. They are usually handled as different NUMA nodes in separate memory tiers and CXL memory is used as slow tiers because of its protocol overhead compared to DIMM attached local DRAM. In this kind of systems, we need to be careful placing memory pages on proper NUMA nodes. If the placement is suboptimal, some frequently accessed pages might reside on slow tiers and it makes performance degradation unexpectedly. This session will introduce a heterogeneous memory software development kit, called HMSDK[1]. This project includes weighted interleaving[2] for bandwidth expansion and DAMON based memory tiering[3] for capacity expansion. In addition, it also provides heterogeneous memory allocation APIs and a user control tool[4] so that developers can fine tune their program by explicitly managing specific memory area using hmalloc APIs and hmctl tool. HMSDK has contributed its kernel features to the mainline Linux kernel successfully. The weighted interleaving is supported from linux-v6.9 and linux-v6.11 was recently released with its DAMON based tiered memory management. In addition, the userspace tools such as numactl and damo has accepted HMSDKs features for the ease of use for general users. In this talk, Honggyu will explain how HMSDK tries to expand CXL software ecosystem on Linux environment.