[英]What has priority over SCHED_DEADLINE?
在嘗試調度高速線程時,我注意到有時不進行線程調度的時間段較長(數毫秒)。 我想知道在我正在使用的配置中,什么可以對調度程序執行此操作。
我確認CPU1上只有工作程序,計時器等內容。 其他所有內容都在CPU0上。
我的線程是SCHED_DEADLINE(唯一這樣安排的線程),周期為300us。 我使用了schedules_yield()來釋放線程,而預留時間已經很久了(只是一個測試循環),所以我確定它不會過度運行。
我得到的是幾乎完美的3333Hz輸出(通過一個o形示波器),該輸出不時地被阻塞一次,持續15ms以上。 我已經研究了中斷(除了計時器之外,該CPU上沒有遞增),我禁用了NMI中斷,依此類推,因此無法找到干擾的過程。 我不認為我完全理解可以優先考慮的事情並導致調度程序跳過句點,所以我希望有人可能有想法嗎?
我以為可能是磁盤IO,但這似乎與差距不符(有時確實如此)。 使用VGA /控制台似乎會使情況變得更糟,但是即使不使用該間隙,仍然會出現間隙。
是的,在您問...之前。...這只是一個實驗,看它是否可以可靠地完成。 我的實際代碼在QNX上運行,在相同的硬件上以這種速率穩定運行。 我正在嘗試查看是否可以使用PREEMPT_RT將其移植到Debian。
謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.