Часть информации устарела. При применении к новым выпускам Ubuntu будьте осторожны!

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

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

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

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

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

В Ubuntu по умолчанию установлена утилита readahead, которая позволяет ускорить загрузку системы. Для того чтобы эта утилита давала максимальный эффект, рекомендуется время от времени загружать систему с параметром profile, который обновляет кэши readahead. Чтобы сделать это, надо во время загрузки компьютера зайти в меню GRUB, зажав Shift при включении компьютера, затем выбрать строку c названием Ubuntu и нажать кнопку E для редактирования параметров загрузки. В появившемся тексте найдите строку вида1)

linux	/vmlinuz-3.5.0-26-generic root=UUID=39efddef-c527-4bd0-bde5-82278c4fdeb3 ro   quiet splash $vt_handoff

и добавьте слово profile в конец строки (не забудьте поставить пробел перед profile). Для загрузки системы нажмите Ctrl+X или F10. С этой опцией система будет загружаться дольше обычного, так как будет производиться сбор информации. После полной загрузки нужно еще раз перезагрузиться.

Эти действия обновляют информацию о всех используемых на этапе загрузки библиотеках и утилитах в файле /etc/readahead/boot, а в /etc/readahead/desktop - информацию о загрузке десктоп окружения. При следующей загрузке сервис readahead, при помощи программы /sbin/readahead-list, загрузит библиотеки и программы, упоминающиеся в индексе, в page cache, что немного уменьшит время загрузки.

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

Отключение журнала для корневого раздела

  • Откройте терминал, введите:

    sudo gedit /etc/fstab

    Найдите следующую после комментария похожего на «/ was on /dev/sda2 during installation« строку и приведите ее к виду

    # / was on /dev/sda2 during installation
    UUID=f4d4d73d-4141-4701-a7e2-ec41664483a7 / ext3 defaults,errors=remount-ro,noatime,data=writeback 0 1

    добавив ,noatime,data=writeback .

  • Теперь введите следующую команду в консоли:

    sudo gedit /etc/default/grub

    и приведите строку

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

    к следующему виду

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash rootflags=data=writeback"

    Сохраните файл.

  • Обновите конфигурацию загрузчика:

    sudo update-grub
  • Если у вас раздел отформатирован в одну из файловых систем из семейства Ext выполните следующую команду:

    sudo tune2fs -o journal_data_writeback /dev/sdb2

    Помните, что название вашего раздела с корневой системой может отличатся от /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

Отключение ненужных служб (демонов)

Де́мон (англ. daemon) — в системах класса UNIX — служба, работающая в фоновом режиме без прямого общения с пользователем. Демоны обычно запускаются во время загрузки системы. Типичные задачи демонов: серверы сетевых протоколов (HTTP, FTP, электронная почта и др.), управление оборудованием, поддержка очередей печати, управление выполнением заданий по расписанию и т. д. В зависимости от задач, выполняемых компьютером, некоторые из этих демонов можно отключить и, таким образом, сэкономить на времени запуска системы и уменьшить нагрузку на систему во время работы. Для этого воспользуемся утилитой sysv-rc-conf. Утилита эта консольная, но очень проста и интуитивно понятна, поэтому использовать ее могут даже люди с паническим страхом терминала. Установка:

 sudo apt-get install sysv-rc-conf 

Запускаем:

 sudo sysv-rc-conf 

В терминале получаем следующее: Управление осуществляется несколькими клавишами: Пробел - ставим/убираем крестик, + - - остановка/запуск процесса, Q - выход.

