2014-08-29 24 views
6

線程(或任務)將通過使用大量的cpu來損失動態優先級,並通過使用更少的CPU來獲得優先級。這些優先級究竟是如何爲n個線程計算的(使用正常調度策略SCHED_OTHER)?Linux 2.6.x中計算的線程動態優先級如何?

+4

完全公平調度程序(CFS),又名SCHED_NORMAL或SCHED_OTHER,記錄在這裏[https://github.com/torvalds/linux/blob/master/Documentation/ scheduler/sched-design-CFS.txt)並在[here](https://github.com/torvalds/linux/blob/master/kernel/sched/fair.c)中實現。 – indiv 2014-08-30 01:04:34

回答

1

this

引述的Linux 2.6.8.1調度獎勵I/O密集型任務,並通過添加或從一個任務的靜態 優先減去懲罰 CPU密集型任務。調整後的優先級稱爲任務的動態優先級, ,可通過任務的prio變量(例如,p-> prio,其中p 是任務)訪問。如果某個任務是交互式的(調度程序的用於綁定I/O 的術語),則會提高其優先級。如果它是一個CPU豬,它會得到一個 罰款。在Linux 2.6.8.1調度程序中,最大優先級獎勵爲 5,最大優先級懲罰爲5.由於調度程序使用 獎金和罰金,因此對任務的靜態優先級的調整值爲 。一個溫和的具有-2的好CPU值的CPU可能具有0的動態優先級,這與既不是CPU也不是I/O 豬的任務相同。

我覺得這是一個公平的解釋。根據它是CPU綁定線程還是I/O綁定線程來計算優先級。關於你在問題中提到的內容,gain priority by using less of CPU通過互動(I/O綁定)而變得更加重要。我希望這個摘錄回答您的查詢...