[英]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.