CXL type3 设备的NUMA node生成

一、 查看node

CXL type3设备,通过NUMA node来管理扩展内存,查看NUMA node是否生成可以通过命令查看:

numactl -H

从上图可以看到除了本地node 0 、1外,新增了node 2

通过dmesg查看启动信息:

可以看到node信息,可以看到node 2对应的memory分配的地址范围。

二、 通过lspci查看CXL设备信息:

lspci | grep  CXL

三、 查看ACPI表信息

ACPI node信息是系统生成NUMA node的必要条件,为排查CXL type3设备在BIOS启动过程中,是否正常获得ACPI表,可以通过以下命令查看,

1. acpidump > acpi.log
2. acpixtract -a acpi.log
3. iasl -d *.dat 

会看到一下文件:

在hmat.dsl, srat.dsl等文件中可以看到domain node 2相关的信息。

四、 性能测试

使用mlc工具测试cxl memory性能和时延:

mlc  --bandwidth_matrix

mlc  --latency_matrix

mlc更多用法:

 默认是顺序读,或顺序写,可以指定大小,命令可以参考如下:

       一、大块内存顺序读带宽测试

1. 基础顺序读(全读,默认顺序访问)

  • 命令:mlc --bandwidth_matrix -R -b<size>
    或 mlc --peak_injection_bandwidth -R -b<size>
    或 mlc --max_bandwidth -R -b<size>
  • 参数说明
    • -R:强制生成 100% 读流量,确保纯顺序读测试;
    • -b<size>:指定大块缓冲区大小(支持k/m/g后缀,如-b2g表示 2GB),需满足 “单线程缓冲区≥100MB + 单插槽所有线程缓冲区总和>该插槽末级缓存(L3)总大小”,确保访问目标为内存而非缓存;
    • --bandwidth_matrix/--peak_injection_bandwidth/--max_bandwidth:分别对应 “跨插槽带宽矩阵”“核心满速峰值带宽”“自动调优最大带宽” 场景,按需选择。
  • 示例:mlc --peak_injection_bandwidth -R -b4g
    含义:以 4GB 大块缓冲区,测试核心满速请求下的 100% 顺序读内存带宽(默认顺序访问)。

2. 单 NUMA 节点大块顺序读

  • 命令:mlc --memory_bandwidth_scan -j<node> -b<size>
  • 参数说明
    • --memory_bandwidth_scan:按 1GB 块粒度扫描指定 NUMA 节点的全内存范围,默认顺序访问;
    • -j<node>:指定目标 NUMA 节点(如-j0表示 NUMA 节点 0);
    • -b<size>:指定大块缓冲区,确保覆盖内存区域(如-b10g)。
  • 示例:mlc --memory_bandwidth_scan -j1 -b8g
    含义:扫描 NUMA 节点 1 的全内存,以 8GB 大块缓冲区测试各 1GB 块的顺序读带宽,输出带宽分布直方图。

二、大块内存顺序写带宽测试

仅支持 “100% 非临时写”(文档未提及普通全写,需通过-W6参数指定非临时写),命令需结合缓冲区大小与写模式参数:

1. 基础顺序非临时写

  • 命令:mlc --bandwidth_matrix -W6 -b<size>
    或 mlc --peak_injection_bandwidth -W6 -b<size>
  • 参数说明
    • -W6:生成 100% 非临时写流量(顺序访问),对应内存控制器视角的纯写操作;
    • -b<size>:指定大块缓冲区(如-b2g),满足 “单线程缓冲区≥100MB + 单插槽总缓冲区>L3 总大小”,确保写操作目标为内存。
  • 示例:mlc --bandwidth_matrix -W6 -b3g
    含义:以 3GB 大块缓冲区,测试跨插槽的 100% 顺序非临时写内存带宽矩阵。

三、大块内存顺序读写交替测试

通过-Wn参数定义读写比(内存控制器视角),实现顺序读写交替,默认顺序访问:

1. 常用读写比命令模板

  • 命令:mlc --<测试模式> -W<n> -b<size>
  • 参数说明
    • -W<n>:定义读写比,如-W2(2 读 1 写)、-W3(3 读 1 写)、-W5(1 读 1 写),均为顺序交替;
    • <测试模式>:同前,可选--bandwidth_matrix/--peak_injection_bandwidth等;
    • -b<size>:指定大块缓冲区(如-b2g)。
  • 示例 1(1 读 1 写交替):mlc --peak_injection_bandwidth -W5 -b2g
    含义:以 2GB 大块缓冲区,测试核心满速下 1 读 1 写顺序交替的内存带宽。
  • 示例 2(2 读 1 写交替):mlc --loaded_latency -W2 -b1g -T
    含义:以 1GB 大块缓冲区,测试 2 读 1 写顺序交替的内存带宽(-T仅测带宽不测延迟)

QA:

调试CXL设备时,当系统无法启动,可以禁止系统对CXL memory的自由使用,如通过reserve memory的方式,soft reserve可以保留node而hard reserve看不到node,但是可以访问对应的物理地址。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值