[英]Detect deadline thread preemption
我正在使用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毫秒,则OS调度程序将抢占我的高优先级线程以给我的低优先级时间。 这是我之前测试过的行为。
我的问题是:如何警告我的高优先级线程它已被系统抢占?
当前,SCHED_DEADLINE API不提供向任务发信号通知它已被限制所需的功能。 我们了解到它可能是一个有用的功能,因此我们将考虑在不久的将来将其包含在内。
目前唯一的选择是检查时间以了解是否发生了节流。
更新 :Linux内核4.16将在SCHED_DEADLINE上添加对“运行时溢出”信号的支持。 看这里 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.