스레드가 어떤 코어에서 실행되고 있는지 확인하는 방법은 무엇입니까?

스레드가 어떤 코어에서 실행되고 있는지 확인하는 방법은 무엇입니까?

multi-threaded-application.outPID 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에 대해

위 내용은 psmacOS/BSD가 아닌 Linux에만 적용됩니다.

답변2

도움말 메뉴를 보기 top위해 클릭 하면 설명되어 있습니다.h

  • F필드용
  • 표시 가 있는 콘텐츠는 *표시용으로 표시된 콘텐츠입니다.
  • P어느쪽인지 찾아보니마지막으로 사용한 CPU(SMP)
    • 키보드의 아래쪽 화살표 키를 사용하여 강조 표시를 아래로 이동한 다음 스페이스바를 눌러 강조 P표시를 추가합니다.*
  • Esc를 클릭하여 실행 중인 상단 디스플레이로 돌아가서 PCPU 코어 번호에 해당하는 새 열을 확인하세요.
  • H스위치스위치
  • s디스플레이 지연을 업데이트하려면 기본 3초 대신 1초를 선호합니다. 원하는 경우 0.1을 선택할 수 있습니다.
  • iu유휴 프로세스 를 켜거나 끕니다 o.
  • WP지금부터 top을 실행할 때 이 열이 나타나 도록 이 top 구성을 저장하세요 .

관련 정보