четверг, 24 марта 2011 г.

iowait-bug (#12309). История успеха.

Собрал kernel 2.6.38 с ck-патчсетом и bfq. При I/O баг всё ещё продолжает нагружать процессор, но подвисаний уже нет. Лишь система становится немного менее отзывчивой.
PS: на ванильном 2.6.38 фризы были. На 2.6.38 + bfq - тоже.




понедельник, 14 февраля 2011 г.

ШГ в Gtk-приложениях Debian, или шрифты, как в Ubuntu


Наверное, многие замечали, что шрифты в Debian смотрятся иначе, чем в дистрибутивах вроде Ubuntu. Некоторым это нравится, некоторым нет, так как это основывается на чисто субъективном восприятии шрифтов, и, скорее всего, от типа и качества монитора. Лично меня качество отображения шрифтов в Debian не устроило и после долгих поисков в сети я нашел информацию о том, что GTK использует библиотеки libcairo, freetype и libxft для отрисовки шрифтов (а qt, к примеру, эта библиотека не нужна). Но и в Ubuntu, и в Debian пакет libcairo установлен, так в чем же разница? Как оказалось, из лицензионных соображений, в состав Debian включен пакет libcairo без некоторых специфических патчей, улучшающих отображение шрифта при использовании субпиксельного сглаживания. Так как же решить эту проблему? На некоторых форумах советуют пересобрать libcairo (и остальные две библиотеки) вручную, наложив на них эти патчи. Но, как оказалось, есть куда более простое решение в виде PPA-репозитория для Debian, включающего в себя эти пакеты (а также всяческие артворки и.т.д).
Итак, добавляем в /etc/apt/sources.list строчку с репозиторием, (# echo "deb http://hadret.rootnode.net/debian/ unstable main" >> /etc/apt/sources.list)
устанавливаем ключ, (# wget -O - http://hadret.rootnode.net/debian/duckbill.key | apt-key add -) обновляем пакеты, (libcairo2, libfreetype6 и libxft2) перелогиниваемся в сеансе и ловим профиты.

суббота, 21 августа 2010 г.

Установка драйверов NVIDIA с официального сайта в Ubuntu 10.04



После выхода первых RC релизов Ubuntu 10.04 пользователи столкнулись с проблемой установки драйверов NVIDIA,
скачанных с официального сайта. Поэтому я решил написать небольшое руководство по установке.
Итак, в чем же заключается проблема? Как оказалось, майнтайнеры оного дистрибутива интегрировали свободный видео драйвер nouveau (http://ru.wikipedia.org/wiki/Nouveau) , который и начинает сопротивлятся при установке проприетарного, выдавая ошибку distribution provided pre-install script failed.
Оставив данный факт на совести разработчиков, примемся за установку проприетарщины. Для начала выполним в терминале команду: sudo gedit /etc/modprobe.d/blacklist.conf . Откроется текстовый редактор Gedit с файлом blacklist.conf. Добавим в конец этого файла строчку blacklist nouveau». Сохраним изменения и закроем Gedit. Далее выполняем команду «sudo gedit /etc/default/grub».
Находим строчку GRUB_CMDLINE_LINUX_DEFAULT и заменяем то, что стоит в ней после знака = на "quiet nomodeset acpi_backlight=vendor". В конечном итоге строчка должна выглядеть так: GRUB_CMDLINE_LINUX_DEFAULT="quiet nomodeset acpi_backlight=vendor"
Убедившись, что всё в порядке, сохраняем изменения, и даем в терминале команду sudo update-grub. Скачиваем драйвер для своей видеокарты с сайта http://www.nvidia.com/ , сохраняем в домашнюю папку, записываем/запоминаем его имя (а можно не записывать и не запоминать, а юзать команду ls в ~/), и перезагружаемся.
После перезагрузки открывается чистая консоль. Не паникуем. Вводим свой логин/пароль, даём команду
sudo /etc/init.d/gdm stop , затем sudo sh NVIDIA-Linux-версия скачанного драйвера.run Соглашаемся со всем предложениями инсталлера и ждем конца установки. После того, как драйвер установился, даём команду startx и понимаем, что всё готово. Удачи. :)

четверг, 5 августа 2010 г.

Плагин для подавления шумов в Gimp


     На днях наткнулся на плагин для для подавления шумов с помощью Gimp. Называется он GREYCstoration. Данный плагин может работать с довольно большими изоображениями и снимками в режиме 16-/32 с плавающей точкой разряда на канал.Так же поддерживает многопоточность и может раздельно обрабатывать цветовые каналы в пространствах RGB и YCbCr. Для установки сливаем с официального сайта распаковываем и копируем в папку ~/.gimp/2.0/plugins/ (можно и в /usr/lib/gimp/2.0/plugins/) файл GREYCstoration_gimp_pc_linux. Для установки в Debian и его производных достаточно установить пакет gimp-plugin-registry, после чего в меню фильтры/улучшения можно увидеть данный плагин.

















А вот что получилось на практике:
Было:











Стало:

вторник, 3 августа 2010 г.

Linux-2.6.35 + bfq в Debian/Ubuntu


После вышедшего накануне стабильного релиза Ядра linux-2.6.35 решил собрать его с экспериментальным I/O планировщиком bfq не включенном на данный момент в официальную поставку ядра. Почему именно bfq? Все дело в том что моей железке свойственна плохая отзывчивость во время активного обращения фоновых процессов к диску. Отчасти в этом виноват знаменитый io-wait-bug расположившийся под номером 12309 в bugzilla. Сам же планировщик  BFQ (Budget Fair Queueing I/O Scheduler) создан на основе CFQ (Completly Fair Queueing I/O Scheduler ), но в отличии от него более честно разделяет  I/O между процессами. Итак, скачиваем исходники ядра с kernel.org и распаковываем в директорию /usr/src. (Так же нужно будет скопировать config-версия установленного-ядра из каталога /boot в исходники ядра) Так-же сливаем три патча отсюда и сохраняем опять-же в /usr/src/
Ставим необходимые для компиляции пакеты:
$ sudo apt-get install kernel-package  libncurses5-dev
debhelper fakeroot
Логинимся рутом (при использовании sudo даётся команда sudo -s -H) и переходим в директорию с распакованным архивом ядра:


# cd ~/usr/src/linux-2.6.35


 Ставим поочередно все три патча:


# patch -p1 < /usr/src/имя/версия_патча.patch


Запускаем make nconfig, идем по-адресу Enable the block layer >IO Shedulers (здесть включаем опцию BFQ I/O Sheduler, затем идем дальше в пункт Default I/O Sheduler и выбираем его по-умолчанию.
сохраняем изменения, выходим и даем завершающие команды:


# make-kpkg clean   (нужно чтобы задать будет задать собственную нумерацию сборок ядра и уничтожить все следы предыдущих версий)
# fakeroot make-kpkg --initrd --revision=mybuild.1.0 kernel_image kernel_headers  ( собственно, сборка ядра и заголовков)


Примечание: в некоторых случаях после окончания сборки необходимо выполнить команды update-initramfs -c -k вставить_сюда_версию_собранного_ядра, затем sudo update-grub


Ну вот и все. После окончания компиляции можно запускать ядро с новым I/Oпланировщиком/ Помог ли он мне полностью избавиться от iowait-бага? Нет. Но отзывчивость системы улучшил заметно. Например полностью исчезли притормаживания при работе с виртуалками и другими жадными на I/O задачами. Так что лично для меня эта игра стоила свеч.