После обновления с 11.10 до 12.04 процесс входа в Gnome 3 очень медленный (занимает порядка 60 секунд, когда он был за несколько секунд до обновления (жесткий диск - это твердотельный накопитель!)).
Запуск «top» в VT показывает, что gnome-shell производит около 90% загрузки процессора, в то время как dbus-daemon занимает примерно 10%. Момент, когда загрузка ЦП gnome-shell падает до нормальных уровней (около 2-3%), соответствует времени, когда процесс входа в систему завершается и отображается рабочий стол.
Деактивация четырех установленных расширений оболочки gnome (меню «Альтернативное состояние», кнопка «Выход», «Удалить доступность», системный монитор) не влияет на время запуска сеанса.
Вход в Gnome classic не показывает медленное начало сеанса.
Системные журналы не показывают ничего подозрительного. Таким образом, каков наилучший способ определить основную проблему?
У вас есть много фотографий и вы используете Наутилус? Может быть, на вас влияет LaunchPad Bug 505085 - обширное использование диска gnome-settings-daemon ? См. Комментарии 13 или 18 для обходных путей.
У меня была такая же проблема, и я не знал, как отлаживать. но я деактивировал все расширения оболочки gnome, и тогда он работал отлично. я знаю, что это не точный ответ на вопрос, но он может помочь другим людям с похожими проблемами (медленный вход в сеанс gnome 3)
вы можете отключить его по одному, чтобы узнать, какое расширение создает проблему - или вы деактивируете все и снова активируете один за другим;)
Я знаю, что этот вопрос древний, но он показывается в верхней части результатов Google, поэтому я решил добавить ответ на вопрос в заголовке -
Один из способов определить Проблема работает следующим образом:
Начните входить в свой сеанс, но также есть другой сеанс (как другой пользователь, или в сеансе "tty" (Control + Alt + [F2…]), или через ssh или…) уже открыт с готовым приглашением текстовой оболочки (bash).
Введите (но еще не нажимайте Return) эту команду:
sudo
эта команда, если ваша другая оболочка является другой учетной записью пользователя 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, чтобы перехватить ее. Он заморозит оболочку и может убить вашу попытку входа в систему, но у вас будет обратный след.
Вы получите приветственный баннер от отладчика. (Вам также могут сказать, что вам нужно установить некоторые пакеты debuginfo, по крайней мере, на Fedora, я не уверен, что Ubuntu сделает то же самое, но я предполагаю, что это похоже. На самом деле вам не нужно это для отладки на стороне JavaScript вещей; это применимо только к отладке части кода на C).
Это покажет стек активных функций JavaScript, который почти наверняка покажет виновника.
Более подробную информацию вы можете найти здесь: https://wiki.gnome.org/Projects/GnomeShell/Debugging
У меня была похожая проблема, и я связал ее с системой контактов - я сделал это, запустив strace -p
в процессе оболочки gnome и отыскивая содержимое системных вызовов.
Я даю свое возможное решение в своей записи в блоге здесь . Надеюсь, это поможет!
--- /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));