在Linux上使用clock_nanosleep后调度。改善唤醒时间

时间:2012-12-02 20:47:52

标签: linux scheduling sleep

我要求尽可能精确地保持10ms的间隔。

我使用clock_nanosleep,绝对时间唤醒点(每次唤醒后增加10ms)和CLOCK_MONOTONIC。

在我的桌面上唤醒后调用的Ubuntu 11.04 clock_gettime显示我的程序平均在1ms后唤醒。

现在使用Linux调度程序模式:

  • SCHED_IDLE,程序平均晚了2毫秒
  • SCHED_RR,程序平均晚了0.9毫秒......

无论系统是空闲还是运行以下几个副本,结果都是相同的: dd if = / dev / zero of = / dev / null 对于一个aritifical cpu负载。

我的调度程序参数(sched min粒度,唤醒粒度,sched延迟)减少到尽可能少但是没有任何差别。

我没有尝试过任何其他桌面,不确定我是否可以使用带有Ubuntu和Intel核心i5的clock_nanosleep获得预期的精确度,或者我的系统出现了问题。

PS。在一天结束时,当使用非阻塞调用将数据传送到音频设备时,这种clock_nanosleep行为导致音频回放(欠载)期间的延迟增加,中继阻塞调用解决了问题,就像使用时没有调度问题一样阻止来电后醒来。

0 个答案:

没有答案