web-dev-qa-db-ja.com

Gnome 3の遅いセッション開始をデバッグする方法は?

11.10から12.04にアップグレードした後、Gnome 3のログインプロセスは非常に遅くなります(アップグレードの数秒前にあった場合は60秒程度かかります(ハードディスクはSSDです!))。

VTで「トップ」を実行すると、gnome-Shellが約90%のCPU負荷を生成し、dbus-daemonが約10%を消費していることがわかります。 gnome-ShellのCPU負荷が通常レベル(約2〜3%)に低下した瞬間は、ログインプロセスが終了してデスクトップが表示された時間に対応します。

インストールした4つのgnome-Shell拡張機能(代替ステータスメニュー、終了ボタン、アクセシビリティの削除、システムモニター)を無効にしても、セッションの起動時間には影響しません。

Gnome classicにログインしても、セッションの開始が遅くなることはありません。

システムログには疑わしいものは何も表示されません。したがって、根本的な問題を特定する最良の方法は何ですか?

6
user65521

同様の問題があり、それを連絡先システムに固定しました-gnome-Shellプロセスでstrace -pを実行し、システムコールの内容を検索しました。

最終的な解決策を提供します ここのブログエントリ 。お役に立てば幸いです!

--- /usr/share/gnome-Shell/js/ui/overview-dist.js   2012-07-20 13:12:23.564769756 -0700
+++ /usr/share/gnome-Shell/js/ui/overview.js    2012-07-20 16:40:14.076527986 -0700
@@ -210,7 +210,7 @@
         this.addSearchProvider(new AppDisplay.AppSearchProvider());
         this.addSearchProvider(new AppDisplay.SettingsSearchProvider());
         this.addSearchProvider(new PlaceDisplay.PlaceSearchProvider());
-        this.addSearchProvider(new ContactDisplay.ContactSearchProvider());
+        // this.addSearchProvider(new ContactDisplay.ContactSearchProvider());

         // Load remote search providers provided by applications
         RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, this.addSearchProvider));
2
Danny O'Brien

この質問は古くからあることはわかっていますが、Googleの検索結果の上部近くに表示されるため、タイトルの質問に対する答えを投げると思いました—

問題を特定する1つの方法は次のように機能します。

セッションへのログインを開始しますが、別のセッション(別のユーザーとして、または「tty」セッション(Control + Alt + [F2…])で、またはsshを介して、またはテキストシェルで既に開いている) (bash)プロンプトの準備ができました。

次のコマンドを入力します(ただし、まだReturnキーを押さないでください)。

  • 他のシェルが別のユーザーアカウントである場合、このコマンドをSudoする必要があります。
  • これは1つの長い行です

gdb attach /usr/bin/gnome-Shell $(pgrep -uログインgnome-Shell) -ex 'call gjs_dumpstack ()'

例えばgdb attach /usr/bin/gnome-Shell $(pgrep -u jdoe gnome-Shell) -ex 'call gjs_dumpstack ()'

シェルが「ビジー状態」、つまり「行為中にキャッチ」になったら、もう一方のシェルでReturnキーを押してトラップします。シェルがフリーズし、ログイン試行が強制終了される可能性がありますが、バックトレースがあります。

デバッガーからウェルカムバナーが表示されます。 (少なくともFedoraにはdebuginfoパッケージをインストールする必要があると言われるかもしれませんが、Ubuntuが同じことをするかどうかはわかりませんが、似ていると思います。実際にJavaScript側をデバッグするためにこれらを必要とするべきではありません。コードのC部分のデバッグにのみ適用されます。)

これにより、アクティブなJavaScript関数のスタックが表示され、ほぼ間違いなく犯人が表示されます。

より詳細な情報はここで見つけることができます: https://wiki.gnome.org/Projects/GnomeShell/Debugging

2
BRPocock

たくさんの写真があり、ノーチラスを使用していますか?もしかしたら LaunchPad Bug 505085-gnome-settings-daemonのディスク使用量が多い ?回避策については、コメント 1 または 18 を参照してください。

1
shaddow

私は同じ問題を抱えていて、デバッグする方法を知りませんでした。しかし、すべてのgnome Shell拡張機能を無効にすると、完全に機能しました。私はこれが質問に対する正確な答えではないことを知っていますが、同様の問題を持つ他の人々を助けるかもしれません(gnome 3セッションへの遅いログイン)

どの拡張機能が問題を引き起こしているかを調べるために1つずつ無効にするか、すべてを無効にしてから1つずつ有効にします;)

0
mgafner