开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

片上内存使用分析与性能优化

本节介绍如何确定片上内存的使用方式及片上内存带宽利用率以提高程序性能。

  1. 运行目标程序,执行如下命令观察内存使用情况。
    1. 执行如下命令,查看内存的增长及SWAP使用情况,此时查看的MEM包含片上内存和DDR,无法明确不同NUMA对应的是片上内存还是DDR。

      free -h

      回显如下。

                         total                 used              free         shared           buff/cache                  available  
      Mem:               567Gi                 93Gi              425Gi         156i	          67Gi                       473Gi  
      Swap:                0B                   0B                 0B  
      
    2. 执行如下命令,可以看到具体的NUMA node的内存使用情况。

      numactl -H

      如下图所示1-15 NUMA为DDR,每个NUMA 32G;16 -31 NUMA 为片上内存,每个NUMA 4G

      ...  
      node 14 cpus:532  533  534  535  536  537  538  539  540  541  542  543  544  545  546  547  548  549  550  551  552  553  554  555  556  557   558  559  560  561  562  563  564  565  566  567  568  569  
      node 14 size:32250 MB  
      node 14 free:28237 MB  
      node 15 cpus:570  571  572  573  574  575  576  577  578  579  580  581  582  583  584  585  586  587  588  589  590  591  592  593  594  595   596  597  598  599  600  601  602  603  604  605  606  607  
      node 15 size:32231 MB  
      node 15 free:28098 MB  
      node 16 cpus:  
      node 16 size:4096 MB  
      node 16 free:4085 MB  
      node 17 cpus:  
      node 17 size:4096 MB  
      node 17 free:4089 MB  
      node 18 cpus:  
      node 18 size:4096 MB  
      node 18 free:4090 MB
  2. 确定片上内存的使用方式。
  3. 抓取片上内存带宽利用情况。
    应用运行过程中可以通过鲲鹏DevKit的系统性能分析工具Tuner抓取片上内存带宽利用情况。参考命令如下:
    devkit tuner memory -m 4

    上述指令执行结束后,可输出内存带宽情况,如下内容所示:

    Memory Summary Report-ALL                               Time:2026/04/14 14:30:54
    ================================================================================
    System Information                                
    ────────────────────────────────────────────────────────────────────────────────
    Linux Kernel Version  5.10.0-285.2.v2403.ky10p.aarch64
    Cpu Type              Kunpeng 920 72Fx      
    NUMA NODE(cpus)       0(0-37)     1(38-75)    2(76-113)   3(114-151)  
                          4(152-189)  5(190-227)  6(228-265)  7(266-303)  
                          8(304-341)  9(342-379)  10(380-417) 11(418-455) 
                          12(456-493) 13(494-531) 14(532-569) 15(570-607) 
                          16(N/A)     17(N/A)     18(N/A)     19(N/A)     
                          20(N/A)     21(N/A)     22(N/A)     23(N/A)     
                          24(N/A)     25(N/A)     26(N/A)     27(N/A)     
                          28(N/A)     29(N/A)     30(N/A)     31(N/A)     
    Percentage of core Cache miss                     
    ────────────────────────────────────────────────────────────────────────────────
    L1D         3.40%
    L1I         0.08%
    L2D        74.90%
    L2I        65.45%
    
    DDR Bandwidth (system wide)                       
    ────────────────────────────────────────────────────────────────────────────────
    ddrc_write        2710.97MB/s
    ddrc_read         8881.06MB/s
    
    HBM Bandwidth                                     
    ────────────────────────────────────────────────────────────────────────────────
    HBM read          4512924.00MB/s
    HBM write         5458727.00MB/s

    1、鲲鹏DevKit的系统性能分析工具Tuner的参数说明及更多使用方式可以参考官网指导:《系统性能分析Tuner》

    2、鲲鹏DevKit的系统性能分析工具Tuner抓取的是整个节点的片上内存总带宽。