自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linus Torvalds 再改頁面鎖邏輯,把 if 替換為 while

開發(fā) 前端
幾個月前,Linus Torvalds 在 Linux 5.9 版本中重寫了 wait_on_page_bit_common() 相關(guān)邏輯,原因是為了解決頁面鎖競爭的公平性問題。

幾個月前,Linus Torvalds 在 Linux 5.9 版本中重寫了 wait_on_page_bit_common() 相關(guān)邏輯,原因是為了解決頁面鎖競爭的公平性問題。

在這之前,頁面鎖持有者在執(zhí)行 ”unlock_page()" 時僅會喚醒等待隊列里的一個獨占進程(FIFO,且該進程正在執(zhí)行 “lock_page” ),但是該進程不一定正在運行,特別是在負載情況下,只有其獲得 CPU 時間才能真正運行,與此同時,其它正在運行的沒有進入等待隊列的進程可以直接獲得頁面鎖,這個過程雖然依然有效利用了頁面,但會導(dǎo)致非常不公平的情況,被喚醒的等待進程運行后發(fā)現(xiàn)頁面鎖沒有釋放,于是重新進入等待隊列,而且是最后一個,極端情況下,這個進程可能會重復(fù)該過程以至于等待數(shù)十秒。

因此 Linus Torvalds 修改為在喚醒等待進程時同時會把鎖交給它,無論它是否正在運行。

然而,這并沒有完全解決問題。自這之后,偶爾會發(fā)生 BUG_ON() ,因為上述 “wait-to-set” 的過程并非原子性的,所以被喚醒的進程仍有可能被“第三者插足”。如果要把 “wait-to-set” 這一過程修改為原子性操作,需要修改大約 50 個函數(shù),因此,在上周,Linus Torvalds 把 wait_on_page_writeback () 函數(shù)中的 if 修改為 while 來解決這一問題。而這基本上又回到了最開始的情況,不過發(fā)生頻率要低得多,因此仍然可控。

不過,據(jù)外國媒體報道,其在該版上的基準測試中, PostgreSQL 性能下降了 5%-10%,對此,Linus Torvalds 認為這種下降并非由該補丁引起,可能和其測試模型或機器性能有關(guān)。

Linux 5.11-rc3 現(xiàn)已發(fā)布,感興趣的同學(xué)可以進行相關(guān)測試

更多詳細內(nèi)容查看以下 commit:

本文轉(zhuǎn)自O(shè)SCHINA

本文標題:Linus Torvalds 再改頁面鎖邏輯,把 if 替換為 while

本文地址:https://www.oschina.net/news/126262/linus-torvalds-change-if-2-while

責(zé)任編輯:未麗燕 來源: 開源中國
相關(guān)推薦

2012-09-04 13:50:30

2009-09-22 09:15:29

Linus TorvaLinuxLinux內(nèi)核

2013-10-29 09:08:05

2013-10-29 09:32:05

2011-06-21 11:04:55

Linus TorvaMac OS X

2022-01-11 14:40:06

Linus TorvaLinux KerneLinux

2011-06-13 10:30:07

Linus Torva

2012-10-29 09:17:18

OpenStack

2015-01-13 11:09:14

閏秒Linus Torva

2011-08-05 09:59:04

GNOME 3Linus TorvaXfce

2011-08-19 10:38:07

Linus TorvaARM

2012-10-31 09:33:10

LinuxTorvaldsOpenStack

2019-03-05 10:33:18

Linus Torv LinuxGit

2012-11-27 10:34:39

Linus Torva

2022-12-26 00:23:05

GitLinuxTorvalds

2013-03-05 13:23:29

Linus TorvaGNOME 3

2021-10-08 15:59:39

Linux 代碼 開發(fā)

2012-11-30 09:44:38

2021-10-17 22:50:06

Linux 系統(tǒng) 數(shù)據(jù)

2021-09-21 16:48:36

LinuxTorvalds虛擬機
點贊
收藏

51CTO技術(shù)棧公眾號