вторник, 14 октября 2008 г.

How to make Ubuntu extremely fast

Это свободный перевод статьи: http://tuxtraining.com/2008/09/28/how-to-make-ubuntu-extremely-fast. Принимаются замечания, поправки и пожелания.

Как сделать Ubuntu чрезвычайно быстрой

Старое железо? Хочется быстрой загрузки? Нужно освободить часть системных ресурсов? Хочется разогнать приложения? Эта статья для Вас. Заметьте, я не предлагаю делать что-либо из статьи, если перечисленное Вас не касается.

Загрузка

1. Удалите Network Manager, если он Вам не нужен: «sudo apt-get remove network-manager» Если возможно, припишите себе статический IP в «/etc/network/interfaces», например так:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.150
netmask 255.255.255.0
network 192.168.1.100
broadcast 192.168.0.255
gateway 192.168.1.1

Статический IP адрес уменьшит время загрузки, потому что Вашей машине не придется соединяться с Роутером\DHCP сервером, чтобы получить адрес.

2. Также удалите Firestarter или любой другой графический фронтэнд фаервола, который используете. Ознакомьтесь с управлением iptables при загрузке и выключении (http://tuxtraining.com/2008/05/15/iptables-how-to-save-and-restore-rules-at-boot-shutdown). Тогда он станет намного быстрее. Кто-то осудит этот шаг, но Firestarter очень часто используется в Ubuntu, и он выполняется как дополнительный процесс при загрузке системы еще до того, как загрузится рабочее окружение. «Вычистив» iptables, Вы ускоряете его работу, к тому же, в любом случае Вы выучите что-то новое.

3. Установите bum: «sudo apt-get install bum», а затем запустите его с правами root. Отключите все ненужные сервисы. Если Вы не уверены в ненужности сервиса, узнайте об этом перед его отключением. Также установите sysv-rc-conf, запустите с правами root. Он позволит Вам проще контролировать, какой сервис на каком уровне (run level) запускается. Он похож на bum, но детализированнее. Будьте осторожны в том, какой сервис и из какого уровня запуска Вы удаляете. Если Вы не знаете, что делаете, то либо узнайте, либо не трогайте вообще. После того, как Вы все закончили, наверняка захотите перезагрузиться, чтобы проверить, не сломали ли что-нибудь.

4. Выключите usplash в GRUB (представьте себе, что Ваша загрузка не перестала быть приятной, после того, как Вы его выключили):

$ vim /boot/grub/menu.lst

в строке kernel удалите слова «splash» и «quiet». Перезагрузитесь, чтобы увидеть изменения.

Я удалил «quiet» просто для того, чтобы показывать, что происходит. Его удалять не нужно.

5. Если у Вас двухядерный процессор, то Вы можете понизить время загрузки, используя параллельность:

$ sudo vim /etc/init.d/rc

найдите строку CONCURRENCY=none и измените на: CONCURRENCY=shell.

Перезагрузитесь, чтобы увидеть изменения (еще не устали перезагружаться?).

6. Удаление нескольких TTY.

Мне кажется, что легче всего это сделать редактируя «/etc/inittab», закомментируйте лишние TTY. Однако с применением нового механизма - upstart, кое-что поменялось.

Теперь нужно отредактировать файл «/etc/default/console-setup». Он определяет, как много текстовых терминалов Вы получите. Измените ACTIVE_CONSOLES="/dev/tty[1-6]" на то число консолей, которое хотите. Скажем 3, тогда замените на "/dev/tty[1-3]".

А затем отправляйтесь в «/etc/event.d/» и измените ttyX файлы, которые не хотите использовать. Отредактируйте их, закомментировав строки начинающиеся с «start on runlevel». Итак, в нашем случае надо будет закомментировать строки запуска в файлах tty4..tty6.

Перезагрузка изменит число консолей. У меня работает! Удачи. Заметка: даже если Вы сократили количество консолей, X (иксы) по-прежнему на Alt-F7. Снова перезагрузите компьютер и удостоверьтесь, что ничего не сломали.

Настройка жесткого диска

Ускорьте Вашу ext3 файловую систему

Последующая настройка предполагает, что Вы используете файловую систему ext3 в Вашей Ubuntu, а она предлагают значительное ускорение производительности! Однако тут есть и обратная сторона медали... если у Вас нет источника бесперебойного питания (UPS) и Ваша система случайно выключится или отключат питание, ВЫ ПОТЕРЯЕТЕ ВАЖНЫЕ ДАННЫЕ (не говорите, что Вас не предупреждали)

Откройте терминал (Приложения -> Стандартные -> Терминал) и напечатайте:

$ sudo vim /etc/fstab

Предупреждение: далее последует только пример! Не копируйте строки в Ваш файл «/etc/fstab». Просто замените опции, подчеркнутые линией на отмеченные жирным!

Это:


# /dev/sda1
UUID=19f70288-7340-40c0-82d1-ee4b218fee1d / ext3 relatime,errors=remount-ro 0 1

На это:


# /dev/sda1
UUID=19f70288-7340-40c0-82d1-ee4b218fee1d / ext3 noatime,nodiratime,errors=remount-ro,data=writeback 0 1

Сохраните и закройте. Далее выполните эту команду в терминале:

$ sudo vim /boot/grub/menu.lst

И добавьте опцию...

rootflags=data=writeback

... в конец следующих строк:

# defoptions=quiet splash vga=795 (По умолчанию, Ubuntu не имеет такой опции "vga=795" в этой строке? Она появится, если Вы сделаете вторую настройку из первого шага, см. выше).

# altoptions=(recovery mode) single

Сохраните, закройте и вставьте в терминал эту строку:

$ sudo update-grub

Впишите следующую строку, чтобы вручную изменять настройки файловой системы на лету в writeback.

$ sudo tune2fs -o journal_data_writeback /dev/sdb2

ВНИМАНИЕ: пожалуйста, заметьте, что /dev/sdb2 это МОЙ раздел root (/). Если Ваш root раздел в другом месте (например, /dev/sda1 или /dev/sda2), соответственно замените его. Пожалуйста, чтобы узнать это, посмотрите в /etc/fstab!)

