수면 시간을 0.001s/1ms 미만으로 만들려면 어떻게 해야 합니까?
이것을 사용하면 1밀리초 동안만 휴면 상태인 것으로 표시됩니다. 잠을 덜 자도 될까요?
$ time sleep 0.00001
sleep 0.00001 0,00s user 0,00s system 79% cpu 0,002 total
답변1
sleep
일반적으로 nanosleep(2)
시스템 호출이 사용됩니다. 그러나 이 시스템 호출에는 고정밀 매개변수가 있지만 실제 정밀도는 Linux에서 사용하는 타이머에 따라 달라집니다.
일반적으로 Linux 커널은 CONFIG_HZ=250
이 옵션으로 컴파일됩니다. (바라보다 /boot/config-...
).
확장 기능을 사용 CONFIG_HIGH_RES_TIMERS
하면 정확성이 향상될 수 있습니다. 바라보다https://elinux.org/High_Resolution_Timers
바쁘게 기다리는 오래된 동작이 있지만 최신 커널에는 없습니다.
In order to support applications requiring much more precise pauses (e.g., in order to control some time-critical hardware), nanosleep() would handle pauses of up to 2 milliseconds by busy waiting with mi‐ crosecond precision when called from a thread scheduled under a real- time policy like SCHED_FIFO or SCHED_RR. This special extension was removed in kernel 2.5.39, and is thus not available in Linux 2.6.0 and later kernels.
또한 sleep
프로세스를 분기하고 프로그램을 로드하는 데 시간이 좀 걸립니다. 내 시스템에는 다음이 있습니다.
time sleep 0.000
real 0m0,007s
user 0m0,001s
sys 0m0,006s