2016-09-29 5 views
2

Linux 및 Darwin을위한 저수준 시스템 API가 있으며 스케줄러의 "스냅 샷"을 가져 와서 주어진 시간에 실행중인 스레드 (활성), 선점 된 스레드를 확인합니다 , 자원을 기다리는 것, 또는 이와 유사한 것?스레드가 활성 상태 일 때 알 수있는 시스템 API

예를 들어, 우분투 "시스템 모니터"에는 프로세스를위한 "대기 채널"열이 있습니다. 프로세스 내부의 모든 스레드에 대해 비슷한 출력을 얻을 수있는 방법이 있습니까?

작업이 시작/완료 될 때 시각적 타임 라인과 함께 스레드에 작업이 전달되는 멀티 스레드 큐 시스템이 있습니다. 최적화하기 위해 작업이 실제로 실행될 때 (예를 들어 하나의 프로세서 코어에서), 선점 된 시점을 시각적으로 표시하고 싶습니다.

답변

1

top -H은 스레드와 그 상태를 보여줍니다. its source의 -H 스위치 다음에 오는 방법을 찾을 수 있습니다. 빠른보기에서 의 commands.c은 설정을 전환하는 것으로 보입니다.

업데이트 : Procfs는 사용자 공간에 해당 정보를 제공합니다. /proc/<pid>/task/<thread-id>/status은 필요한 것을 정확하게 제공합니다. 그것은 top도 사용합니다. 내 시스템의 샘플 출력은 다음과 같습니다.

$ cat /proc/418/task/448/status | grep State 
State: S (sleeping) 

해당 디렉토리 아래에는 많은 유용한 세부 정보가 있습니다.

관련 문제