프로그램을 분석하기 위해 하나의 CPU에서 중단 없이 실행하고 싶습니다. 이를 위해 다음 taskset
의 조합을 사용합니다 chrt
.
# taskset -c 1 chrt -f 99 ./my_program
이제 내 질문은 커널의 컨텍스트 전환으로 인해 프로세스가 중단되는지 여부와 빈도를 확인할 수 있는 도구가 있는지 여부입니다.
답변1
당신은 그것을 사용할 수 있습니다perf
;예를 들어,
perf stat -e context-switches,cpl_cycles.ring0,cpl_cycles.ring123 your_command
다음과 유사한 요약이 생성됩니다.
Performance counter stats for 'your_command':
1 context-switches
11,890,096 cpl_cycles.ring0
9,980,265 cpl_cycles.ring123
0.011218937 seconds time elapsed
0.007533000 seconds user
0.003766000 seconds sys
이는 실행 중에 컨텍스트 전환(커널이 아닌 다른 프로세스로 전환)이 발생했으며 your_command
CPU가 커널 코드 실행 시간의 54%를 소비했음을 나타냅니다.
특정 프로세스가 CPU의 관심을 최대한 많이 받도록 하는 것은 꽤 복잡해질 수 있습니다.Victor Stinner의 벤치마크 설정 문서문제와 문제를 완화하기 위한 기술에 대한 좋은 개요를 제공합니다. 그의 기사는 주로 벤치마킹에 중점을 두고 있지만 대부분은 다른 상황에도 적용됩니다.