Это все, теперь перезагрузите систему, а когда вернетесь, то почувствуете прибавку в скорости при использовании видео, изображений или аудио.

Настройте swappiness (использование swap)

Если Вы запускаете Linux иногда и используете приложения вроде «top» для того, чтобы посмотреть, что происходит с Вашей машиной, Вы можете быть удивлены: куда пропала вся память? Вам следует знать, что большая часть используется для кеша жесткого диска, в то время как файл подкачки свободен и он может быть в любое время заполнен из оперативной памяти, если только что запущенному приложению понадобится оперативная память. Linux системы сделаны так, чтобы использовать много оперативной памяти для дискового кеша, потому что использование ОЗУ (RAM) нерационально, если не используется дисковый кеш, а если те же данные понадобятся снова, будет велика вероятность того, что данные окажутся в памяти.

Откройте терминал (Приложения -> Стандартные -> Терминал) и вставьте следующий код:

$ sudo vim /etc/sysctl.conf

Далее добавьте строку в конец этого файла:

vm.swappiness=10

Число в конце этой строки может быть от 0 до 100. При 100 ядро Linux предпочитает искать бездействующие страницы и выгружать их из файла подкачки, в то время как значение 0 дает нечто близкое к старому поведению, когда приложения, которым нужна была память могли сократить кеш до крошечной части ОЗУ. Сохраните, закройте и перезагрузите.

Prelink и Preload

Prelink

Любое приложение, которое интенсивно использует разделенные библиотеки, может выиграть от использования prelink. Prelink решает вопрос обращения к разделенным библиотекам, сокращая число перемещений (шагов).

Prelink также может быть полезен и в контексте безопасности: начиная с того момента, когда мы можем сообщить ему, чтобы он заставил загружаться библиотеки со случайными адресами, вплоть до следующего запуска prelink. Это полезно, когда библиотекам не следует загружать с фиксированными адресами на каждой системе.

Вы можете установить prelink, используя следующую команду:

$ sudo apt-get -y install prelink

Измените строку в файле /etc/default/prelink с PRELINKING=unknown на PRELINKING=yes

Выполнить prelink впервые можно исполнив следующую команду:

$ sudo /etc/cron.daily/prelink

Это все, больше ничего делать не надо. Демон prelink будет периодически запускаться для оптимизации Ваших новых установленных приложений.

Preload

Preload - это небольшое приложение, которое следит за файлами наиболее часто используемых приложений, и загружает их в память, когда система простаивает. Обычно оно сокращает время загрузки для этих приложений. Установите preload выполнив следующую команду:

$ sudo apt-get -y install preload

Новые приложения

Итак, пришло время установить быстрый оконный менеджер и набор приложений к нему:

Добавьте этот репозиторий в «/etc/apt/sources.list»:


#openbox https://launchpad.net/~k-belding/+archive
deb http://ppa.launchpad.net/k-belding/ubuntu hardy main
deb-src http://ppa.launchpad.net/k-belding/ubuntu hardy main

а затем:

$ sudo aptitude update && sudo aptitude install openbox pypanel gmrun obmenu obconf nitrogen gtk-chtheme sakura scrot kazehakase sylpheed rtorrent irssi finch decibel-audio-player xfburn mirage abiword gnumeric leafpad epdfview xarchiver pcmanfm ivman


Пояснения по каждому:

openbox - это альтернативный оконный менеджер, который будет использован в качестве нашего окружения рабочего стола. Он стал быстрее Fluxbox с тех пор, как был переписан без использования кода BlackBox.

