日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

 

背景知識

linux的調度策略包括SCHED_FIFO and SCHED_RR 和SCHED_OTHER

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是常見的循環式分時調度策略,該調度策略根據系統中運行的其他任務為某個時間的調度任務。


SCHED_RR和SCHED_FIFO的問題:

紅帽企業版Linux實時版中的兩種實時調度策略具有一個主要特征:直到被更高優先級的線程搶占或直到它們“等待”(sleep/休眠或執行I/O)線程會一直運行。如果是SCHED_RR,在SCHED_RR優先級相同的線程中,操作系統可能會搶占一個線程,讓另一個線程得以執行。

POSIX規范沒有規定允許低優先級線程獲得任何CPU時間的策略。

實時線程的這種特性意味著編寫一個霸占100%的CPU的應用程序非常容易。乍一看,好像榨干了服務器是個不錯的想法,但實際上,它引起了操作系統的許多問題。操作系統負責管理系統范圍的資源和按CPU的資源,并且必須定期檢查描述這些資源的數據結構,并對其執行內部管理活動。如果內核被SCHED_FIFO線程壟斷,則它無法執行內務處理任務,最終整個系統將變得不穩定,從而可能導致崩潰。

中斷處理程序以具有SCHED_FIFO優先級的線程(默認值:50)運行。具有或策略高于中斷處理程序線程的cpuxiao hao x線程可能會阻止中斷處理程序運行,并導致程序等待那些由中斷發出的數據,從而使該程序餓死并失敗。


紅帽/centos的特殊策略/實時節流機制

在紅帽企業版實時系統內核中,有個實時節流機制/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他們的可用時間,可能會最大化效能。


聰明做法RT_RUNTIME_GREED

盡管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任務都有一定的運行時間,同時使實時任務盡可能多地運行。

參考資料:這可從內核文檔找到源碼(可在kernel-rt-doc軟件包中找到):

  • /usr/share/doc/kernel-rt-doc-3.10.0/Documentation/scheduler/sched-rt-group.txt

程序員面試冷知識:Redhat紅帽/CentOS服務器的Linux內核實時系統

 

分享到:
標簽:程序員 面試
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定