Canonicalが取り組んできたGNOME Shellのパフォーマンス改良作業
「Canonical」が「Ubuntu 20.04 LTS」で取り組んだ「GNOME Shell」のパフォーマンス改良作業が、以下で紹介されています。ユーザーが体感できるパフォーマンスの向上
「Ubuntu 20.04 LTS」では、パフォーマンスが改良された「GNOME Shell 3.36」が採用されています。以前から「Ubuntu」を利用してきたユーザーから見れば、「Ubuntu 20.04 LTS」の「GNOME Shell」は体感できるレベルでパフォーマンスが向上しています。
描画や動作のスムーズさや応答性の向上は、すべてのユーザーにとって大きな価値のある改良です。
さてこの背景には「Canonical」のエンジニアによる多大な取り組みがありました。
継続的に行われてきたパフォーマンスの改良作業
「GNOME Shell」のパフォーマンス改良作業は、以前から継続的に取り組まれてきました。例えば「Ubuntu 19.04」で行われた改良作業は、以下で紹介されています。
また「Ubuntu 19.10」で行われた改良作業は、以下で紹介されています。
Ubuntu 20.04 LTSで行われた改良作業
そして「Ubuntu 20.04 LTS」では、更なる改良作業が行われました。「Ubuntu 20.04 LTS」で行われた改良作業の紹介です。
1.すべてのアニメーションの改善と遅延の低減
フレームスキップが起きていない状態でアニメーションが行われても、スムーズにアニメーションが行われていないように見えるケースがありました。同期の間隔を厳密に合わせることで、アニメーションの滑らかさが改善されました。
またアプリのウィンドウをマウスでドラッグする際、ウィンドウの移動がマウスの移動に遅れることなく、きれいに追従するようになりました。
2.ディスプレイスケーリング時のメモリー使用量削減
ディスプレイのスケーリング時に、必要以上のメモリーの確保とデータの保存処理が行われていました。この問題が解消され、実行時のパフォーマンス向上に繋がっています。
しかしこの問題と同種の実装が他で行われている可能性を考慮し、ディスプレイのスケーリング時にパフォーマンスに影響を与えている箇所が他にないか、継続的に調査が行われます。
3.マウスカーソルの移動時にJavaScriptを呼び出さないように修正
マウスやタッチパッドでマウスカーソルを移動した時に、JavaScriptを実行しないように修正されました。JavaScriptを実行しても特別それがひどく遅いというわけではありませんが、JavaScriptを実行しないほうが当然パフォーマンスは好ましくなります。
この修正によりCPUとバッテリーの使用量が削減され、パフォーマンスが向上します。
4.アイコングリッドを開く・閉じる時の応答性向上
JavaScriptの同時実行時の処理が見直され、アイコングリッドを開く・閉じる時の応答性が向上しました。5.ウィンドウのスライドアニメーションの改善
GUI要素の再配置では、すべてのGUI要素のサイズと位置を把握する必要があります。この処理をJavaScriptで実行する場合、C言語で記述されたコードと比較すると、相応のコストが掛かります。
「Super」キーを押した時などウィンドウのスライドアニメーションを実行する時に、実際にJavaScriptの実行が必要な箇所を絞ることでCPU使用量が削減され、またアニメーションがスムーズに描画されるようになりました。
6.アイコンのアニメーションがスムーズに
「5.」と同じ方針で修正が行われ、アイコンのアニメーションがスムーズになりました。元々アイコンのアニメーション改善は「Ubuntu 19.10」で行われた改善ですが、それをさらに「5.」と同じ手法を用い改善しています。
7.再レイアウトがより効率的に
GUI要素を再配置する際、GUI要素の親子関係で言う祖先にあたる要素が関与しないのであれば、関与せずに処理を実行できるようになりました。この改善は直接的にパフォーマンスを向上させる改善ではありませんが、将来的にパフォーマンスの課題を解決する方法として活用できます。
8.スクリーンの分割描画パフォーマンスの向上
スクリーンの複数の描画を1つに結合し一括して描画する代わりに、スクリーンを個別に描画する機能があります。この描画対象数が増えた時にパフォーマンスが低下する問題がありましたが、この問題が改善されパフォーマンスが向上しました。
9.GJSの不具合修正とパフォーマンスの向上
「GNOME Shell」とJavaScriptエンジンを繋ぐ「GJS」に、アニメーション実行中に何度も同じコードが実行される不具合があり、この不具合が修正されました。また「Canonical」は以下の不具合を見つけ、最終的に解決へと導いています。
これもパフォーマンスの向上に寄与する修正です。
それでもまだGNOME Shellは重い?遅い?
まだ「GNOME Shell」に課題があることを「Canonical」は認識しています。これらの課題は今後も継続的に解消に向けて取り組まれていきます。
パフォーマンス上の課題を見つけたら
とは言えユーザーが直面しているすべての課題を「Canonical」が把握しているわけではありません。もし「GNOME Shell」にパフォーマンス上の課題を見つけたならば、以下のコマンドを実行し不具合を報告してください。
ubuntu-bug gnome-shell
というわけで
「Ubuntu」が「GNOME」に移行してから2年以上経ちますが、移行時にユーザーから寄せられた「重い」「遅い」といったネガティブな反応に対応すべく、「Canonical」は継続的に「GNOME Shell」の改良に取り組み続けてきました。そして「Canonical」は数々の不具合を修正してきました。
その取り組みは今後も継続的に行われていきます。
「Ubuntu」が「GNOME」に移行した時に「GNOME」に対してネガティブな印象を持ったユーザーは、これを機にもう一度「Ubuntu(GNOME)」を試してみてはいかがでしょうか。