linux调度程序线程实际的睡眠时间

时间:2014-05-13 15:08:11

标签: linux kernel scheduler granularity

对于在MV Linux下运行的应用程序,我有一个必须每10毫秒激活一次的线程。当我使用ulseep / nanosleep / select时,线程每20 ms返回一次。我必须使用哪些内核参数才能改变这种行为? 谢谢, 拉菲

1 个答案:

答案 0 :(得分:-1)

Linux不是实时操作系统。无法保证睡眠的精确度。当您调用sleep时,线程将暂停,并且在请求的持续时间过去之前无法运行。当它再次可运行时,由调度程序在某些执行时间可用时再次运行该线程。

调度事件之间的间隔由内核编译参数CONFIG_HZ确定。例如,CONFIG_HZ=250(默认值)时,每1s / 250Hz = 4ms触发调度事件。因此,当你的线程再次运行时,在它实际恢复之前可以经过4毫秒,如果你的线程当时没有最高优先级,则可以再增加4毫秒等等。