进入正文

在CMM-D (存储器模块动态随机存储器) 中利用Linux NUMA (非一致性内存访问架构) : 存储器分层 (Memory Tiering)

  • 邮件
在CMM-D(存储器模块动态随机存储器)中利用Linux NUMA(非一致性内存访问架构):存储器分层(Memory Tiering)
在CMM-D(存储器模块动态随机存储器)中利用Linux NUMA(非一致性内存访问架构):存储器分层(Memory Tiering)

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

 

• CXL(Compute Express Link):是一种下一代接口标准,能够为高性能服务器系统中与CPU(中央处理器)一起使用的加速器、DRAM和存储设备提高效率。
 
• NUMA(非一致性内存访问架构)是一种有效管理存储器的方法,通过将每个CPU划分为可访问的存储器区域来解决瓶颈问题。
 
 

本文将详细介绍存储器分层及其细节特点,它是将扩展到CMM-D的NUMA结构在服务器上轻松易用的功能之一。

 


存储层次结构(Memory Hierarchy)

存储层次结构(Memory Hierarchy)是指对系统中使用的不同类型的存储器进行分层配置。 这种层次结构可分为速度、容量、频率等,其目的是通过同时使用具有相似特性的存储器来快速访问和高效管理数据,从而提高整个系统的性能。

 

根据存储器的性能和容量,可将其分为高速缓冲存储器(Cache Memory)、具有高速特性的主存储器(Main Memory)和具有大容量特性的存储器扩展器(Memory Expander)。各存储器的特性如下图所示。

存储层次结构
存储层次结构
• 主存(Main Memory): 是系统的主存储器,由动态随机存取存储器(D-RAM)组成, 储存容量小,但处理速度快, 是CPU临时存放待执行程序和数据的空间。
 
• 存储器扩展器(CMM-D) : 是基于计算快速链接接口的存储器模块, 与主存相比,存储容量较大,但处理速度较慢, 通过存储器分层提高效率。
 
• 储存:由固态硬盘(SSD)和机械硬盘(HDD)等非易失性存储设备组成, 其容量是TB级别,非常大,但速度明显慢于存储器,并且延迟非常厉害。
 
 

存储器分层

一旦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是系统存储器形式的普通类型。

code image 1
code image 1

要启用NUMA Demotion功能,请将其设置为numa_balancing存储器分层模式。 如果启用此选项,则可以通过将数据存储在CMM-D中来防止本地存储器区域负载过重。

code image 2
code image 2

※ numa_balancing支持选项列表

0 : NUMA_BALANCING_DISABLED

1 : NUMA_BALANCING_NORMAL

2 : NUMA_BALANCING_MEMORY_TIERING

 

■ 存储器分层验证设置
为了验证NUMA存储器分层设置是否正确,可以使用压力测试工具。 压力测试工具在EPEL仓库中提供,因此需要先下载EPEL软件包,然后安装压力测试软件包。 安装压力基准测试工具后,执行超过存储器容量70%的负载才能使用交换分区(Swap)。
code image 3
code image 3

如果添加CMM-D后未设置存储器分层而发生存储器过载情况,则使用交换内存(Swap memory)。 然而,在设置了存储器分层的环境中,不使用慢速交换内存,通过CMM-D,可以确认pgpromote_success、pgdemote_kswapd、pgmigrate_success等运行状态。

code image 4
code image 4

※ 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