Linux 절전 명령 - 1밀리초 미만의 절전 시간

Linux 절전 명령 - 1밀리초 미만의 절전 시간

수면 시간을 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

관련 정보