---
title: NUMA精细化分析
description: "基于ARM SPE的能力分析得到系统精细化的DDR访问、 NUMA 访问流量矩阵以及进程的内存访问等相关信息。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/devkit_24_rc3/cliuserguide/KunpengDevKitCli_0035.html
sourcePath: /source/zh/kunpengdevkithistory/devkit_24_rc3/cliuserguide/KunpengDevKitCli_0035.html
indexId: 5c4f5a7c7e4b5db51a3f322190247192656cef093bf55e7341a6179df6e5e0b785
---
# NUMA精细化分析

#### 命令功能

基于ARM SPE的能力分析得到系统精细化的DDR访问、 NUMA 访问流量矩阵以及进程的内存访问等相关信息。

- 采集NUMA精细化数据时需要服务器支持ARM SPE采集能力，配置SPE请参见  配置SPE环境(https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/devkit_24_rc3/usermanual/kunpengoper_06_0010.html)
。
- 已生成TAR包的任务可导入Web界面进行图形可视化的查看。导入详情请参见  任务管理(https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/devkit_24_rc3/usermanual/devkit-hypertuner-062.html)
中的任务导入部分内容。


#### 命令格式

```
devkit tuner numafast [-d <DURATION> | --duration=DURATION] [-i <INTERVAL> | --interval=INTERVAL]
```


#### 参数说明


**表1 参数说明**

| 参数 | 参数选项 | 说明 |
| --- | --- | --- |
| \-h/\-\-help | \- | 获取帮助信息。 |
| \-o/\-\-outpath | \- | 设置报告数据压缩包名称和输出路径，仅输入名称时默认生成在当前所在目录；需和\-\-package配合使用。 |
| \-l/\-\-log\-level | 0/1/2/3 | 设置日志级别，默认为1。 0：日志级别为DEBUG。 1：日志级别为INFO。 2：日志级别为WARNING。 3：日志级别为ERROR。 |
| \-d/\-\-duration | \- | 设置采集时长，单位为秒，取值范围2至172,800秒，默认为一直采集，可使用Ctrl+\取消任务或Ctrl+C停止采集并进入分析。 |
| \-i/\-\-interval | \- | 设置采集间隔，默认为5秒，取值范围2至30秒。 |
| \-c/\-\-count | \- | 设置SPE采集指令间隔，取值范围1至4,294,967,295个，默认为2048。 |
| \-n/\-\-num | \- | 设置需要展示的TopN的进程数，默认为10个，取值范围1至30个。 |
| \-\-package | \- | 设置是否生成报告数据压缩包，名称默认为numafast\-时间戳.tar。 |
| \-f/\-\-file | \- | 设置仅生成报告数据而不将其生成可使用的报告数据压缩包。该参数需和\-\-package配合使用。 |


#### 使用示例

命令：

```
devkit tuner numafast -i 2 -c 2048 -n 3 --package
```

- 该命令采集参数为采样间隔2秒，SPE采集指令间隔为2048个，展示Top3的进程数，并生成报告数据压缩包到默认路径。
- 不设置-d参数时可使用Ctrl+\取消任务或Ctrl+C停止采集；若使用-d参数，输出报告数受-i参数影响，例：-d 10 -i 2（采样时长10秒，采样间隔2秒，则生成报告数为5份）。


返回信息如下：

