2010-02-15 28 views
4

的成本從http://lkml.indiana.edu/hypermail/linux/kernel/0103.1/0030.html我瞭解在Linux的新型互斥的,一個adaptive_np之一:Linux內核:立即descheduling

的PTHRED_MUTEX_ADAPTIVE_NP是一個新的 互斥鎖其用於高 吞吐量公平性甚至CPU週期的犧牲。這個 互斥體不會將所有權轉讓給 等待線程,而是允許 競爭。另外,通過SMP內核, 鎖定操作使用旋轉到 重試鎖定以避免 立即重新調度的成本。

有人提到「立即重新排期的費用」。這個成本是多少? (根據cpu ticks; TLB,TSS,smth else reloading)在內核之間在「立即重新調度請求」和重新調度再次返回運行狀態之間做了什麼?

我該如何做一個明確的descheduling,我怎麼測量它的成本?

回答

3

看起來它只是一個輕量級聯鎖,旨在允許線程避開調度程序。

這個想法是用一個相對較長的基於上下文切換的操作來替換在spinlock中花費的希望很短的時間。

無視「新」的使用,自旋鎖像山一樣古老。我猜想,大約10年前,它就是那個pthread庫的新手。

「顯式重新排程」大概與上下文切換是同一回事,所以你可以通過讓兩個線程彼此間隔100萬次來測量運行時間。

+0

從我所瞭解的情況來看,它更受'服務時忽視'而不是'避免'。父母的優先權(AFAIK)仍然參與其中。 它應該是大型SMP機器上futex地獄的答案。讓內核進行仲裁而不實際進行仲裁,或者實現這種效果。 在任何情況下,都只需+1即可。 –

+0

上下文切換有多重要?重新安排計算程序有多重? 正如我所想,yield()不會立即啓動其他線程,但會等待「sched tick」,1s/HZ = 1毫秒 – osgx