Цифры в верхей строчке - это уровни выполнения. Для отключения сервиса, надо просто убрать крестик со всех уровней.

  1. acpi-support - Лучше оставить уровень по умолчанию. То есть: 2,3,4,5.
  2. acpid - Демон acpi. Этот и предыдущий процессы отвечают за управление питанием и очень важны и для ноутбуков, и для рабочих станций, так что лучше оставить их включенными. По умолчанию: 2,3,4,5.
  3. adjtimex - Инструмент для тонкой подстройки часов в ядре. Обычно в списке загрузки его нет. В исключительных случаях, если он всё же находится в этом списке, значит тому были веские причины и лучше оставить его включенным.
  4. alsa - Если используется звуковая подсистема alsa, то да, запуск надо оставить. Но если у вас есть служба alsa-utils, то эту можно отключить. По умолчанию: выключена, если включена alsa-utils.
  5. alsa-utils - В моей системе эта служба заменяет alsa, так что я выключил alsa и включил эту на уровне S. -Примечание- Говоря «Выключил» я подразумеваю - снял все «X» со всех уровней выполнения. Если у вас их и не было - замечательно. Продолжаем настройку. По умолчанию: уровень выполнения S.
  6. anacron - Подсистема cron, которая выполняет любую его задачу, которая не была выполнена вовремя. Чаще всего такое случается, если в момент наступления задачи по cron ваш компьютер был выключен. Например, updatedb запланирован каждый день на 2 часа ночи, но в это время компьютер не работал. При запуске компьютера anacron попытается определить пропущенные задачи и выполнит их. Я убрал эту службу, поскольку не так часто выключаю свой ноутбук, но в большинстве случаев она должна быть включена. По умолчанию: 2,3,4,5.
  7. apmd - Эта служба меня немного смутила. У меня уже включен acpid, так зачем мне включать ещё и apmd? Если ваш компьютер не настолько старый, чтоб даже не поддерживать acpi, попробуйте отключить эту службу. Я отключил. По умолчанию: 2,3,4,5.
  8. atd - Планировщик, наподобие cron. Я отключил. По умолчанию: 2,3,4,5.
  9. binfmt-support - Поддержка ядром других форматов бинарников. Я оставил. По умолчанию: 2,3,4,5.
  10. bluez-utiles - Я выключил. У меня нет устройств bluetooth. По умолчанию: 2,3,4,5.
  11. bootlogd - Оставьте запускаться. По умолчанию: S.
  12. cron - Тоже надо оставить. По умолчанию: 2,3,4,5.
  13. cupsys - Подсистема для управления принтером. У меня принтера нет, так что я смело отключил, но вы смотрите по обстоятельствам. По умолчанию: 2,3,4,5.
  14. dbus - Система сообщений (Message bus system). Очень важна, оставьте включённой. По умолчанию: 2,3,4,5.
  15. dirmngr - Утилита управления списками сертификатов. Работает заодно с gnupg. По умолчанию: 2,3,4,5.
  16. dns-clean - В основном служит для очистки DNS при использовании соединений dial-up. У меня нет dial-up, так что я выключил. По умолчанию: S.
  17. evms - (Enterprise Volume Management System) - система управления томами для ОС Linux. EVMS предлагает единые унифицированные механизмы для управления дисками, дисковыми разделами, файловыми системами, физическими томами LVM ит.д. Я выключил. По умолчанию: S.
  18. fetchmail - Демон доставки электронной почты. Я выключил. По умолчанию: 2,3,4,5.
  19. gdm - Менеджер рабочего стола (Gnome Desktop Manager). Я его в любом случае уже выключил, когда решил загружаться в консоль. В данном случае - дело предпочтений, так что решать вам, хотите ли вы загружаться напрямую в GUI. По умолчанию: 2,3,4,5.
  20. gdomap - Я понятия не имею, зачем этот процесс должен запускаться. Я не видел этого демона больше ни в одной системе, так что я его выключил и не чувствую какой-либо утраты. Есть какие-нибудь причины для его использования на ноутбуках или рабочих станциях? По умолчанию: 2,3,4,5.
  21. gpm - Поддержка мыши для консоли. Если вы чувствуете, что не можете обойтись без мыши в консоли - поставьте уровень выполнения 1 и 2. Это всё, что нужно. По умолчанию: 2,3,4,5.
  22. halt - Не менять. По умолчанию: 0.
  23. hdparm - Скрипт для подстройки жёсткого диска. Я отключил уровни 2,3,4,5, но установил уровень S. Я полагаю, что открытие DMA, 32-битного ввода-вывода и т.д. принесёт пользу остальным процессам. Также я сменил родной скрипт на очень простой, который сделал самостоятельно. Я думаю, не стоит производить все эти избыточные проверки, если я сам знаю, что делаю. Файл конфигурации - /etc/hdparm.conf. По умолчанию: 2,3,4,5.
  24. hib