각 프로세스 또는 스레드 컨텍스트 전환 시간을 기록합니다.

각 프로세스 또는 스레드 컨텍스트 전환 시간을 기록합니다.

GPIO 핀을 조작하기 위해 Raspberry Pi의 Raspbian 배포판을 사용하여 가장 가까운 실시간 처리를 달성하려고 합니다. 나는 내가 기대할 수 있는 공연에 대해 "느낌"을 얻고 싶었습니다.

가능한 한 빨리 핀을 반복적으로 토글하고 로직 분석기를 사용하여 모니터링하는 간단한 C 프로그램을 작성하여 이 작업을 수행하겠습니다.

하지만 다른 방법도 있을 수 있습니다. 위의 프로그램을 작성하고 간단히 컨텍스트 전환을 기록하여 해당 스레드/프로세스가 몇 초 동안 샘플링 기간을 제어할 수 있는 시기를 정확히 확인하는 것입니다.

이전 질문답변 특정 프로세스가 일정 기간 동안 수행한 컨텍스트 전환 수를 확인하는 방법은 있지만 전환의 정확한 시간을 기록할 수 있는 방법이 있습니까? 어쩌면 하나가 아닌 각 프로세스에 대해도 가능합니까? 분명히 이로 인해 오버헤드가 발생하지만 여전히 유용합니다. 분명히 데이터는 오버헤드를 최소화하기 위해 RAM에 저장되어야 합니다.

참고 사항: 가능한 해결 방법:

  • 프로세스의 모든 작업을 실시간으로 나열하는 명령
  • Hacky: 프로그램이 반복적으로 현재 시간을 획득하고 저장하도록 합니다(그리고 로그가 특정 한계에 도달하면 파일에 저장합니다). 또는 큰 로그를 피하기 위해 약간의 개선을 하십시오. 다른 프로세스에 의해 선점되지 않았다고 추론할 수 있을 만큼 충분히 가까운 경우 연속 시간을 제거하는 알고리즘을 사용하십시오.

답변1

답은 없지만 다음에서 찾을 수 있습니다.도구, 예제 및 리소스perf명령과 Linux 커널 ftrace 및 debugfs에 대해 Brendan Gregg가 작성하거나 나열했습니다.

내 Raspberry Pi에서 이러한 도구는 패키지에 있습니다 perf-tools-unstable. 이 perf명령은 실제로 /usr/bin/perf_3.16.


당신은 이것에 관심이 있을 수 있습니다논의하다그리고 컨텍스트 스위칭기준저자 : 베누아 시고르위도 ctx상당히 오래된 테스트에서벤치모음곡.

tsuna/contextswitch내가 편집 timectxswws.c get_iterations()하고 while (iterations * ws_pages * 4096UL < 4294967295UL) {제거한 것과 같이 Pi에서 실행하려면 몇 가지 작업이 필요할 수 있습니다 .-march=native -mno-avxMakefile


다른 SSH에서 다음을 수행하는 동안 SSH를 통해 Pi에서 perf record10초를 사용하세요.while sleep .1;do echo hi;done

sudo timeout -10 perf_3.16 record -e context-switches -a
sudo perf_3.16 script -f time,pid,comm | less

다음과 같은 출력을 제공합니다

           sleep 29341 2703976.560357: 
         swapper     0 2703976.562160: 
    kworker/u8:2 29163 2703976.564901: 
         swapper     0 2703976.565737: 
            echo 29342 2703976.565768: 
     migration/3    19 2703976.567549: 
           sleep 29343 2703976.570212: 
     kworker/0:0 28906 2703976.588613: 
     rcu_preempt     7 2703976.609261: 
           sleep 29343 2703976.670674: 
            bash 29066 2703976.671654: 
            echo 29344 2703976.675065: 
            sshd 29065 2703976.675454: 
         swapper     0 2703976.677757: 

컨텍스트 전환 이벤트가 발생한 시기와 프로세스에 의해 대략적으로 표시됩니다.

관련 정보