multi-threaded-application.out
PID 10000을 사용하여 Ubuntu에서 실행되는 CPU 집약적인 애플리케이션이 있다고 가정합니다 . Tid가 10001, 10002, 10003 및 10004인 4개의 스레드가 있습니다. 각 스레드가 특정 시간에 어느 스레드 코어에서 예약되는지 알고 싶습니다.
시도했지만 /proc/<pid>/tasks/<tid>/status
특정 스레드 실행을 담당하는 코어 ID에 대한 정보를 찾을 수 없습니다.
이 질문은 어느 정도 관련이 있습니다.이에.
어떤 도움이라도 대단히 감사하겠습니다.
답변1
다음 명령은 트릭을 수행합니다.
ps -mo pid,tid,%cpu,psr -p <main process ID>
옵션 설명:
-m
- 프로세스 이후 스레드 표시-o
- 프로세스 ID, "디스패치 가능한 엔터티를 나타내는 고유 번호"(스레드 ID), CPU 사용률 및 프로세스가 위치한 프로세서를 표시하는 사용자 정의 형식지금할당-p
특정 프로세스 ID에 대해
위 내용은 ps
macOS/BSD가 아닌 Linux에만 적용됩니다.
답변2
도움말 메뉴를 보기 top
위해 클릭 하면 설명되어 있습니다.h
F
필드용- 표시 가 있는 콘텐츠는
*
표시용으로 표시된 콘텐츠입니다. P
어느쪽인지 찾아보니마지막으로 사용한 CPU(SMP)- 키보드의 아래쪽 화살표 키를 사용하여 강조 표시를 아래로 이동한 다음 스페이스바를 눌러 강조
P
표시를 추가합니다.*
- 키보드의 아래쪽 화살표 키를 사용하여 강조 표시를 아래로 이동한 다음 스페이스바를 눌러 강조
- Esc를 클릭하여 실행 중인 상단 디스플레이로 돌아가서
P
CPU 코어 번호에 해당하는 새 열을 확인하세요. H
스위치실스위치s
디스플레이 지연을 업데이트하려면 기본 3초 대신 1초를 선호합니다. 원하는 경우 0.1을 선택할 수 있습니다.i
u
유휴 프로세스 를 켜거나 끕니다o
.W
P
지금부터 top을 실행할 때 이 열이 나타나 도록 이 top 구성을 저장하세요 .