更新时间:2025-11-04 GMT+08:00
分享

程序绑核

简介

进程绑核(又称 CPU 亲和性,CPU Affinity)是一种将进程或线程 “绑定” 到特定 CPU 核心上运行的技术,通过限制进程在指定核心间调度,实现对进程运行位置的精确控制。

准备工作

准备一台ECS主机。

前置条件

  • 适用场景:CPU调度频繁、跨numa和跨片带来性能下降的场景。
  • 设置效果:设置CPU到固定核心上,不会发生CPU调度、跨numa和跨片。

操作步骤

  1. taskset命令,将进程绑定CPU。

    启动时绑核:

    taskset -c {cpu_lists}  + 运行的程序

    运行中绑核:

    taskset -cp {cpu_lists}  + 程序的pid

  1. 如果是numa架构,也可选择numactl命令进行绑定。

    绑核:

    numactl -C {cpu_list} + 运行的程序 
    #-C cpus或--physcpubind=cpus

    绑numa范围的核:

    numactl -N {numa_node_list} + 运行的程序 
    # -N nodes或--cpunodebind=nodes

  • {cpu_list}:示例0,或者1~13,16等。
  • {numa_node_list} :示例+0,或者+0,+2等多个numa,或者0-2也可以。
  • 查看程序当前运行的cpu核亲和性:taskset -cp {pid}。
  • numactl其它参数:
    • -m {numa_node}绑内存,如-m +0,绑定内存到numa0,-m +0,+1则绑定到numa0和numa1,或者0-2也可以,表示numa0/1/2。
    • -i <nodes>设置内存交织,如-i 0,1则numa0和numa1的内存交织,-i all表示所有numa内存交织。

相关文档