首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux,需要精确的程序定时。调度程序唤醒程序

问Linux,需要精确的程序定时。调度程序唤醒程序
EN

Stack Overflow用户
提问于 2011-06-10 21:49:45
回答 5查看 2.3K关注 0票数 11

我有一个运行在Linux系统上的线程,我需要尽可能精确地执行它。例如,每毫秒执行一次。

目前,这是通过创建一个计时器来完成的

代码语言:javascript
复制
 timerfd_create(CLOCK_MONOTONIC, 0)

的结构中传递所需的睡眠时间。

代码语言:javascript
复制
 timerfd_settime (fd, 0, &itval, NULL);

在此计时器上执行阻塞读取调用,该定时器会暂停线程执行并报告丢失的唤醒调用。

问题是,在更高的频率下,即使CPU使用率低于10%,系统也会开始松动截止日期。我认为这是由于调度器没有足够频繁地唤醒线程来检查阻塞调用。有没有一个命令可以用来告诉调度程序尽可能以一定的时间间隔唤醒线程?忙-等待是一个糟糕的选择,因为系统会处理许多其他任务。

谢谢。

EN

回答 5

Stack Overflow用户

发布于 2011-06-10 21:53:30

您需要获取RT linux*,然后增加要定期唤醒的进程的RT优先级。

除此之外,我在您的代码中看不到问题,如果您的进程没有被阻塞,它应该可以正常工作。

(*) RT linux -一个应用了一些实时调度补丁的操作系统。

票数 5
EN

Stack Overflow用户

发布于 2011-06-11 02:01:25

减少调度程序延迟的一种方法是使用实时调度程序(如SCHED_FIFO )运行您的进程。参见sched_setscheduler。

这通常会大大改善延迟,但仍然没有什么保证,为了进一步减少延迟尖峰,你需要转移到linux的实时分支,或实时操作系统,如VxWorks,RTEMS或QNX。

票数 2
EN

Stack Overflow用户

发布于 2011-06-10 21:54:16

除非你在一个真正的“实时操作系统”上运行它,否则你不能做你想做的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6307266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档