Valve提交多項Linux內核改進申請優化遊戲表現
Valve已經提交了多項針對Linux內核的改進申請,以便於更適合遊戲。目前公司正尋求擴展futex()(快速用戶空間鎖定)功能,通過對glibc和lbpthread的修改以改進多線程操作。在改善Linux對PC遊戲的支持方面,Valve長期以來都是推動者。例如已經失敗的Steam Machine,所搭載的SteamOS就是基於Linux系統。此外公司還努力改進開源Windows兼容層Wine。
Wine的問題在於它需要兼容更多硬件支持的軟件。Valve通過推出包含Proton的Beta版本Steam Play來應對這項挑戰。雖然這確實帶來了某些幫助,但是在性能方面依然存在很多的問題。
在最新版本的Proton補丁說明中,Valve建議對Linux內核進行更改,以克服在嘗試運行某些遊戲時遇到的問題。首先公司計劃推出名為fsync的實驗性替代品,提供“對基於futex的進程內同步原語的支持”。並且比esync減少了CPU使用率。但是,因為它需要使用內核的eventfd()函數,所以需要修改Linux內核才能正常工作。
在博文中寫道“我們建議對Linux內核[lkml.org]進行更改,以擴展futex()系統調用,以揭示我們認為支持最佳線程池同步所需的額外核心功能。”這些更改主要擴展futex ()功能以建立最佳線程池同步。Proton 4.11將支持fsync補丁以利用新內核。
開發人員還建議對glibc和libpthread進行更改。Collabora的軟件工程師Gabriel Krisman Bertazi在LKML的討論主題中表示:“我們還提議對glibc和libpthread進行修改,以便使用libpthread為Linux原生多線程應用程序提供此功能,這可以從等待任何一組futex的行為中受益。”