Краткое описание руководства

Эти инструкции будут полезны для оптимизации процесса загрузки, его ускорения, а также общей оптимизации и ускорения системы.

Настоятельно рекомендуется перед выполнением действий, указанных ниже, сделать резервные копии файлов, исправляемых в данной инструкции. Также рекомендуется иметь рядом Live-CD, который может понадобиться для восстановления загрузчика GRUB

Оптимизация загрузки Ubuntu

Начальная оптимизация загрузки

Это хорошая идея - сразу после установки Ubuntu, также операцию можно выполнить и позже. В этом пункте мы реорганизуем некоторые файлы, необходимые при загрузке, сделая тем самым загрузку ubuntu немного быстрее. Все, что нужно сделать - это нажать ESC в меню загрузчика GRUB при включении компьютера, затем выбрать вторую строку (она выглядит примерно так: /vmlinuz-2.6.20-15-generic root=UUID=6162302f-3f32-4b73-bb56-c42f4f9fbce2 …) нажмите кнопку E для редактирования строки. Добавьте слово profile в конец строки (не забудьте поставить пробел перед profile). После ввода нажмите Enter и затем клавишу B для загрузки системы. Первый раз система будет загружаться дольше чем обычно, последующие - будет загружаться быстрее первоначального варианта.

Оптимизация файловой системы

Следующие советы предназначены для систем с файловой системой EXT(3|4) и ReiserFS.

  • Открыть терминал, ввести:
    gksu gedit /etc/fstab

    Добавить к строке (/) обозначением корня системы. Другими словами, нужно изменить следующую строку:

    # /dev/sdb2
    UUID=f4d4d73d-4141-4701-a7e2-ec41664483a7 / ext3 defaults,errors=remount-ro 0 1

    На:

    # /dev/sdb2
    UUID=f4d4d73d-4141-4701-a7e2-ec41664483a7 / ext3 defaults,errors=remount-ro,noatime,data=writeback 0 1

#/dev/sdb2
UUID=f4d4d73d-4141-4701-a7e2-ec41664483a7 ext3
- это лишь частный случай, у вас будут другие значения.

  • Теперь введем следующие команды в консоли:
    gksu gedit /boot/grub/grub.cfg

    Добавьте следующую опцию:

    rootflags=data=writeback

    В конец следующей строки:

    # defoptions=quiet splash rootflags=data=writeback

    так

    # altoptions=(recovery mode) single rootflags=data=writeback

    Сохранить, затем ввести команды:

    sudo update-grub

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

ПРИМЕЧАНИЕ: Посмотрите обозначение раздела /dev/sdb2 которые является корнем системы (/). Если корневой раздел (/) обозначается по другому, измените /dev/sdb2 на соответствующее. Можете посмотреть /etc/fstab !

ОПАСНО: Следующая команда только для EXT3 файловой системы! Для ReiserFS это НЕ будет работать, для внесения изменений нужно перезагрузить компьютер.

  • sudo tune2fs -o journal_data_writeback /dev/sdb2

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

  • Параметры для ext4 для обладателей Источником Бесперебойного Питания (ИБП)
    • barrier=0 Код файловой системы обязан перед созданием записи фиксации [журнала] быть абсолютно уверенным, что вся информация о транзакции помещена в журнал. Просто делать запись в правильном порядке недостаточно; современные диски имеют кэш большого объёма и меняют порядок записи для оптимизации производительности. Поэтому файловая система обязана явно сообщить диску о необходимости записать все журнальные данные на носитель перед созданием записи фиксации; если сначала будет создана запись фиксации, журнал может быть повреждён. Блокирующая система ввода-вывода ядра предоставляет такую возможность благодаря использованию механизма «шлагбаумов» (barriers); проще говоря, «шлагбаум» запрещает запись любых блоков, посланных после него, до того момента, как всё, что было прислано перед «шлагбаумом», будет перенесено на носитель. При использовании «шлагбаумов» файловая система может гарантировать, что всё, что находится на диске, целостно в любой момент времени. Отключая шлагбаум barrier=0, мы ускоряем операции записи на разделы ext4.
    • noatime, nodiratime – отключение записи времени последнего доступа (для файлов/директорий). Или relatime - атрибут времени доступа (atime) обновляется, но только в том случае, если изменились данные файла (атрибут mtime) или его статус (атрибут ctime). Рекомендую использовать relatime.
    • commit – время между сбросами буферов на диск. Рекомендую commit=100
  • Параметры для btrfs для обладателей Источником Бесперебойного Питания (ИБП)
    • nobarrier Код файловой системы обязан перед созданием записи фиксации [журнала] быть абсолютно уверенным, что вся информация о транзакции помещена в журнал. Просто делать запись в правильном порядке недостаточно; современные диски имеют кэш большого объёма и меняют порядок записи для оптимизации производительности. Поэтому файловая система обязана явно сообщить диску о необходимости записать все журнальные данные на носитель перед созданием записи фиксации; если сначала будет создана запись фиксации, журнал может быть повреждён. Блокирующая система ввода-вывода ядра предоставляет такую возможность благодаря использованию механизма «шлагбаумов» (barriers); проще говоря, «шлагбаум» запрещает запись любых блоков, посланных после него, до того момента, как всё, что было прислано перед «шлагбаумом», будет перенесено на носитель. При использовании «шлагбаумов» файловая система может гарантировать, что всё, что находится на диске, целостно в любой момент времени. Отключая шлагбаум nobarrier, мы ускоряем операции записи на разделы btrfs.
    • noatime, nodiratime – отключение записи времени последнего доступа (для файлов/директорий). Или relatime - атрибут времени доступа (atime) обновляется, но только в том случае, если изменились данные файла (атрибут mtime) или его статус (атрибут ctime). Рекомендую использовать relatime.
    • nodatacow – При включенном механизме copy-on-write появляются дополнительные издержки и параметром nodatacow мы отключаем эту возможность, которая на desktop компьютере редко используется.
  • vm.dirty_writeback_centisecs. Увеличим время между сбросом «грязных» буферов vm.dirty_writeback_centisecs в /etc/sysctl.conf. Рекомендую vm.dirty_writeback_centisecs = 15000

