컨텍스트 스위치를 사용하지 않고 C에서 코드 블록을 실행할 수있는 방법이 있습니까?컨텍스트 스위치없이 코드 블록 실행
주기적으로 카운터를 샘플링하기 위해 perf stat를 수정했습니다. 이 방법이 작동하는 동안, 0 사이클 x 명령어와 같은 나쁜 데이터 포인트를 제공하게됩니다.
나는 이런 일이 발생하는 이유는 컨텍스트 전환 때문이라고 생각합니다.
내 코드는 항상 명령 카운터 이전에주기 카운터 값을 가져오고주기 카운터 값을 가져온 후 컨텍스트 전환이 발생하면 스케줄링 퀀텀의 일부분에 대해 프로파일 링 프로세스가 실행중인 경우 최종적으로 명령 카운터 값을 꺼냈다면 이미 끌어 낸 사이클 카운터 값 중 하나가됩니다.
컨텍스트 전환을 허용하지 않고 코드 블록을 실행할 수있는 방법이 있습니까?
시간을 측정하여 컨텍스트 전환이 발생했는지 확인하려고했습니다. 일반적으로 하나의 카운터 값을 가져 오는 데 걸리는 시간은 약 60 ~ 80ns입니다. 그러나 싸이클 카운터 읽기가 끝나고 명령 카운터가 끝날 때까지 걸리는 시간이이 시간 내에 있더라도 내 명령 카운터가 진행되는 것처럼 보입니다. 시간 지연을 사용하지 않고 컨텍스트 전환의 발생을 식별 할 수있는 방법이 있습니까? (지연이 컨텍스트 스위칭에 자신있게 기인하는만큼 크지 않기 때문에) –