프로세스가 실행 중인 특정 프로세서 확인

프로세스가 실행 중인 특정 프로세서 확인

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를 매우 빠르게 변경할 수 있으므로 실제로 표시되는 정보는 본질적으로 오래된 정보입니다.

이 슈퍼 유저 질문에 대한 답변에는 더 많은 정보가 있습니다.

Linux: 로드된 프로세스의 프로세서 번호를 아는 명령이요?

답변2

topfrom procps(일반적으로 현재 Linux 배포판의 기본값)을 사용 하고 in top을 누르고 f으로 이동한 P = Last User CPU (SMP)후 눌러 선택합니다(예를 들어 필드 앞 과 위 또는 아래 Space로 키를 사용하여 필드를 이동할 수도 있습니다 ). 기본 화면으로 돌아갑니다. 하나의 프로세서에 머물도록 명시적으로 구성하지 않는 한 프로세스가 한 프로세서에서 다른 프로세서로 이동하는 것을 볼 수 있습니다. 을 눌러 기본값으로 저장할 수 있습니다.COMMANDRightqW

도움이 필요하면 누르세요 ?.

답변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

관련 정보