Системная оптимизация

Настройка Swappiness

Изменим поведение Ubuntu в отношении использования ОЗУ и подкачки. Есть такой параметр vm.swappiness, который по умолчанию имеет значение 60, и контролирует процент свободной памяти, при которой начнется активный сброс страниц в раздел swap. Иными словами, при 100-60=40% занятой памяти, Ubuntu уже начнет использовать раздел swap. При большом количестве ОЗУ в компьютере, лучше изменить параметр vm.swappiness до 10 и тем самым приказать Ubuntu не использовать swap пока занятая ОЗУ не достигнет 100-10=90%. В консоли введите следующую команду:

gksu gedit /etc/sysctl.conf

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

vm.swappiness=10

Только для версии 9.04 и ниже!

Данный пункт («Параллельная» загрузка) не работает в 7.10! Страница с багом здесь

  • «Параллельная» загрузка. Если Вы имеете двухядерный процессор, или он поддерживает технологию hyperthreading - то их можно задействовать в системе. Откройте терминал и выполните команду:
    gksu gedit /etc/init.d/rc

    найдите CONCURRENCY=none и замените на:

    CONCURRENCY=shell

    Сохраните и перезагрузите компьютер.

IPv6

В Linux большинство программ используют протокол IPv4 для подключения к интернету. В Ubuntu IPv6 включен по умолчанию, отключим его, если он вызывает проблемы в сети:

gksu gedit /etc/default/grub

Найдите параметр GRUB_CMDLINE_LINUX_DEFAULT и аккуратно дополните значением ipv6.disable=1 Сохраните изменения. Вызовите

sudo update-grub

для применений изменений, перезагрузите компьютер.

В старых версиях Ubuntu протокол IPv6 отключается по-другому

Ускорение запуска программ, с помощью preload

  • Preload - демон, работающий в фоне, который собирает информацию о наиболее часто используемых программах, кэширует их и используемые ими библиотеки, что приводит к повышению скорости загрузки программ. Нужно просто установить preload
    sudo aptitude install preload

    в Терминале или запустить Синаптик и в нем найти preload и установить его. Настройки preload по умолчанию подходят большинству, поэтому изменять что-либо в файле /etc/preload.conf не обязательно.

Кеширование символьных таблиц

Создайте пустой каталог

mkdir ~/.compose-cache

Ваши Qt/GTK программы будут чуток быстрее стартовать и потреблять меньше памяти, благодаря тому, что libX11 будет создавать в ~/.compose-cache кеши распарсенной информации и использовать ее повторно.

Оптимизация DE

Ускорение Gnome

  • Открыть текстовый редактор и скопировать туда следующие строки
    gtk-menu-popup-delay = 0
    gtk-menu-popdown-delay = 0
    gtk-menu-bar-popup-delay = 0

    сохранить в своем «домашнем» каталоге под названием .gtkrc-2.0 (не забыть про лидирующую точку) и перегрузить иксы.

  • Запустить gconf-editor

    /apps/metacity/general

    поставить галочку reduced_resources

    /apps/panel/global

    убрать галочку enable_animations

    /desktop/gnome/interface

    убрать галочку accessibility.

    /apps/panel/global/panel_animation_speed

    Установить текстовый параметр в значение panel-speed-fast, для ускорения анимации панели. Перезапустить сессию Gnome.

Ускорение запуска KDE программ в среде Gnome

  • В gconf-editor устанавливаем значения:
    /desktop/gnome/thumbnailers/disable_all = true
    /apps/nautilus/preferences/show_image_thumbnails = never

    Можно также удалить старые миниатюры, удалив директорию ~/.thumbnails

  • Ускорим старт Qt программ. Для этого в Меню - Система - Параметры - Запускаемые приложения добавим запускаемую программу /usr/bin/kdeinit под именем FastQt. После перезагрузки компьютера, Qt программы будут быстрее стартовать, так как не нужно дополнительно запускать «минимальный набор KDE».

Ссылки

  • Обсуждение данной темы можно найти на форуме здесь и здесь
  • Как собрать ядро под конкретную аппаратную конфигурацию http://www.linuxcenter.ru/lib/articles/system/kernel26_install.phtml
  • Перенос части операций с винчестером в оперативную память при работе с /tmp → снижение обращений к винчестеру статья используйте только когда много памяти
  • Более актуальная версия данной статьи об Ускорение Ubuntu. После проверки временем, советы будут переноситься в данную вики.