(사용자가 아닌 시스템) 프로세스 시간 정확도를 다루는 Linux 커널용 패치 세트가 있습니까?
RTLinux에 대해 들어본 적이 있지만 실제로는 실제 실시간 스케줄링 제약이 필요하지 않으며 정확한 시간 측정만 필요합니다. 프로세스 스위치가 몇 밀리초 정도 미끄러지면 그럴 수 있지만 현재 프로세스에 소요되는 실제 시간을 정확하게 측정해야 합니다.
답변1
time
내장 셸을 사용하려는 경우 다음에 따라 3자리 정밀도가 설계 한계입니다 man bash
.
TIMEFORMAT
The value of this parameter is used as a format string specify‐
ing how the timing information for pipelines prefixed with the
time reserved word should be displayed. The % character intro‐
duces an escape sequence that is expanded to a time value or
other information. The escape sequences and their meanings are
as follows; the braces denote optional portions.
%% A literal %.
%[p][l]R The elapsed time in seconds.
%[p][l]U The number of CPU seconds spent in user mode.
%[p][l]S The number of CPU seconds spent in system mode.
%P The CPU percentage, computed as (%U + %S) / %R.
The optional p is a digit specifying the precision, the number
of fractional digits after a decimal point. A value of 0 causes
no decimal point or fraction to be output. At most three places
after the decimal point may be specified; values of p greater
than 3 are changed to 3. If p is not specified, the value 3 is
used.
~을 위한~인 것 같다보다 정확한 측정을 위해 사용자 date
정의 출력 형식을 사용하여 나노초를 표시해 볼 수 있습니다.
Tstart=$(date "+%s.%N")
some_command(s)
Tend=$(date "+%s.%N")
echo "Elapsed: $( Tend-Tstart |bc -l) nanoseconds"
하지만, 두 경우 모두( time
및 date
) 시스템이 시작/중지 명령을 실행하는 데 시간이 걸리기 때문에 약간의 오버헤드가 발생한다는 점에 유의하세요. time
내장형이므로 오버헤드가 적습니다. 따라서 3자리 제한이 있는 데에는 이유가 있습니다. 나머지는 임의의 쓰레기일 뿐입니다.
당신은 또한 볼 수 있습니다이 비슷한 질문, 현재 허용되는 답변에는 작은 버그가 포함되어 있습니다.