

來(lái)自:OSC開(kāi)源社區(qū)
鏈接:https://www.oschina.net/news/183698/linux-getrandom
Jason Donenfeld 是 WireGuard 的主要開(kāi)發(fā)者,同時(shí)他也是 Linux 內(nèi)核隨機(jī)數(shù)相關(guān)代碼的維護(hù)者,近日在他的領(lǐng)導(dǎo)下,Linux 內(nèi)核的隨機(jī)數(shù)生成器代碼有了巨大幅度的改進(jìn)。
在之前的 Linux 5.17 中,Jason Donenfeld 就在隨機(jī)代碼用 BLAKE2s 代替了 SHA1,由于 BLAKE2s 自帶的特性,前者通常比后者更快更安全。經(jīng)過(guò)測(cè)試,通過(guò)這個(gè)簡(jiǎn)單的轉(zhuǎn)換就能獲得 131% 左右的速度提升。雖然在 Linux 5.17 中有了速度上的大幅提升,但 Jason Donenfeld 對(duì)此并沒(méi)滿足。因此在 Linux 5.18 中他對(duì)隨機(jī)代碼作出了更多的改進(jìn)。通過(guò)查看 Linux 的?random.git?倉(cāng)庫(kù)的日志能夠看出(上圖),開(kāi)發(fā)者 Jason Donenfeld 在最近兩天時(shí)間里進(jìn)行了大量的代碼提交。這些提交內(nèi)容都將在 3 月下旬 Linux 5.18 的合并窗口啟動(dòng)時(shí)引入內(nèi)核。在郵件中特別強(qiáng)調(diào)到,通過(guò)使用正在開(kāi)發(fā)的最新代碼,用于獲取隨機(jī)字節(jié)的 getrandom() 調(diào)用能夠獲得更好的性能。在配備英特爾 Xeon E5-2697 v2 @ 2.70GHz CPU 和 112G 內(nèi)存的設(shè)備上進(jìn)行 stress-ng getrandom() 基準(zhǔn)測(cè)試后,更是獲得了 8450% 的性能提升。此次更改基本上會(huì)將之前的全局結(jié)構(gòu)(實(shí)際上是 per-numa 節(jié)點(diǎn)結(jié)構(gòu))更改為 per-cpu 結(jié)構(gòu),這意味著快速路徑上的許多鎖都會(huì)消失。因此,當(dāng)在具備多核的 CPU 上同時(shí)嘗試 getrandom() 時(shí),毫無(wú)疑問(wèn)性能會(huì)出現(xiàn)提升。只不過(guò)沒(méi)想到在測(cè)試中能帶來(lái) 8450% 的提升。除此之外,當(dāng)從 per-numa 更改為 per-cpu 后,也將不再需要被推遲到工作隊(duì)列上線后才能進(jìn)行。也正如我之前所說(shuō),此次改進(jìn)將會(huì)為高核心數(shù)的電腦和服務(wù)器帶來(lái)巨大收益。
本公眾號(hào)全部博文已整理成一個(gè)目錄,請(qǐng)?jiān)诠娞?hào)里回復(fù)「m」獲取!推薦閱讀:
在央企當(dāng)程序員是一種怎樣的體驗(yàn)?
Linux 進(jìn)程編程入門
計(jì)算機(jī)網(wǎng)絡(luò)層次劃分及協(xié)議了解
5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹(shù)莓派,等等。在公眾號(hào)內(nèi)回復(fù)「1024」,即可免費(fèi)獲取!