```
Enter analyze mode, please wait 5 seconds...
NUMAFAST ANALYSIS(Press Ctrl+C to exit)
==========================================================================================
1. System's numa score : 0.88
Note: score = (max cost - real cost) / (max cost - min cost)
real cost = SUM(0<=i,j<node number) numa distance(i, j) * access percentage(i, j)
max cost = MAX(numa distance) , min cost = MIN(numa distance).
This score is best at 1 and worst at 0.
Format: traffic | numa distance | access percentage.
DST_0               DST_1               DST_2               DST_3
SRC_0   0.63GB|10|38.24%    1.03GB|12|23.53%    0.10GB|20|8.82%     0.12GB|22|2.94%
SRC_1   0.00GB|12|0.00%     1.16GB|10|26.47%    0.00GB|22|0.00%     0.00GB|24|0.00%
SRC_2   0.00GB|20|0.00%     0.00GB|22|0.00%     0.00GB|10|0.00%     0.00GB|12|0.00%
SRC_3   0.00GB|22|0.00%     0.00GB|24|0.00%     0.00GB|12|0.00%     0.00GB|10|0.00%
==========================================================================================
2. Node detail information of memory access traffic:
Note:RMA(Die): Access traffic across NUMA dies.
RMA(Socket): Access traffic across NUMA sockets.
LMA: Local access traffic on the NUMA node.
%CPU: Number of occupied CPU cores. For example, 600% indicates that 6 CPU cores
are occupied.
NID RMA(Die) RMA(Skt)      LMA  %RMA MEM(all) MEM(free) %MEM   %CPU
0   1.03GB   0.22GB   0.63GB  66.5  63.21GB    0.27GB 99.6  137.1
1   0.00GB   0.00GB   1.16GB   0.0  63.93GB    0.77GB 98.8   93.2
2   0.00GB   0.00GB   0.00GB   0.0  63.93GB   10.69GB 83.3   96.4
3   0.00GB   0.00GB   0.00GB   0.0  62.93GB   48.75GB 22.5  109.6
==========================================================================================
3. Show top 3 process which sorted by memory access:
Note:If the collected processes less than the number specified by -n (--num), only the actual processes are displayed.
MIGRATED X|Y: X indicates how many times threads of the process are migrated between
NUMA nodes, and Y indicates the number of threads in the process.
ACCESS: Percentage of the process access traffic to the total traffic.Top N
sorting is based on this.
PID  SCORE  ACCESS RMA(Die) RMA(Skt)      LMA  %RMA MIGRATED   %CPU  COMMAND
2083500   1.00  38.24%   0.00GB   0.00GB   0.63GB   0.0   0|2       nan  test_thread
3296840   0.97  32.35%   0.26GB   0.00GB   1.16GB  18.2   0|2       nan  python
3784179   0.61  29.41%   0.77GB   0.22GB   0.00GB 100.0   0|1       nan  gunicorn
==========================================================================================
```


- 输出报告说明
  报告由三部分组成，分别为访存矩阵信息，内存访问流量的节点详细信息和按内存访问排序的进程信息。
  1. 访存矩阵
    每个数据有三个组成，分别为SRC到DST的带宽流量，SRC到DST的NUMA切换次数，该SRC到DST的流量在总流量的占比。

  2. 内存访问流量的节点详细信息
**表2 节点详细信息表头说明**

| 参数 | 说明 |
| --- | --- |
| NID | NUMA的ID。 |
| RMA(Die) | 跨NUMA的访问流量。 |
| RMA(Skt) | 跨NUMA套接字访问流量。 |
| LMA | NUMA节点上的本地访问流量。 |
| %RMA | 远端访问流量占比。 |
| MEM(all) | 总内存大小。 |
| MEM(free) | 可使用内存的大小。 |
| %MEM | 内存使用率。 |
| %CPU | 占用CPU核数，如600%表示占用6个CPU核。 |


  3. 显示按内存访问排序的前N个进程信息
**表3 进程信息表头说明**

| 参数 | 说明 |
| --- | --- |
| PID | 进程ID。 |
| SCORE | NUMA情况评分。 |
| ACCESS | 进程访问流量占总流量的百分比，Top N的排序就是以此为基础的。 |
| RMA(Die) | 跨NUMA的访问流量。 |
| RMA(Skt) | 跨NUMA套接字访问流量。 |
| LMA | NUMA节点上的本地访问流量。 |
| %RMA | 远端访问流量占比。 |
| MIGRATED | 线程在不同NUMA节点的迁移次数和进程的线程数。 |
| %CPU | CPU使用率。 |
| COMMAND | 进程的命令行。 |
