內存和性能不可兼得:Chrome 85將禁用Segment Heap內存管理
在Windows 10 May 2020(20H1/Version 2004)功能更新中,微軟引入了名為Segment Heap的內存管理機制,能將基於Chromium的Edge瀏覽器內存使用率降低27%。不過內存使用的改進是犧牲CPU使用率來換取的,因此Chromium團隊宣佈在Chrome 85穩定版中禁用該功能。
Segment Heap 是一種現代堆的實現方式,一般會降低整體內存使用量。谷歌在今年6 月下旬宣布,Canary 通道的Chrome 版本(version 85.0.4182.0)已經開始支持Segment Heap 內存管理機制。實驗發現,瀏覽器和網絡服務實用程序進程等方面能節省數百兆內存。實際結果會有很大的不同,多核機上的節省幅度最大。
不過在進一步的深入探索之後,發現會導致“ Windows Segment Heap的性能回歸”:
部署https://chromium-review.googlesource.com/c/chromium/src/+/2163163 提議,在版本號高於Build 19041(Windows 10 Version 2004)的版本中使用Segment Heap 來替代legacy heap。不過測試發現這會導致WebXPRT3、Speedometer2 和JetStream2 的性能倒退。
微軟員工表示,無論是內存還是CPU的使用都會受到影響。在這種情況下,內存的改善伴隨著CPU使用率的增加,並提出了兩個方案來克服這個問題。
1)減少瀏覽器的瞬時堆分配量。這將需要在整個瀏覽器代碼庫中進行重大改變。
2)提高Segment堆本身的性能。這只能由Windows團隊解決,我們正在調查我們的方案。
Chromium 的bruce 在該帖子中中指出:” M85 已經有很多其他的優化,而同時部署這個變化(同時的改善內存和性能倒退),如何平衡變得有點困難。雖然我從實驗室測試中聽到了關於節省內存的令人鼓舞的事情,但我不認為我們有任何辦法讓這個啟用,直到我們在20H1 上有明確的遙測數據和實驗室測試,這兩者都不會及時發生在M85 上。所以,我們的計劃是在M85 上禁用這個功能(從而給我們提供另一個遙測數據點),然後在未來重新考慮。”