偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

因此 Linus Torvalds 修改為在喚醒等待進(jìn)程時(shí)同時(shí)會(huì)把鎖交給它,無論它是否正在運(yùn)行。

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

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

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

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

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

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

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

責(zé)任編輯:未麗燕 來源: 開源中國(guó)
相關(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

2011-08-05 09:59:04

GNOME 3Linus TorvaXfce

2011-08-19 10:38:07

Linus TorvaARM

2015-01-13 11:09:14

閏秒Linus Torva

2012-10-29 09:17:18

OpenStack

2012-10-31 09:33:10

LinuxTorvaldsOpenStack

2012-11-27 10:34:39

Linus Torva

2021-10-08 15:59:39

Linux 代碼 開發(fā)

2022-12-26 00:23:05

GitLinuxTorvalds

2019-03-05 10:33:18

Linus Torv LinuxGit

2013-03-05 13:23:29

Linus TorvaGNOME 3

2012-11-30 09:44:38

2021-10-17 22:50:06

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

2012-06-19 14:08:24

LinuxLinus Torva
點(diǎn)贊
收藏

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