pypanel - с тех пор, как openbox остался без панелей, pypanel стал одной из очень легковесных панелей для него. Она может быть сконфигурированв в файле ~/.pypanelrc. Вам нужно будет добавить строку "pypanel &" в ".config/openbox/autostart.sh".

gmrun - небольшой диалог запуска.

obmenu - графическое приложение для редактирования меню.

obconf - среди прочего, это графическая утилита для смены тем.

nitrogen - легковесное приложение для смены обоев.

gtk-chtheme - позволит Вам менять темы GTK. Темы иконок и шрифты могут быть указаны в .gtkrc-2.0.

sakura - легковесный терминал с вкладками (табами). Проще в настройке чем atrem, xterm и аналогичные.

scrot - консольная утилита для создания снимков экрана.

kazehakase - легковесный браузер, основанный на движке Gecko (Заметка о пакете в Hardy: Вы не сможете открыть меню настроек, попытка приведет к краху. Вы можете управлять большинством настроек через конфигурационные файлы и about:config)

sylpheed - легковесный почтовый клиент.

rtorrent - консольный BitTirrent-клиент.

irssi - консольный IRC клиент.

finch - консольная версия Finch (IM-клиент, прим. переводчика).

decibel-audio-player - легковесный, основанный на GTK аудио плеер.

xfburn - программа для прожига дисков из набора приложений Xfce.

mirage - очень легковесный просмотрщик изображений.

abiword и gnumeric - «легкие» офисные приложения, в сравнении с OpenOffice.org.

leafpad - очень «легкий» текстовый редактор.

epdfview - легковесный просмотрщик PDF.

xarchiver - легковесная утилита для архивирования и сжатия, заменяющая File Roller.

pcmanfm - легковесный файловый менеджер с вкладками.

ivman - выполняющаяся в фоне программа, которая автоматически монтирует устройства. Вам нужно добавить строку «ivman &» в файл «.config/openbox/autostart.sh».

Здесь кое-что лучшее для чтения по настройке openbox (англ.):


1. http://icculus.org/openbox/index.php/Main_Page
2. http://wiki.archlinux.org/index.php/Openbox
3. http://gentoo-wiki.com/HOWTO_Openbox

Это все, зайдите в OpenBox и сконфигурируйте его как хотите.

Использование Readahead

Это руководство предполагает использование командной стоки для выполнения некоторых команд, и использование приложений readahead-list и readahead-watch, профилирующих загрузку. Изменения в системе легко обратимы, и худшее, что может произойти - это сокращение скорости входа в систему (какая ирония!). Конечно, с того момента, как Вы с правами root сделаете какие-нибудь изменения, ошибка в наборе некоторых команд может привести к необратимым повреждениям ПО или данных. Эти изменения не поддерживаются разработчиками Ubuntu. Вам, наверное, не следует пытаться делать это, если у вас более 512MB ОЗУ.

Часть 1: профилирование последовательности входа в систему

В первую очередь, нам нужно сделать запрос, чтобы readahead проследил последовательность загрузки системы и отметил все файлы, которые считываются в это время. Продвинутые пользователи могут указать это во время загрузки, для этого есть аргумент «profile», призванный оптимизировать загрузку Ubuntu. Нам, исключительно вручную, нужно будет сымитировать, что делает эта загрузочная опция, но сохранить вывод в разные файлы.

Для начала, давайте сохраним наш список readahead в директории «~/.readahead»:

$ mkdir ~/.readahead

Теперь завершите сеанс и нажмите CTRL+ALT+F1 для входа в терминал. Запустите профилирование:

$ sudo readahead-watch -o ~/.readahead/gnome.root /

Это загрузит Ваш диск на некоторое время (может даже на несколько минут), потом вернет командную строку. Профилирование теперь в фоновом режиме наблюдает за всеми действиями. Затем без завершения сеанса вернитесь в GDM (ALT+F8) и выполните обычный вход.

После того, как Вы полностью войдете в систему, нажмите CTRL+ALT+F1, чтобы вернуться в терминал и запустите:

$ sudo killall readahead-watch

$ sudo chown jdong:jdong ~/.readahead -R

Замените jdong:jdong на Ваши имя пользователя и группу. Теперь нужно немного сократить список. Особенно если у Вас на рабочем столе есть есть большие файлы (например 1Гб AVI файлы), последовательность загрузки может касаться и их, потому что readahead думает, что их следует загрузить в память целиком! В терминале запустите:

$ cat ~/.readahead/gnome.root | xargs -i ls -lk {} | sort -rn -k +5 | less

