Linux 클러스터의 8코어 노드에 액세스할 수 있습니다. 노드에 로그인하면 다음을 사용하여 프로세서 목록을 볼 수 있습니다.
more /proc/cpuinfo
내 8코어 노드에서 프로세서 번호는 0부터 7까지입니다. 각 프로세서는 Intel Xeon CPU(E5430 @ 2.66GHz)입니다.
foo
이제 몇 가지 매개변수를 사용하여 이 프로그램을 호출한다고 가정해 보겠습니다 args
.
foo args
프로시저를 foo
실행하는 데 오랜 시간이 걸립니다(예: 몇 시간 또는 며칠). 전화 후 foo
확인 가능한가요 ?특별한어떤 프로세서(예: 0~7)가 foo
실행되고 있나요? 프로그램 top
에 프로세스 ID 및 유사한 정보가 표시되지만 프로세서가 표시되지 않습니다.숫자. 그런 정보가 있나요?
답변1
ps
이 정보는 귀하 가 열을 요청하는 경우 psr
(또는 -F
해당 열을 포함하는 플래그를 사용하는 경우) 제공될 수 있습니다.
전임자:
$ ps -F $$
UID PID PPID C SZ RSS PSR STIME TTY STAT TIME CMD
me 6415 6413 0 5210 2624 2 18:52 pts/0 SN 0:00 -su
또는:
$ ps -o pid,psr,comm -p $$
PID PSR COMMAND
6415 0 bash
첫 번째 명령을 실행할 때 내 쉘은 CPU 2에서 실행되고, 두 번째 명령을 실행할 때 내 쉘은 CPU 0에서 실행됩니다. 프로세스는 CPU를 매우 빠르게 변경할 수 있으므로 실제로 표시되는 정보는 본질적으로 오래된 정보입니다.
이 슈퍼 유저 질문에 대한 답변에는 더 많은 정보가 있습니다.
답변2
top
from procps
(일반적으로 현재 Linux 배포판의 기본값)을 사용 하고 in top
을 누르고 f으로 이동한 P = Last User CPU (SMP)
후 눌러 선택합니다(예를 들어 필드 앞 과 위 또는 아래 Space로 키를 사용하여 필드를 이동할 수도 있습니다 ). 기본 화면으로 돌아갑니다. 하나의 프로세서에 머물도록 명시적으로 구성하지 않는 한 프로세스가 한 프로세서에서 다른 프로세서로 이동하는 것을 볼 수 있습니다. 을 눌러 기본값으로 저장할 수 있습니다.COMMAND
RightqW
도움이 필요하면 누르세요 ?.
답변3
이 명령은 taskset
당신이 찾고 있는 것입니다:
작업 세트 - 프로세스의 CPU 선호도를 검색하거나 설정합니다.
예
$ taskset -p 12345
pid 12345's current affinity mask: f
마스크는 프로세서 0만 포함하여 f
모든 프로세서를 나타냅니다 0x00000001
.
$ taskset -c -p 24389
pid 24389's current affinity list: 0-3
CPU를 목록 형식으로 표시합니다. 이 예에서는 내 노트북에 4개의 코어가 있습니다.
답변4
이 정보는 에서 직접 얻을 수도 있습니다 /proc/[pid]/stat
. 이는 공백으로 구분된 39번째 필드입니다(Linux 2.2.8 이후).
예를 들어 현재 쉘이 실행 중인 CPU 프로세서를 표시하려면(이 경우):
cat /proc/$$/stat | cut -d' ' -f39