幾天前完成了 Ubuntu論壇上的帖子,他規範的開發人員已經註意到,桌面環境 “侏儒殼” 在Ubuntu 19.04版中, 基於Gnome 3.32, 它明顯比其他桌面環境慢。
最初假設原因是使用JavaScript, 但是事實證明,在Gnome Shell和Mutter窗口管理器的組合中,JavaScript僅佔代碼的百分之十,而這實際上並不能解決所觀察到的緩慢問題。
下一個假設是該軟件使CPU或圖形卡超載。 但是測量表明事實並非如此。 相反,出現的是處理器被迫閒置了太長時間。
這裡要注意的重要一點是,大多數源代碼都在Mutter項目中,而不是Gnome Shell中。 因此,總體上,當您考慮使用Mutter時,只有大約10%的Gnome Shell是用JavaScript編寫的,而大約90%是用C編寫的。
因此, 開發人員能夠將他們的研究重點放在時間上, 在本文中稱為“實時”。 因為Gnome和Mutter處理了一個事件循環 將Glib放在單個線程中, 他們很容易拖延。
更長的延遲可能會導致其中一幀被跳過 組成顯示器上的圖像。 對於監視器上的用戶,這表現為明顯的滯後。
通過測量各種延遲,開發人員發現不少於Gnome 3.34中修復的Gnome錯誤。
第一個錯誤導致跳幀,因為在幾毫秒的幀編程延遲後,錯誤地計算了必須重建幀的時間。
但是糾正此錯誤(並非總是會發生)使演示更加流暢。
第二,我開發人員發現X.org上的幾乎所有幀都被延遲了 因為表計算設置得太早。 在60 Hz的幀頻下,顯示會滯後16 ms。
在這種情況下,Wayland不會受到影響。 另一個錯誤僅涉及Wayland。 問題是在Mutter中,將鼠標指針的顯示速度設置為60Hz,如果刷新率不同,這可能會導致CPU使用率高達100%的問題。
還 穆特還有另一個問題,到目前為止只有部分解決了。 結果,所有輸入事件都延遲到下一幀,即在16 Hz時最多延遲60 ms。
另一個延遲是由於X.org上Nvidia專有驅動程序的修復引起的,現在不再需要這些修復程序。
另一個問題也突出了,它確定了影響鼠標指針的因素,在其中進行了OpenGL調用,由於CPU和GPU之間的必要同步,這會造成極大影響並導致額外的等待時間。
結果, Gnome 3.34的速度明顯更快。 Ya 至少還有兩個尚未解決的已知問題。
- 當使用多台顯示器時,Wayland後端的崩潰會導致嚴重的延遲。 這應該根據Gnome 3.36以及Ubuntu 20.04上的開發人員進行修復。
- 第二個問題是尚未解決Mutter的所有延遲問題。 本文以解決問題時應避免的錯誤提示以及下一步的思路作為結束。
最佳化 Gnome應該適用於Ubuntu20。04進行了許多改進 他們應該關注什麼? 在現代,快速的硬件上。 在Ubuntu 20.10中需要解決並解決影響較早和較慢計算機的其餘問題。
如果您想進一步了解該出版物, 您可以檢查以下鏈接。