numactl 操作流程


1. 检查NUMA节点信息

在进行任何绑定操作之前,先检查系统的NUMA节点信息,以了解可用的CPU和内存节点。

1
numactl --hardware

记录输出信息,确保了解系统中所有NUMA节点及其CPU核心分布。

2. 确定需要绑定的CPU核心和NUMA节点

根据应用程序的需求和系统的NUMA节点分布,确定需要绑定的CPU核心和内存节点。例如,假设需要绑定到CPU 2和3,并使用NUMA节点0上的内存。

3. 绑定CPU核心

将应用程序绑定到特定的CPU核心,以提高CPU利用率和性能。

1
numactl --physcpubind=2,3 your_command

例如,运行名为 my_program 的应用程序:

1
numactl --physcpubind=2,3 ./my_program

4. 绑定NUMA节点内存

如果还需要绑定到特定的NUMA节点内存,使用以下命令:

1
numactl --membind=0 your_command

例如,运行名为 my_program 的应用程序,并绑定到NUMA节点0的内存:

1
numactl --physcpubind=2,3 --membind=0 ./my_program

5. 验证绑定结果

运行以下命令来检查进程的CPU和内存绑定情况,确保绑定成功。

1
numactl --show

6. 测试和监控

运行应用程序后,监控其性能和资源使用情况,确保绑定操作达到了预期效果。可以使用以下工具进行监控:

  • top
  • htop
  • numastat
  • perf

示例SOP

步骤1:检查NUMA节点信息

1
numactl --hardware

输出示例:

1
2
3
4
5
6
7
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3
node 0 size: 32632 MB
node 0 free: 12345 MB
node 1 cpus: 4 5 6 7
node 1 size: 32768 MB
node 1 free: 23456 MB

步骤2:确定绑定的CPU核心和NUMA节点

假设需要绑定到CPU 2和3,并使用NUMA节点0上的内存。

步骤3:绑定CPU核心

1
numactl --physcpubind=2,3 ./my_program

步骤4:绑定NUMA节点内存

1
numactl --physcpubind=2,3 --membind=0 ./my_program

步骤5:验证绑定结果

1
numactl --show

输出示例:

1
2
3
4
policy: default
physcpubind: 2 3
cpubind: 0
membind: 0

步骤6:测试和监控

使用 htopnumastat 等工具监控应用程序的性能和资源使用情况。

通过上述步骤,可以确保应用程序在NUMA系统上得到优化运行。