調(diào)度器存在問題 Linus Torvalds回應(yīng):你文章錯了..

發(fā)布時間:2020-01-09 09:37:24  |  來源:開源中國  

幾天前,一名使用C++的游戲開發(fā)者Malte Skarupke發(fā)表博客稱在為Google的云游戲服務(wù)平臺Google Stadia提供Linux游戲時遇到了問題,并表示問題顯然來自Linux內(nèi)核的調(diào)度程序,尤其是Linux內(nèi)核的自旋鎖(Spinlock)。

Malte在這篇批評Linux內(nèi)核調(diào)度程序糟糕的文章中指出:“我發(fā)現(xiàn)大多數(shù)互斥鎖的實現(xiàn)都非常好,而大多數(shù)自旋鎖的實現(xiàn)都非常差,雖然Linux的調(diào)度程序還算可以,但遠未達到理想狀態(tài)。最受歡迎的替代方案MuQSS調(diào)度程序也還存在其他問題。另外,Windows調(diào)度程序的表現(xiàn)也非常好。”

對于Malte的這篇文章,Linus Torvalds也發(fā)表了自己的評論。在交流的過程中,變得慈祥的Linus雖然不同意文章的觀點,但他的言語也不再那么激烈。通篇看下來,"Pure Garbage"應(yīng)該是唯一一個比較符合Linus以前“暴躁”風(fēng)格的詞。

Linus Torvalds寫道:“整篇文章似乎都是錯誤的,并且作者所測量的內(nèi)容與他認為并聲稱的完全不同。首先,自旋鎖只能是如果你實際上知道自己在使用它們時未安排時間才使用...基本上是在釋放鎖之前讀取時間,然后在再次獲取鎖之后讀取時間,并聲稱時間差是沒有鎖之后的時間。這簡直是愚蠢和毫無意義且完全是錯誤的,純屬胡扯!”

Linus繼續(xù)補充說:“那么,解決此問題的方法是什么?告訴系統(tǒng)你正在等待鎖的地方使用鎖,并在鎖線程完成時告知你解鎖線程,以便調(diào)度程序合理運行,而不是(隨機)運行……再重復(fù)一次:除非你真正知道自己在做什么,否則不要在用戶空間中使用自旋鎖,并且要認識到能搞清楚自己在做什么的可能性基本上為零。”

在另一篇文章中,Linus繼續(xù)指出游戲開發(fā)者的鎖從根本上是錯誤的。換句話說,從他的角度來看,Linux內(nèi)核至少不應(yīng)該背全部責(zé)任。但是,如在其他實例中所示,Linux內(nèi)核的調(diào)度程序代碼仍有改進的空間。更重要的是,Linus的回應(yīng)不再像以前那樣充滿“對抗性”,他不同意開發(fā)者的觀點,于是指出并一直在耐心解釋那篇博文錯誤的地方。

關(guān)鍵詞:

 

網(wǎng)站介紹  |  版權(quán)說明  |  聯(lián)系我們  |  網(wǎng)站地圖 

星際派備案號:京ICP備2022016840號-16 營業(yè)執(zhí)照公示信息版權(quán)所有 郵箱聯(lián)系:920 891 263@qq.com