"1ms sleep"에 걸리는 시간을 알고 싶었습니다. 내가 가진CPU의 클럭 주파수 및 측정 시간이 경과 됨
rdtscl(aj);
msleep(1);
rdtscl(b);
printk(KERN_INFO "Difference = %lu", (b-a));// Number of clock cycles consumed
출력 :
커널 모듈이 퀘스트 란 고양이/proc 디렉토리에 대한Difference = 13479219
출력/그와
cpu MHz : 1197.000
cpuinfo의를, 나는 지연을 계산 , 나는 11.26 밀리 초를 얻었다.
왜 1ms 정도 걸리지 않을까요?
UPDATE : 고양이
프로세서 주파수/proc 디렉토리/cpuinfo의 sholud 다음 줄에서 가져온 수 :
model name : Intel(R) Core(TM) i3 CPU 540 @ 3.07GHz
=> 프로세서 주파수가 3.07 GHz의입니다. 이 줄 "cpu MHz : 1197.000"의 의미는 무엇인지 알 수 없습니다.
감사
프로세스 해상도는 테스트 코드를 실행 한 시스템에 구성된 HZ 값에 따라 달라집니다
{=> '의미하는'} 내 경우의 HZ 값은 250입니다. => 계산할 수있는 최소 간격은 4ms입니다.> 1ms 간격은 계산할 수 없습니다. => 다음과 같은 방식으로 추정합니다. 간격을 늘릴 필요가 있습니다 (sleep (5)). 게다가 프로세서 주파수가 3.05 GHz => 32 비트 변수가 0.76 초마다 오버플로되므로 우리는 간격을 더 많이 지정할 수 없습니다. -> 솔루션 : 가변 크기를 64 비트로 늘리십시오. 감사 – Kernel