FreeBSD調度程序和Linux調度程序有什麼區別?FreeBSD調度程序和Linux調度程序的區別
5
A
回答
12
有幾個調度程序可用。這個答案假設默認調度程序:CFS(Linux)和ULE(FreeBSD)。
CFS是的簡稱完全公平調度程序。最顯着的區別在於CFS不基於運行隊列進行流程選擇。相反,它使用一個O(log N)複雜度的紅黑樹,這個樹花費CPU時間索引。
另一個值得注意的細節是CFS使用納秒計時。從Kernel Trap:
CFS使用納秒粒度會計和不依賴於任何 的jiffies或其他HZ細節。因此,CFS調度程序沒有 'timeslices'的概念,並且沒有任何啓發式。只有一個 中央可調:
/proc/sys/kernel/sched_granularity_ns
可用於調整調度從「桌面」(低 延遲),以「服務器」(好配料)工作負載。它默認爲適用於桌面工作負載的 設置。 SCHED_BATCH也由 CFS調度程序模塊處理。
ULE是傳統BSD調度程序的後繼者。它在SMP系統和單處理器系統上提供了大大改進的性能。它遵循比較傳統的設計,運行隊列和時間片。它力求公平,但可以通過指導來支持交互式流程。
這是一個link對ULE的作者在研究CFS來源時的一些發現。他們還在評論中討論了CFS調度程序中算法的複雜性(已經引起了很多爭議)。
這兩個調度程序都適合桌面使用。通過設置kern.sched.interact
,ULE支持交互式進程。沒有它,CFS和ULE應該同樣公平。
ULE登陸大約3000行代碼,而CFS正在接近這個數字的兩倍。
相關問題
- 1. Kprobe在Linux調度程序和查找Linux調度程序
- 2. Linux進程調度程序
- 3. 阻止調用和Linux調度程序
- 4. Freebsd中的調度程序黑客5.2.1
- 5. 瞭解linux調度程序
- 6. Linux調度程序修改
- 7. NUMA和SMP上的Linux調度程序
- 8. 調度程序調度程序 - Rx
- 9. 進程調度程序和線程調度程序
- 10. Windows 7進程調度程序和Windows Embedded調度程序
- 11. Linux內核線程 - 調度程序
- 12. 石英調度程序中的pauseJob和pauseTrigger之間的區別?
- 13. Linux程序的FreeBSD
- 14. 使用即時調度程序和完全不使用調度程序之間的區別
- 15. 調度程序和上下文切換器之間的區別?
- 16. 調度程序的standby()和pauseAll()有什麼區別?
- 17. Hadoop cgroups和調度程序之間的區別
- 18. 中斷和調度程序
- 19. Linux調度程序是否知道硬件中斷(調度程序抖動)
- 20. 修改Linux I/O調度程序
- 21. 解開Linux內核調度程序
- 22. java調度程序
- 23. KendoUI調度程序
- 24. Websphere調度程序
- 25. 雲調度程序
- 26. ASP.NET調度程序
- 27. Fullcalender調度程序調整行高度
- 28. 使用Rufus調度程序調度
- 29. 調度程序排序
- 30. CodeIgniter任務調度程序將任務調度到任務調度程序
這是StackOverflow的主題。可能更適合在[Unix&Linux](http://unix.stackexchange.com)上發佈此問題。 – Graham 2013-02-27 15:13:39