Home > Article > Operation and Maintenance > How to check which CPU a process is on in Linux
Viewing method: 1. Use the top command, which can display which CPU the process is running on. The syntax is "top -p process number"; 2. Use the taskset command, which is used to view processes or threads. Which CPU it is running on, the syntax is "tasksset -p process number".
#The operating environment of this tutorial: linux7.3 system, Dell G3 computer.
Method 1: Use the top command
The top command can display which CPU the process is running on. You can Continuously monitor whether the CPU on which the process is running changes over time.
Usage steps:
top -p [进程号],例如 top -p 3000
Press the "F" key, use the up and down keys to select P = Last Used Cpu, and press the space bar. "*" appears to indicate selection, and then press " q"Exit.
Method 2: Use the taskset command
taskset can check which CPU a specific process (or thread) is running on, and can also make a certain program run on a certain CPU.
taskset parameter options on one or some CPUs:
(1) -p, --pid: operate the existing PID and do not start a new task
(2 ) -c, --cpu-list: Specify a numerical list of processors instead of a bitmask. The list can contain multiple items, separated by commas and ranges. For example, 0, 5, 7, 9 - 11.
1) Display the CPU on which the process is running: -p parameter
Example 1:
[root@localhost ~]# taskset -p 21184
Display result:
pid 21184’s current affinity mask: ffffff
Note: 21184 is the process number. The ffffff that displays the result is actually a bitmask in which the 24 low-order bits of the binary are all 1. Each 1 corresponds to 1 CPU, indicating that the process is running on 24 CPUs.
Example 2:
[root@localhost ~]# taskset -p 2030
Display results:
pid2030’s current affinity mask: f
Note: It means that sshd randomly switches on 4 CPUs.
Example 3:
[root@localhost ~]# taskset -p 2726
Display result:
pid 2726’s current affinity mask: 3
Note: The displayed decimal number 3 is converted to binary, and the lowest two are 1, and each 1 corresponds to one cpu, so the process runs on 2 cpu.
*Note: *The cpu label starts from 0, so cpu1 represents the second cpu (the first cpu label is 0).
About the conversion method
CPU ID of 8 cores: 7 6 5 4 3 2 1 0
Corresponding decimal digit of 10: 128 64 32 16 8 4 2 1
The 16 numbers in hexadecimal are: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E. F
corresponds to each hexadecimal binary digit: 0=0000,1=0001,2=0010,3=0011,4=0100,5=0101,6=0110,7=0111, 8=1000,9=1001,A=1010,
B=1011,C=1100,D=1101,E=1110,F=1111
Then for example, pid 8987's current affinity appears mask: ff ff is hexadecimal, converted to binary: 11111111, which means that sshd is executed on 8 CPUs! So corresponding to each value!
For example, 40 in hexadecimal, then convert binary 01000000, which means operating on the 7th CPU
Recommended learning: Linux video tutorial
The above is the detailed content of How to check which CPU a process is on in Linux. For more information, please follow other related articles on the PHP Chinese website!