您好,登錄后才能下訂單哦!
這篇文章主要介紹“Linux內核實時系統有哪些知識點”,在日常操作中,相信很多人在Linux內核實時系統有哪些知識點問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Linux內核實時系統有哪些知識點”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
SCHED_FIFO
(Round-robin線程調度策略)和SCHED_RR
是“實時”策略。實現POSIX
標準規定的固定優先級實時調度(fixed-priority real-time scheduling)。按照這些策略的任務會搶占其他所有任務。因為是搶占,如果它們不釋放CPU,所以很容易使得某些低級別的任務得不到執行。
SCHED_FIFO
和 SCHED_RR
之間的區別在于:在相同優先級的任務中,SCHED_RR
執行 round-robin
分配,每個任務都得到相同的cpu時間片策略。而SCHED_FIFO
需要任務主動放棄cpu時間片。
SCHED_OTHER
是常見的循環式分時調度策略,該調度策略根據系統中運行的其他任務為某個時間的調度任務。
紅帽企業版Linux
實時版中的兩種實時調度策略具有一個主要特征:直到被更高優先級的線程搶占或直到它們“等待”(sleep/休眠或執行I/O)線程會一直運行。如果是SCHED_RR
,在SCHED_RR
優先級相同的線程中,操作系統可能會搶占一個線程,讓另一個線程得以執行。
POSIX
規范沒有規定允許低優先級線程獲得任何CPU時間的策略。
實時線程的這種特性意味著編寫一個霸占100%的CPU的應用程序非常容易。乍一看,好像榨干了服務器是個不錯的想法,但實際上,它引起了操作系統的許多問題。操作系統負責管理系統范圍的資源和按CPU的資源,并且必須定期檢查描述這些資源的數據結構,并對其執行內部管理活動。如果內核被SCHED_FIFO
線程壟斷,則它無法執行內務處理任務,最終整個系統將變得不穩定,從而可能導致崩潰。
中斷處理程序以具有SCHED_FIFO
優先級的線程(默認值:50)運行。具有或策略高于中斷處理程序線程的cpuxiao hao x
線程可能會阻止中斷處理程序運行,并導致程序等待那些由中斷發出的數據,從而使該程序餓死并失敗。
在紅帽企業版實時系統內核中,有個實時節流機制/SCHED_FIFOSCHED_RR
限制實時調度的調度策略(real-time scheduler throttling)。
紅帽企業版實時Linux內核帶有一種保護機制,該機制使系統管理員可以分配資源配額以供實時任務使用。這個配額機制引入,算是一個保護機制。
這個機制用/proc
文件系統中的兩個參數控制。
/proc/sys/kernel/sched_rt_period_us
定義時間周期,以微秒為單位,相當于100%的CPU資源帶寬。默認值為1,000,000μs(1秒)。謹慎更改該時間段,時間段過長或太小都將危險。
/proc/sys/kernel/sched_rt_runtime_us
定義所有實時任務可用的總帶寬。默認值為950,000μs(0.95 s),即CPU帶寬的95%。將該值設置為-1意味著實時任務最多可能占用100%的CPU時間。僅當在特殊場景實時任務經過精心設計并且沒有明顯的隱患(比如沒有無限制的輪詢循環)時,才可以這樣配置。
對于實時調節機制的默認值定義的CPU時間的95%,意思是95%的cpu時間片可以通過實時任務中使用。剩余的5%將用于非實時任務(在SCHED_OTHER
類似的調度策略下運行的任務)。而且需要注意,如果單個實時任務占用了95%的CPU時隙,則該CPU上剩余的實時任務將不會運行。剩下的5%的CPU時間僅由非實時任務使用。
默認值的設置帶來兩個好處:流氓實時任務不會通過不允許非實時任務運行來鎖定系統,另一方面,實時任務最多具有95%的CPU他們的可用時間,可能會最大化效能。
盡管SCHED_FIFOSCHED_RR/實時節流機制
的工作原理是避免實時任務可能導致系統掛起,但是高級用戶可能希望在沒有非實時任務匱乏的情況下允許實時任務繼續運行, 避免系統閑置。
啟用后,此功能會在限制實時任務之前檢查非實時任務是否餓死。如果實時任務被限制,則在系統空閑時或下一個周期開始時(以先到者為準),它將立即取消限制。
RT_RUNTIME_GREED
通過以下命令 啟用:
#echo RT_RUNTIME_GREED> /sys/kernel/debug/sched_features
要使所有CPU核都具有相同的rt_runtime
,請禁用NO_RT_RUNTIME_SHARE
邏輯:
#echo NO_RT_RUNTIME_SHARE> /sys/kernel/debug/sched_features
設置了這兩個選項后,用戶將保證所有CPU上的非RT任務都有一定的運行時間,同時使實時任務盡可能多地運行。
到此,關于“Linux內核實時系統有哪些知識點”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。