c - 检测截止时间线程抢占

标签 c linux pthreads sched-deadline

我正在使用 SCHED_DEADLINE 调度策略实现一个线程,这是我的高优先级线程,另一个线程使用 SCHED_FIFO 策略,这是我的低优先级线程。 例如,我将我的截止日期线程定义如下:

attr.sched_runtime = 0.5 * 1000000;   // --> 0.5 ms
attr.sched_deadline = 0.6 * 1000000;  // --> 0.6 ms
attr.sched_period = 1 * 1000000;      // --> 1 ms

在正常情况下,我的高优先级线程处理时间不应超过 0.5 毫秒,在此期间它应该有时间完成其任务。

如果任务持续时间超过 0.5 毫秒,操作系统调度程序将抢占我的高优先级线程,为我的低优先级线程腾出时间。这是我之前测试过的行为。

我的问题是:如何警告我的高优先级线程它已被系统抢占?

最佳答案

目前,SCHED_DEADLINE API 不提供通知任务已被限制所需的功能。我们知道它可能是一个有用的功能,我们会考虑在下一个 future 将其包含在内。

目前唯一的选择是检查时间以了解是否发生了节流。

更新:Linux 内核 4.16 将添加对 SCHED_DEADLINE 上“运行时超时”信号的支持。参见 here .

关于c - 检测截止时间线程抢占,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36977016/

相关文章:

c - 如何在C中正确操作字符串

c++ - 使用链接 linux 编译 GLFW 应用程序问题

Linux Centos 6 如何过滤端口 80 + 破坏 Apache 2

c - 为什么 pthread 中需要线程特定数据?

c - 如何让更新线程和渲染线程一起顺利工作(在 Linux 上)?

c++ - pthread_create 无法与 pthread_attr_setschedparam 一起正常工作

c - 如何解码Linux中系统调用的输入标志?

c - 函数 'sleep()' 的正确 #include 是什么?

c - 错误 : request for member ‘-----’ in something not a structure or union

python - 从 Mac 和 Linux 机器获取本地用户