Home>Article>Operation and Maintenance> How to check which CPU a process is on in Linux

How to check which CPU a process is on in Linux

WBOY
WBOY Original
2022-05-23 16:48:51 8813browse

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".

How to check which CPU a process is on in Linux

#The operating environment of this tutorial: linux7.3 system, Dell G3 computer.

How to check which CPU the process is running on in Linux

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn