환경: 운영 체제 --debian + python3.
아래의 모든 출력 정보는 중요하지 않아 무시됩니다.
내 컴퓨터의 CPU 정보를 얻으려면 cat /proc/cpuinfo를 사용하십시오:
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model name : Intel(R) Celeron(R) CPU G1840 @ 2.80GHz
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model name : Intel(R) Celeron(R) CPU G1840 @ 2.80GHz
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
테스트할 mthreads.py는 다음과 같습니다.
import os
import threading
print(os.getpid())
def dead_loop():
while True:
pass
t = threading.Thread(target=dead_loop)
t.start()
dead_loop()
t.join()
터미널에서 실행 하고 의 프로세스 ID인 python3 mthreads.py
출력을 가져옵니다 .3455
python3 mthreads.py
cat /proc/3455/status
Name: python3
Umask: 0022
State: S (sleeping)
Tgid: 3455
Ngid: 0
Pid: 3455
PPid: 2205
Threads: 2
Cpus_allowed: 3
Cpus_allowed_list: 0-1
터미널에서 실행하세요.
python3 mthreads.py
3455
1. 내 컴퓨터에는 CPU가 2개 있는데 왜 내 CPU보다 많은 CPUs_allowed가 3인가요?
pstree 3455 -p
python3(3455)───{python3}(3456)
2. 현재 2개의 스레드가 실행 중입니다. 3455는 프로세스 ID이고, 3456은 스레드 ID입니다. 어느 것이 다른 스레드 ID입니까? 두 번째 스레드의 ID 번호를 얻는 방법은 무엇입니까?
3. 어떤 프로세스 ID가 어떤 CPU(cpu0, cpu1)에서 실행되고 있는지 알고 싶습니다.
답변1
- cpus_allowed: 이 프로세스가 실행될 수 있는 CPU 마스크
(Linux 2.6.24부터, cpuset(7) 참조).
이는 CPU 수가 아니라 단순히 프로그램 스레드가 어떤 CPU에서 실행되고 있는지 알려줍니다.
PPID는 상위 프로세스 ID를 나타냅니다. 확인 중인 프로세스의 상위 프로세스입니다.
psr 현재 이 프로세스에 할당된 PSR 프로세서입니다.
참조용 매뉴얼 페이지에서 직접 가져온 예:ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
이 정보의 대부분은 매뉴얼 페이지에서 찾을 수 있지만 여기에 포함된 내용은 알고 있습니다.많은정보를 추적하기 어려울 수 있습니다.
답변2
때로는 프로세스 ID = 스레드 ID입니다.
내 코드를 보여주세요.
python3 mthreads.py
7761
cat /proc/7761/status|grep Threads
Threads: 2
pstree -p 7761
python3(7761)───{python3}(7762)
LWP는 예약 가능한 엔터티의 경량 프로세스(스레드) ID(별칭 spid, tid)를 나타내고 NLWP는 man ps 페이지에서 프로세스의 lwps(스레드) 수를 나타냅니다.
ps -p 7761 -f -L
UID PID PPID LWP C NLWP STIME TTY TIME CMD
user 7761 2305 7761 48 2 19:28 pts/1 00:00:09 python3 mthreads.py
user 7761 2305 7762 51 2 19:28 pts/1 00:00:09 python3 mthreads.py
프로세스 ID--7761에는 두 개의 스레드가 포함되어 있습니다. 하나의 스레드 ID는 프로세스 ID와 동일한 7761이고 다른 스레드 ID는 7762입니다.