超线程启用时,如何用taskset正确绑定线程到指定物理CPU
问题描述
已启用超线程/逻辑CPU,lscpu显示存在128个逻辑CPU(对应64个物理CPU),NUMA节点信息如下:
NUMA node(s): 2 NUMA node0 CPU(s): 0-31,64-95 NUMA node1 CPU(s): 32-63,96-127
推测逻辑CPU#0-1对应物理CPU#0,逻辑CPU#2-3对应物理CPU#1。现需将线程thread_pid1绑定到物理CPU#1,请问以下哪条taskset命令语法正确?
taskset -cp 1 thread_pid1 taskset -cp 2,3 thread_pid1 taskset -cp 2 thread_pid1
解答
正确命令是:taskset -cp 2,3 thread_pid1
分析:
taskset的-c参数接受逻辑CPU编号作为输入,-p用于指定要绑定的进程/线程PID。- 题目明确物理CPU#1对应逻辑CPU#2和#3,要将线程绑定到整个物理CPU#1,需要把这两个逻辑核都纳入绑定范围,这样线程可以利用该物理CPU的超线程资源。
- 其他选项问题:
taskset -cp 1 thread_pid1:指定的逻辑CPU#1属于物理CPU#0,不符合需求。taskset -cp 2 thread_pid1:仅绑定到物理CPU#1的单个逻辑核,没有覆盖该物理CPU的全部超线程资源,未达到绑定整个物理CPU#1的目的。
内容的提问来源于stack exchange,提问作者user4918159
相关产品推荐
相关产品推荐

