LXF104:Дави на газ!

Материал из Linuxformat.

Перейти к: навигация, поиск

Содержание

И снова о скорости

Александр Толстой избороздил просторы Интернета, форумы и списки рассылки, заглянул в древние манускрипты и покрытые пылью фолианты – и все для того, чтобы подготовить новую подборку советов по ускорению вашей системы.

Два с половиной года назад в LXF72 вышла статья про 72-ю скорость, посвященная разгону. Наши английские коллеги предложили тогда неплохой набор советов и дельных методик по оптимизации системы. Но время идет, и погоня за скоростью продолжается! За прошедшее время ядро Linux стало более гибким и оптимизированным, а рабочие среды – более функциональными. Ах, да, еще вышла Vista, скорость которой вызывает у бывалых линуксоидов лишь хитрый прищур и улыбку...

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

Советы сгруппированы по разделам ОС, которым они посвящены. Некоторые советы полностью закрывают тот или иной раздел; другие объединены по общему признаку. Практически все советы примени- мы к любому дистрибутиву Linux, хотя иногда кое-какие детали будут отличаться. Итак, поехали!

ЧАСТЬ 1 Оптимизация винчестера

Корневой раздел, на который у вас установлен Linux, скорее всего, содержит файловую систему ext3/ReiserFS/XFS. Сведения о монтируемых при загрузке разделах содержатся в файле /etc/fstab, где обязательно присутствует корневой раздел (/). Обратите внимание на пункт defaults, обозначающий стандартный набор параметров монтирования. Однако мы можем указать их и вручную, поставив после defaults запятую и перечислив ряд настроек, которые сделают файловую систему быстрее. Например, для

  • ReiserFS: acl,user_xattr,noatime,nodiratime,notail,barrier=flush
  • Ext3: acl,user_xattr,noatime,nodiratime,barrier=1
  • XFS: defaults,noatime,nodiratime,logbufs=8,logbsize=32k,biosize=16,allocsize=512m,barrier

Вот что все это означает:

  • user_xattr – расширенные атрибуты файлов (используются для индексирования).
  • barrier – команда очистки кэша.
  • noatime и nodiratime – отключение записи времени последнего доступа (для файлов/директорий).
  • allocsize – размер заранее резервируемой области на диске. Высокое значение помогает избежать фрагментации.
  • biosize – размер I/O-блоков по умолчанию.
  • logbufs – количество встроенных буферов для ведения журнала.
  • logbsize – размер буфера.

Последние 3 параметра увеличивают скорость чтения/записи.

Включаем режим Writeback

В большинстве дистрибутивов при создании раздела ext3 используется тип журналирования Ordered (упорядоченный), т.к. он обеспечивает наилучшее соотношение скорости и безопасности. Однако самым быстрым режимом является Writeback (журналирование после записи): он осуществляет наименьшее журналирование.

Для его включения рекомендуется загрузиться в другой дистрибутив или с LiveCD, так как необходимо, чтобы ваш обычной корневой раздел (в нашем примере это /dev/sda1) был размонтирован :

tune2fs -O has_journal -o journal_data_writeback /dev/sda1

Включение индексирования директорий

Индексирование директорий увеличивает скорость чтения и записи «в» и «из» каталогов вашего жесткого диска. Это полностью безопасный и рекомендованный режим.

Сначала нужно указать режим журналирования:

tune2fs -O dir_index /dev/sda1

Затем – включить индексацию существующих директорий:

e2fsck -D /dev/sda1

Выполнение команды e2fsck может занять немного времени – это зависит от размера вашего раздела и количества директорий в нем.

ЧАСТЬ 2 Оптимизация загрузки Linux

Здесь необходимо понимать, что и когда происходит во время старта системы. Последовательность примерно такова:

  1. В соответствии с записью в загрузчике GRUB/LILO, загружается ядро (kernel) и образ необходимых для загрузки драйверов (initrd).
  2. Далее процесс /sbin/init запускает службы, настроенные для определенных уровней запуска. Последний уровень перед загрузкой графической системы – runlevel 5.
  3. Запускается менеджер дисплея (обычно gdm/kdm), предлагающий ввести имя пользователя и пароль (если не включена функция автоматического входа в систему).
  4. После того как вы авторизуетесь, будет загружена рабочая среда (обычно KDE или GNOME). При автоматическом входе в систему среда загружается сразу после запуска gdm/kdm, которых вы, соответственно, не видите.

