1、taskset
如果一个进程使用 taskset 命令明确的被固定(pinned)到 CPU 的特定内核上,你可以使用 taskset 命令找出被固定的 CPU 内核:
# taskset -c 3 top
查看进程所属核心:
# taskset -c -p 748320
pid 748320 的当前亲和力列表:3
输出显示这个过程被固定在 CPU 内核 3上。
但是,如果你没有明确固定进程到任何 CPU 内核,你会得到类似下面的亲和力列表。
# taskset -c -p 748277
pid 748277 的当前亲和力列表:0-7
输出表明该进程可能会被安排在从0到7中的任何一个 CPU 内核。在这种情况下,taskset 不能识别该进程当前被分配给哪个 CPU 内核,你应该使用如下所述的方法。
2、ps
# ps -o pid,psr,comm -p 631968
PID PSR COMMAND
631968 0 dockerd
# ps -o pid,psr,comm -p 631980
PID PSR COMMAND
631980 1 containerd
ps 命令可以告诉你每个进程/线程目前分配到的 (在“PSR”列)CPU ID。
输出表示进程的 PID 为 631968(名为”dockerd”)目前在CPU 内核 0 上运行着。
如果该过程没有被固定,PSR 列会根据内核可能调度该进程到不同内核而改变显示。
3、top
top 命令也可以显示 CPU 被分配给哪个进程。首先,在top 命令中使用“P”选项。然后按“f”键,显示中会出现 “Last used CPU” 列。目前使用的 CPU 内核将出现在 “P”(或“PSR”)列下。
top - 17:10:10 up 57 days, 6:00, 3 users, load average: 0.06, 0.03, 0.00
Tasks: 160 total, 1 running, 159 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 16277.2 total, 1644.8 free, 642.4 used, 13990.1 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 12545.7 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND P
1 root 20 0 175552 17920 8832 S 0.0 0.1 3:02.32 systemd 5
2 root 20 0 0 0 0 S 0.0 0.0 0:00.64 kthreadd 5
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 0
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 0
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kblockd 0
8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 0
9 root 20 0 0 0 0 S 0.0 0.0 0:00.91 ksoftirqd/0 0
10 root 20 0 0 0 0 I 0.0 0.0 9:44.30 rcu_sched 3
11 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_bh 0
12 root rt 0 0 0 0 S 0.0 0.0 0:02.48 migration/0 0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0 0
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1 1
15 root rt 0 0 0 0 S 0.0 0.0 0:02.03 migration/1 1
16 root 20 0 0 0 0 S 0.0 0.0 0:00.59 ksoftirqd/1 1
18 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/1:0H-kblockd 1
19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/2 2
20 root rt 0 0 0 0 S 0.0 0.0 0:02.31 migration/2 2
21 root 20 0 0 0 0 S 0.0 0.0 0:00.49 ksoftirqd/2 2
23 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/2:0H-kblockd