環境 - 與Linux內核2.6.18 要求嵌入裝置 - 3個線程(從一個過程創建的,可以說,P1創建T1,T2,T3)Linux的 - 當較高優先級任務是較低忙優先級的線程未被調度
T1在linux優先級99(最高),T2在linux優先級50(中間),T3在linux優先級2(最低)。沒有明確的值設置爲任何線程。
T1和T3每秒增加一次變量。 T1每5秒打印一次這兩個變量。這順利。 [有問題的地方]當T2進入一個無限循環「for(;;);」時,T1的計數正常增加,但T3的計數並沒有增加。 含義T3從來沒有時間在CPU中運行。
所有這一次,我在想CFS的Linux保證所有的優先事項將得到其適當的份額(基於權重)。但是這證明了任何線程都會在沒有睡眠的情況下執行CPU,從而阻止所有其他較低優先級的線程運行。
Plz答案如果有人知道爲什麼CFS調度程序以這種方式行爲,並且如果有一種方法可以糾正這種情況?
您正在使用什麼SCHED策略? – Maquefel
我們是提供商提供的預編譯內核,大部分終端命令都不適合我們。即使我在進程樹下看不到/ proc//sched。 –
BaskarA
你確定你的代碼不是問題的根源嗎?同時要求您的提供商提供來源和配置。 – Maquefel