Обычно все советы по уменьшению времени загрузки сводятся к отключению ненужных служб, но мы пойдем дальше и постараемся ускорить загрузку на самом первом этапе. Для этого необходимо пересобрать ядро без образа initramfs, который и отвечает за содержание файла initrd в директории /boot. Чтобы ОС смогла загрузиться без файла initrd, необходимо, чтобы в ядро был встроен драйвер файловой системы. Все остальные драйверы могут присутствовать в виде отдельных модулей. Итак, откройте окно конфигурации ядра (make xconfig или make menuconfig), найдите параметр Initial RAM filesystem and RAM disk (initramfs/initrd) support и снимите с него галочку. Теперь в разделе File systems убедитесь, что драйвер корневой файловой системы встроен в ядро (y), а не собирается в виде модуля (m). В качестве дополнительных мер по оптимизации ядра не забудьте сделать следующее:

  • В разделе Processor type and feautures выбрать свой тип процессора, повышенную частоту таймера (1000 Hz) и уменьшение задержек – Preemptible kernel (если у вас настольный компьютер). Также вы можете попробовать бестактовый режим – Tickless kernel, который очень положительно влияет на многозадачность.
  • Отключить явно ненужные модули, типа Dallas 1-Wire bus и другие устройства, которых у вас точно нет (например, Bluetooth или Firewire). Этим вы сэкономите время при сборке ядра.
  • Обязательно отключите Kernel debugging в разделе Kernel hacking, так вы сэкономите и на размере итогового ядра.

Теперь можно собрать ядро привычными командами: make all, make modules_install и make install. В большинстве современных дистрибутивов автоматически будет создана запись в файле загрузчика. Вы заметите, что она лишена записи об initrd. Теперь ядро будет загружаться и работать заметно быстрее!

ЧАСТЬ 3 Оптимизация дисковой системы

В Linux присутствует очень полезная команда hdparm, которая, судя по названию, должна отвечать за параметры жесткого диска. Так оно и есть: с помощью hdparm вы можете узнать текущие рабочие параметры, а также поменять часть из них. Один из параметров, влияющий на производительность – readahead. Он устанавливает объем предварительно резервируемых винчестером данных (в килобайтах) при операциях чтения/записи. Это оказывает большое влияние на скорость копирования больших файлов и вообще больших объемов данных. То есть, если вы копируете содержимое DVD на жесткий диск, то для него лучше поставить высокое значение readahead. Делается это так:

/sbin/hdparm -a 1024 /dev/sda

Эта команда установит предварительное резервирование 1 МБ данных для устройства /dev/sda. В тоже время высокое значение этого параметра противоречит идее многозадачности, когда жесткий диск используется многими процессами одновременно, и снижает общую производительность системы. Поиграйте с этим параметром – для многих случаев оптимальным будет значение 32 или около того.

hdparm позволяет также настраивать и другие функции: например, отключать питание диска (полезно при его бездействии), проводить тестирование производительности (hdparm -Tt), устанавливать скорость оптического привода (hdparm -E) и многое другое – полный список способов выводится командой hdparam без параметров.

Когда вы добьетесь нужного результата, не забудьте поместить вашу команду в один из скриптов в /etc/rc.d/, например rc.local или любой другой, который запускается при старте системы. Этим вы избавитесь от необходимости применять параметры вручную при каждой перезагрузке.

ЧАСТЬ 4 Разгон рабочего стола

После того, как загрузка Linux дошла до 5-го уровня запуска (runlevel 5), обычно запускается графический X-сервер, менеджер экрана и рабочая среда. Для начала оптимизируем запуск X-сервера. Во-первых, если у вас видеокарта NVIDIA или ATI, убедитесь в том, что используется проприетарный драйвер (nvidia или fglrx соответственно), а в /etc/X11/xorg.conf установлены renderaccel и другие повышающие быстродействие опции. Во-вторых, откройте файл /var/log/Xorg.0.log (если рабочий стол запущен на дисплее 0) и проанализируйте отчет на предмет ошибок. Так можно выявить, например, неверные пути к шрифтам – если в xorg.conf указаны несуществующие пути Fontpath.

Теперь перейдем собственно к ускорению KDE и GNOME.

Советы пользователям GNOME

1. Иногда приложения в GNOME запускаются излишне медленно, как будто установлена искусственная задержка перед их выполнением. Зачастую виновником этого является неправильно настроенная обработка имени хоста и домена. Добавьте в файл /etc/hosts строку:

 127.0.0.1 localhost.localdomain localhost ИМЯ_ВАШЕГО_ХОСТА

Имя хоста обычно отображается в приглашении терминала; также его можно узнать командой /bin/hostname.

2. Если вы готовы пожертвовать красотой ради скорости, поставьте тему Simple для GTK2 и тему оформления Atlanta – для Metacity. Это самые «легкие» и быстрые темы, что есть в любой поставке GNOME.

3. Если при проигрывании фильма вы перетаскиваете окно плейера и видите синюю каемку, то это поправимо, если отключить вывод графики на XV. Дайте команду gstreamer-properties и на вкладке Видео выберите «Система X Window (без расширения XV)».

