вторник, 15 марта 2011 г.

Отучаем lxdm грузить CPU

Кризис продожается, однако. Вот и я пересел на старый Celeron Tualatin 1.4GHz с 512MiB памяти. Понятно, что в таких условиях пользоваться KDE или GNOME практически невозможно, надо сказать даже Xfce в варианте Xubuntu неслабо подтормаживает. Пришлось искать нечто полегче.

Самое "легкое" в мире Ubuntu 10.x — Lubuntu на базе LXDE. Не скажу, что летает, но пользоваться вполне можно. Проект активно развивается и ошибок в нем пока хватает, а я, видимо, просто не могу не нарваться хотябы на одну из них.

При первой же загрузке обнаружилось, что экран входа как-то подозрительно нетороплив и не спешит отображать набранные символы. Сначала не придавал этому значения, но потом любопытство всеже одолело. Выяснилость, что процесс отвечающий за ввод пароля (lxdm-greeter-gtk), с завидным постоянством отъедает 20-30% CPU. Неслабый аппетит для приложения, которое почти ничего не делает.

Лечение оказалось простое. Если в файле /etc/lxdm/default.conf в секции [display] закоментировать фоновую картинку bg= нагрузка на процессор падает до 2-3%.

Виной всему своеобразный алгоритм отрисовки реализованый в greeter.c::on_expose, который при каждом вызове сначала масштабирует фоновую картинку под размер экрана, а затем перерисовывает весь экран. Все бы ничего, если бы не greeter.c::on_timeout заставляющая выполнять перерисовку раз в секунду.

Открыл на Launchpad баг на эту тему LP: #733912. Может скоро починят.