Это отобразит все файлы, которые readahead хочет прокешировать, отсортированные в порядке убывания размера. Пятый столбец (перед датой) показывает размер файла в КБ (килобайтах). Удостоверьтесь, что там нет очень больших файлов. Если есть размером 10 000 КБ или около того, то вероятно не стоит использовать предзагрузку. Вы можете удалить ненужные файлы из списка предзагрузки, открыв «~/.readahead/gnome.root» в любимом редакторе и удалить соответствующую строку.

Если у Вас /home расположен на отличном от root (/) разделе, Вам следует повторить Часть 1 для каждого раздела, заменяя gnome.root различными именами, и заменяя точку монтирования «/» на интересующую.

Часть 2: Подключаем все в последовательность входа в сессию

Далее нам следует сообщить Ubuntu, чтобы она выполняла readahead при каждом входе в сессию. Я собираюсь использовать «/etc/X11/Xsession.d» для этих целей, но если Вы предпочитаете другой способ выполнить предзагрузку всего, воспользуйтесь моим!

Создайте файл, называемый «/etc/X11/Xsession.d/00readahead», и впишите в него следующее:

$ for list in ~/.readahead/*; do readahead-list $list & done

wait

Сохраните файл, сейчас Вы можете перезагрузиться, чтобы проверить изменения. Вы заметите, что вход «подвис» на оранжевом экране, до тех пор, пока диск не стал работать без особой нагрузки, затем, после того как вход в сессию полностью прокеширован однажды, загрузка ускорится. Таким образом, загрузка моей системы составила 30 секунд, заметное улучшение.

Часть 3: Подключаем в последовательность загрузки

Очень часто бывает, что мы не входим немедленно, как только появляется запрос. Мы можем сходить за чашечкой кофе, или все компьютеры в лаборатории включаются до того, как придут студенты. Может иметь значение кеширование входа в сессию как часть загрузки. Откройте «/etc/rc.local» в Вашем любимом текстовом редакторе и перед строкой «exit 0» добавьте:

$ for list in /home/jdong/.readahead/*; do readahead-list $listdone

Заметьте, что Вам надо использовать свое имя пользователя здесь, сейчас мы не переносим это в фон (Мы можем, но не имеем достаточно причин для этого).

Сейчас перезагрузитесь и ждите, пока работа диска не остановится перед тем как войти. На этот раз скорость входа составила 19 секунд.

У Вас может возникнуть два вопроса по этому поводу:

1. Как много времени займет повторный вызов readahead для файлов, которые уже были однажды кешированы? Примерно 0,05 секунды на вызов readahead во второй раз с тем же списком.

2. Как много сверх времени это добавляет к загрузке, если readahead в фоне все еще выполняется и Вы пытаетесь войти? Около 2 секунд на моей конфигурации.

Заключение

В моем случае применение readahead привело к 10 секундному улучшению в скорости загрузки в худшем случае, и выдающийся двукратный прирост, когда система простаивала 2 секунды перед запросом на вход.

Это очень ценные улучшения, и они будут все лучше, если будет использована лучшая версия этих настроек в Ubuntu. Основная идея должна быть очень проста, адаптированный файл «/etc/readahead/readahead.gnome» подставляется в систему и подключается в Xsession.d скрипт.

Очень много других, долго загружающихся приложений приходит на ум, пока диск нагружен (Firefox? Openoffice? Eclipse?). Вы можете использовать похожую процедуру написав «wrapper script», который будет выполнять readahead-list при первом вызове списка, затем запустите приложение с базовыми аргументами. Мне очень интересно услышать об улучшениях, которые даст этот метод.

Отмена readahead

Удалять, удалять и удалять! Удалите директорию «~/.readahead», удалите «/etc/X11/Xsession.d/00readahead», и удалите строку, которую Вы добавили в «/etc/rc.local».

Все сделано

Ваша система теперь должна быть в сто раз быстрее!

5 комментариев:

Анонимный комментирует...

А как насчёт InitNg?Хотелось бы про него узнать.

tinman321 комментирует...

http://citkit.ru/articles/247/
вот статья по этому поводу

а в этой я сам ничего же не писал, это перевод

Анонимный комментирует...

Automatic Prelinking After Program Are Installed

One problem with prelinking in that when you install new programs those programs are not prelinked. So to avoid this problem when installing programs with apt-get or synaptic, use the directions below.

1. Put this in terminal:

Quote:sudo gedit /etc/apt/apt.conf

2. When the file opens in Gedit, put this line at the end of the file and save (even if the file has no content before you add the line):

Quote:DPkg::Post-Invoke {"echo Running prelink, please wait...;/etc/cron.daily/prelink";}

Анонимный комментирует...

DPkg::Post-Invoke {"echo Running prelink, please wait...;/etc/cron.daily/prelink";
извините что вставил коряво
полная статья на англ. тут
http://ubuntuforums.org/showthread.php?t=74197

tinman321 комментирует...

добавить в текст в виде сноски?
за инфу спасибо