4. Повысить скорость загрузки GNOME можно, отключив ненужные службы из автозагрузки. Это можно сделать в окне управления сеансами (команда gnome-session-properties). Также стоит отметить, что GNOME запускается чуть быстрее при использовании «родного» менеджера экрана gdm.

5. Инструкция

 gtk-menu-popup-delay = «0»

включенная в файл .gtkrc-2.0, устранит задержки появления меню, что особенно полезно для медленных компьютеров.

Советы пользователям KDE (3.x)

1. Повысить скорость загрузки KDE можно в Центре управления, отключив заставку, звуки и ненужные службы. Если вы не пользуетесь службами KDE вообще (например, вам не нужны уведомления о подключаемых устройствах), то проблему можно решить более радикально: откройте файл скрипта PREFIX/bin/startkde (префиксом обычно выступает /usr или /opt/kde3), и замените все его содержание на одну строку:

 kdesktop && kicker && kwin && dcopserver

Это минимальный набор, необходимый для работы с KDE, и он запустится за считанные секунды.

2. Используйте prelink. Этот инструмент оптимизирует связи между исполняемыми файлами и необходимыми им библиотеками *.so. Эффективность prelink сильно зависит от языка, на котором написано приложение. По этой причине prelink заметно разгоняет KDE-приложения (большая часть которых написана на С++) и почти никак не влияет на GNOME-приложения (C). Prelink легко установить, так как из сторонних зависимостей он нуждается только в библиотеке libelf.

3. При использовании KDE в школе или любом другом общественном учреждении может пригодиться предварительная загрузка приложений во время простаивания компьютеров с запущенным приглашением kdm. Файл настроек этого менеджера экрана обычно находится по адресу PREFIX/share/config/kdm/kdmrc, и в нем указан другой файл – preloader, который и содержит список запускаемых менеджером команд. Например, если KDE установлен в /opt/kde3, то интересующий нас файл по умолчанию будет находиться по адресу /opt/kde3/bin/preloadkde. Для более быстрого запуска туда можно поместить команду индексирования директорий KDE, например:

exec find /etc/opt/kde3 /home/user/.kde /opt/kde3/share/applications \
/opt/kde3/share/applnk /opt/kde3/share/mimelnk /opt/kde3/share/services
\ /opt/kde3/share/servicetypes /opt/kde3/share/config \
 /opt/kde3/share/icons /opt/kde3/

а также команду

 kdeinit

которая осуществляет предварительную загрузку модулей KDE. Теперь после введения имени пользователя и пароля KDE загрузится молниеносно!

4. Если вы не используете KDE-приложения для просмотра фильмов и прослушивания музыки, то можете смело отключать звуковой сервер Artsd. Этот параметр называется «Включить звуковую систему», и он находится в соответствующем разделе Центра управления. Скажем, если вы используете Audacious и Mplayer, который могут выводить звук напрямую на звуковое устройство ALSA, то Artsd вам точно не нужен. Для управления громкостью в таком случае подойдут alsamixer и alsamixer-gui.

На десерт

Знаете ли вы, что...

Если у вас есть два или более винчестеров, то вы можете дополнительно увеличить скорость работы дистрибутива, переместив директорию /usr на второй накопитель. Для этого не нужно переустанавливать дистрибутив – просто скопируйте файлы и внесите нужные изменения в /etc/fstab. Тем, у кого мало оперативной памяти, можно также посоветовать сделать то же самое со swap-разделом. Делается это так: сначала выясните, на каком разделе у вас в данный момент находится подкачка, просмотрев файл /etc/fstab. Затем от лица суперпользователя дайте команду

swapoff /имя/раздела

для отключения действующей подкачки. Теперь вам нужно создать swap-раздел на втором винчестере (если его там раньше не было). Это несложно, и делается стандартной командой fdisk, либо через графический инструмент в дистрибутивах Mandriva/SUSE, Fedora и многих других. После этого подключите новый раздел в систему:

mkswap /новый/раздел

и выполните

swapon /новый/раздел

Не забудьте поправить имя раздела в файле /etc/fstab. Готово!

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

/etc/rc.d/ какой-либо файл службы и найдите в нем строку типа

*) startup $i start ;;

Измените ее на

*) startup $i start & ;;

и сохранитесь. Будьте осторожны, так как между службами существуют зависимости, и этот трюк не всегда срабатывает.

При наличии большого объема ОЗУ можно принудительно снизить активность системной подкачки и тем самым повысить быстродействие дисковой подсистемы при работе с несколькими приложениями одновременно. Отредактируйте файл /etc/sysctl.conf и добавьте в его конец строку:

vm.swappiness=10
Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию