2023年12月,三星电子与全球顶级企业Linux供应商红帽携手,首次在业界成功验证了CMM-D (CXL* (计算快速链接)存储器模块动态随机存储器) 存储器技术的运行1。 此次运行验证的重大意义在于它使CMM-D也能够利用NUMA*(Non-Uniform Memory Access)架构,而这种架构以前仅限于动态随机存储器(DRAM)模块。 三星电子和红帽在红帽网站上发布RHEL(Red Hat Enterprise Linux)9 CXL(计算快速链接)使用指南,以便使服务器用户可以轻松地使用CMM-D。发布计算快速链接存储器使用指南2
本文将详细介绍存储器分层及其细节特点,它是将扩展到CMM-D的NUMA结构在服务器上轻松易用的功能之一。
存储层次结构(Memory Hierarchy)
存储层次结构(Memory Hierarchy)是指对系统中使用的不同类型的存储器进行分层配置。 这种层次结构可分为速度、容量、频率等,其目的是通过同时使用具有相似特性的存储器来快速访问和高效管理数据,从而提高整个系统的性能。
根据存储器的性能和容量,可将其分为高速缓冲存储器(Cache Memory)、具有高速特性的主存储器(Main Memory)和具有大容量特性的存储器扩展器(Memory Expander)。各存储器的特性如下图所示。
存储器分层
一旦CMM-D安装在服务器上,就会被识别为零CPU NUMA(没有CPU的NUMA),并被识别为与D-RAM模块不同的NUMA节点,从而出现CPU访问时间的差异。 存储器分层就是考虑到此时出现的访问速度差异,有效使用存储器的技术。 存储器分层可以在内核级别启用功能,也可以利用虚拟磁盘(Ramdisk)、大页(Hugepage)来配置功能。
内存升级(Memory Promotion)、降级(Demotion)
存储器分层的主要功能包括内存升级和内存降级。
内存升级是将存储器访问频率高的热数据放置在高速存储器D-RAM中的功能,内存降级则是将不常用的冷数据放置在大容量CMM-D中的功能。 可以根据需要将这些数据迁移到存储器中,从而提高系统运行效率。
存储器分层的应用实践
下面是利用CMM-D的存储器分层的实际应用方法。
■ 存储器分层的设置
下载cxl、dax和numa相关软件包以配置dax设备系统类型。
如果查看dax设备列表,可以确认CMM-D是系统存储器形式的普通类型。
要启用NUMA Demotion功能,请将其设置为numa_balancing存储器分层模式。 如果启用此选项,则可以通过将数据存储在CMM-D中来防止本地存储器区域负载过重。
※ numa_balancing支持选项列表
0 : NUMA_BALANCING_DISABLED
1 : NUMA_BALANCING_NORMAL
2 : NUMA_BALANCING_MEMORY_TIERING
如果添加CMM-D后未设置存储器分层而发生存储器过载情况,则使用交换内存(Swap memory)。 然而,在设置了存储器分层的环境中,不使用慢速交换内存,通过CMM-D,可以确认pgpromote_success、pgdemote_kswapd、pgmigrate_success等运行状态。
※ pgpromote_success: 该值表示执行页面升级的次数。 页面升级是将存储器中的页面移动到更高级别的缓存或存储器以实现更快的数据访问的过程。
※ pgdemote_kswapd: 该值表示执行页面调试的次数。 页面的调试是将页面是将存储器的页面移动到更低水平的缓存或存储器的过程。 在存储器不足的情况下,通过调试或交换页面以确保更多可用存储器。
1 https://semiconductor.samsung.com/news-events/news/exceptional-scalability-with-cxl-memory-samsung-and-red-hat-expand-the-ecosystem/
2 https://www.redhat.com/ko/resources/rhel-cxl-usage-guide