更新时间:2025-11-04 GMT+08:00
程序绑核
简介
进程绑核(又称 CPU 亲和性,CPU Affinity)是一种将进程或线程 “绑定” 到特定 CPU 核心上运行的技术,通过限制进程在指定核心间调度,实现对进程运行位置的精确控制。
准备工作
准备一台ECS主机。
前置条件
- 适用场景:CPU调度频繁、跨numa和跨片带来性能下降的场景。
- 设置效果:设置CPU到固定核心上,不会发生CPU调度、跨numa和跨片。
操作步骤
- taskset命令,将进程绑定CPU。
启动时绑核:
taskset -c {cpu_lists} + 运行的程序运行中绑核:
taskset -cp {cpu_lists} + 程序的pid
- 如果是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内存交织。