Как ускорить загрузку linux

Обновлено: 03.07.2024

Итак, вы успешно установили дистрибутив Linux Mint, Ubuntu или Fedora Workstation, провели его оптимизацию, но он все равно медленно загружается. Конечно же, можно просто смириться с этим, ведь время загрузки системы не является определяющим фактором при работе с ней, но если вы обладаете опытом работы с Linux и не боитесь использовать терминал, вы можете провести небольшую дополнительную оптимизацию процесса ее загрузки, заключающуюся в отключении неиспользуемых системных служб. Так как во всех упомянутых дистрибутивах с недавнего времени используется менеджер инициализации systemd, процесс их настройки будет практически идентичным. Различия в данном случае будут заключаться в наборе активированных по умолчанию системных служб.

1. Ознакомление со списком активированных системных служб

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

systemctl list-unit-files --type=service | grep enabled

После окончания ввода команды следует нажать клавишу Enter для ее исполнения. В результате вы получите список активированных системных служб в следующем формате:

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

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

2. Деактивация системных служб

Для деактивации системной службы следует использовать последовательность из двух команд:

sudo systemctl stop <имя службы>.service
sudo systemctl disable <имя службы>.service

Так как некоторые деактивированные службы могут активироваться другими службами, в некоторых случаях для принудительной деактивации службы вам также придется использовать следующую команду:

sudo systemctl mask <имя службы>.service

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

systemctl status <имя службы>.service

В результате исполнения данной команды вы получите аналогичный вывод:

Из данного вывода очевидно, что служба активирована (enabled во второй строке), а также активна и исполняется (active (running) в третьей строке).

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

3. Восстановление работоспособности системных служб

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

sudo systemctl unmask <имя службы>.service
sudo systemctl enable <имя службы>.service
sudo systemctl start <имя службы>.service

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

4. Системные службы, которые стоит деактивировать

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

A. Планировщики событий

  • anacron-resume.service
  • anacron.service
  • cron.service
  • atd.service

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

B. Службы поддержки печати

Данные службы ответственны за обнаружение и работу с принтерами. Если у вас нет принтера, можете смело деактивровать их.

C. Служба поддержки широкополносных беспроводных устройств

Данная служба позволяет использовать 2G/3G/4G модемы. Если вы не используете подобные устройства, можете деактивирвать ее.

D. Службы поддержки логических виртуальных томов и RAID-массивов

  • lvm2-monitor.service
  • dmraid-activation.service
  • iscsi.service
  • mdmonitor.service
  • multipathd.service

Данные службы должны использоваться лишь в том случае, если при установке системы жесткие диски были использованы для создания логических виртуальных томов или RAID-массивов. Если вы не создавали их (что рекомендуется), вам не понадобятся все эти службы.

E. Служба поддержки устройств Bluetooth

Данная служба позволяет работать с устройствами Bluetooth. Если вы не используете таких устройств, можете деактивировать ее.

F. Службы отправки информации о системных сбоях

  • whoopsie.service
  • abrt-ccpp.service
  • abrt-oops.service
  • abrt-vmcore.service
  • abrt-xorg.service
  • abrtd.service

Данные службы предназначены для сбора информации о системных сбоях и ее передачи разработчикам дистрибутива. Если вы не желаете активно участвовать в процессе разработки дистрибутива, вы можете деактивировать данные службы.

G. Служба для людей с ограниченными возможностями

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

H. Служба обнаружения сетевых устройств

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

I. Службы поддержки виртуальных машин

  • libvirtd.service
  • spice-vdagentd.service
  • vgauthd.service
  • vmtoolsd.service

Данные службы используются для работы с виртуальными машинами (обычно посредством приложения Boxes). Если вы не используете виртуальные машины для запуска операционных систем, вы можете деактивировать их.

После деактивации описанных системных служб следует перезагрузить компьютер. Теперь он должен немного быстрее загружаться.

В сети довольно много статей на тему ускорения работы ГНУ систем, начиная от самого Linux ядра, заканчивая разгоном железа. Но не всем они подойдут ввиду разнообразия:

  1. Семейств дистрибутивов;
  2. Окружений и ПО;
  3. Систем инициализации;
  4. Оборудования.

Встречается настройка ядра через /etc/default/grub, операции с монтированием носителей в /etc/fstab, советы по обращению с ФП, ОЗУ, ZRAM/ZSWAP/ZCACHE, оптимизации пользовательских окружений и ПО. Писать в про всё целиком . . . можно в отдельный справочник. Но ввиду озвученных выше причин, не все пригодятся, не факт, что будут работать, а эффект от иных может быть не заметен вовсе. Поэтому тут я собрал кое-какие варианты.

ПЕРЕД ПОДОБНЫМИ ДЕЙСТВИЯМИ НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ СОЗДАТЬ ТОЧКУ ВОССТАНОВЛЕНИЯ

Возможно, не стоит применять всё сразу, чтоб была возможность выявить возможные неполадки.

Поскольку большинство систем используют systemd, для них актуальны команды

kernel — время загрузки ядра,
userspace — время на загрузку всего остального

  • systemd-analyze blame — посмотреть какие именно службы загружаются и сколько времени на это требуется
  • systemd-analyze plot >graph.svf— команда создаст svf файл с графиком, откройте его в браузере.

Далее, стоит отключить ненужные службы, список сервисов и описание можно найти в сети, как и другие команды для systemd. Чтобы это сделать нужно ввести

sudo systemctl disable <имя_службы.service>

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

Ускорение загрузки ядра Linux

Параметры загрузки ядра находятся в файле /etc/default/grub. Изменения нужно внести в значение строки GRUB_CMDLINE_LINUX_DEFAULT (значение в скобках, после знака = )

quiet - тихий вариант загрузки, выводит минимум информации

rootfstype=ext4 - в какую ФС отформатирован корень (в моём случае btrfs)

libahci.ignore_sss=1 - ускоряет загрузку жестких дисков

raid=noautodetect - отключение raid

selinux=0 - система контроля доступа, которая не нужна на домашнем ПК

plymouth.enable=0 - отключает заставку

lpj=0000000 - позволяет задать константу loops_per_jiffy, чтобы ядро её каждый раз не вычисляло. Значение индивидуально для каждого компьютера. Чтобы её узнать, нужно открыть ещё один терминал и там ввести «dmesg | grep 'lpj='». Полученное значение скопировать.

В итоге, строка будет иметь примерно такой вид:

GRUB_CMDLINE_LINUX_DEFAULT="quiet rootfstype=ext4 libahci.ignore_sss=1 raid=noautodetect selinux=0 plymouth.enable=0 lpj=12053560"

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

GRUB_DISABLE_LINUX_UUID=true

После этой операции нужно обновить конфигурацию GRUB

sudo update-grub

Установка ПО

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

sudo apt-get install preload

Можно оставить настройки по умолчанию, в файле /var/lib/preload/preload.state информация о работе preload.

cycle — как часто preload будет получать от системы данные об используемых программ и библиотек.

halflife — как часто preload будет сбрасывать старую информацию.

minsize — ограничение на размер программы или библиотеки, которую preload будет обрабатывать.

Я у себя не нашел этой утилиты. Поэтому про её работу и настройку рекомендую почитать в сети, есть материалы

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

sudo apt install prelink

В процессе работы копится всяческий мусор. Этот мусор стоит периодически чистить. Я сам постоянно использую Stacer и Bleachbit. Первая умеет много чего, а вторую программу считаю обязательной для любой ОС. Плюс использую команды для удаления зависимостей-сирот. Однако, всё же можно установить для очистки autoclean и autoremove.

sudo apt autoclean

sudo apt autoremove

Последним оставлю блок про оптимизации работ железа. Сюда стоит включить операции с SSD/HDD и ОЗУ, разгон ОЗУ/видеокарты, кастомные ядра, настройку работы ЦП и видеокарты. Для настройки работы nVidia утилита GWE и родная NVIDIA SERVER SETTING, которая устанавливается вместе с драйвером, для АМД — CoreCtrl, которая, к тому же, позволяет изменить режим работы процессора.

Для работы с SSD нужно выставить флаги в /etc/fstab

ssd, discard (Defaults - этот убираем) - для btrfs.

lazytime (Defaults, noatime - этот убираем) - для Ext4

Если вы уже выставили флаги discard в вашем Fstab, то включать TRIM по расписанию не надо!

На счет TRIM для SSD — довольно неоднозначная вещь. Встречал противоречивые мнения в сети: и что это утилита уже встроена в ядро, что она не работает по умолчанию должным образом, нужно прописывать самому в fstab. Ничего утверждать не буду. Прочитал на этот счет статью, что SSD сами справляются с уборкой мусора, надо всего-лишь держать там достаточно не размеченного пространства, порядка 10-15%. Собственно, на этом я и остановился.

Отключение защиты от уязвимостей в процессорах Intel

Spectre/Meltdown/Zombieload aka MDS (серьезно снижают производительность)

/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="nopti pti=off spectre_v2=off l1tf=off nospec_store_bypass_disable no_stf_barrier

Оптимизация дисковых операций

vm.dirty_bytes = 2097152

vm.dirty_background_bytes = 2097152

vm.vfs_cache_pressure = 50

Прошу обратить внимание на последнюю строку: этот параметр отвечает за кэширование объектов файловой системы в оперативную память. При значении 0, объекты не высвобождаются и так и остаются в оперативной памяти. Чем больше значение, тем чаще ядро будет проводить "зачистку" оперативной памяти. Поэтому если у вас оперативной памяти меньше 2 ГБ, то оставьте значение 50, дабы сократить число дисковых операций в разделе подкачки. Это также полезно в случае если у вас SSD. Но если у вас больше 2 ГБ оперативки, и обычный жёсткий диск, то выставьте значение этого параметра на 1000. Это позволит более агрессивно кэшировать дисковые операции, тем самым повысив быстродействие при достаточном количестве оперативной памяти. По умолчанию значение этого параметра равно 100.

Вам знакомо то чувство, когда по прошествии какого-то времени Ubuntu начинает тормозить? В этой статье мы собрали десять небольших советов, которые помогут если не вернуть былую скорость, то хотя бы просто заставить систему работать быстрее. Описанные здесь советы вполне могут сработать и на других дистрибутивах Linux, основанных на Ubuntu, вроде Linux Mint, Elementary OS и т.д.

1. Уменьшите стандартное время загрузки GRUB

По умолчанию GRUB даёт 10 секунд на выбор одной из нескольких ОС, вход в режим восстановления и т.д., что достаточно долго. Кроме того, вам придётся сидеть перед компьютером и нажимать на enter, чтобы как можно быстрее загрузить Ubuntu. Немного затратно по времени, не так ли? Разумным решением будет сократить это время. Сначала откроем конфигурацию GRUB:

И поменяем GRUB_TIMEOUT=10 на GRUB_TIMEOUT=2 . Теперь время загрузки сократится до 2 секунд. Почему мы ставим 2, а не 0? В последнем случае мы потеряем возможность выбрать другую ОС или зайти в режим восстановления.

Чтобы применить изменения, используйте эту команду:

2. Настройте автозапуск приложений


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


Но что, если вы ничего не хотите удалять? В таком случае вы можете отложить запуск приложения. Таким образом, для загрузки системы будет свободно больше ресурсов, а сами приложения запустятся спустя некоторое время.

Для этого в том же списке выберите нужное приложение, нажмите «Редактировать» и в поле «Команда» допишите в начале команду sleep <нужное время в секундах>; . Например, если вы напишете sleep 20; , то приложение запустится с 20-секундной задержкой.


3. Установите preload для ускорения запуска приложений

Preload — демон, анализирующий поведение пользователя и часто запускаемые приложения. Для его установки откройте терминал и введите следующую команду:

После установки перезагрузите компьютер и можете забыть о демоне, так как он будет работать в фоне.

4. Выберите лучшее зеркало для обновлений

Не будет лишним убедиться, что вы используете лучшее зеркало для обновлений. Зеркала репозитория Ubuntu разбросаны по всему свету, поэтому крайне желательно использовать ближайший к вам. Это ускорит обновление системы, потому что на получение пакетов от сервера будет уходить меньше времени.

Белкасофт , Удалённо , По итогам собеседования


Как правило, лучшее зеркало стоит по умолчанию, однако, как мы сказали ранее, не будет лишним проверить, так ли это. Также это может привести к задержке в получении обновлений, если ближайшее зеркало нечасто обновляется. Это может пригодиться людям с медленным интернет-подключением.

5. Используйте apt-fast вместо apt для быстрого обновления

apt-fast — это оболочка для apt, увеличивающая скорость загрузки пакетов с помощью множественных соединений. Если вы часто используете терминал и apt для обновлений, то вам стоит попробовать apt-fast. Установить его можно следующим образом:

6. Уберите языковые обновления из apt update:

Когда-нибудь обращали внимание на вывод sudo apt update ? В нём есть три типа строк: hit, ign и get, о значении которых можно почитать на форуме. Если вы посмотрите на строки ign, то увидите, что большинство из них связано с переводом языка. Если вы используете все приложения и пакеты на английском, то вам не нужен перевод с английского на английский.

Если отключить эти языковые обновления, то это немного ускорит apt update . Для этого откройте следующий файл:

И в его конце добавьте эту строку:


7. Уменьшите перегрев

Перегрев — распространённая проблема. Скорость работы перегретого компьютера оставляет желать лучшего. На запуск программы могут уйти годы, если кулер процессора крутится так же быстро, как бегает Усейн Болт. Для облегчения этой проблемы есть два инструмента: TLP и CPUFREQ.

Для установки и запуска TLP используйте следующие команды:

После установки TLP от вас больше ничего не требуется. Программа работает в фоне.

Для установки индикатора CPUFREQ используйте следующую команду:

Перезагрузите компьютер и включите энергосберегающий режим:


8. Настройте LibreOffice и сделайте его быстрее

Если вы часто используете LibreOffice, то вы можете сделать его немного быстрее. Запустите LibreOffice и перейдите в параметры. В открывшемся окне выберите «Память», затем поставьте галочку напротив пункта «Использовать быстрый запуск» и увеличьте объём доступной памяти.


9. Используйте легковесную среду рабочего стола (если можете)

Вместо стандартной среды GNOME вы можете попробовать более лёгкие Xfce или LXDE.

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

Конечно, рабочий стол может выглядеть не так современно, как в Unity или GNOME, но это компромисс, на который можно пойти.

10. Используйте менее тяжёлые альтернативы приложений

Это уже кому как нравится. Некоторые из стандартных или популярных приложений довольно тяжёлые и могут перегрузить слабый компьютер. В такой ситуации вы можете использовать альтернативы этих приложений. Например, вместо Ubuntu Software Center можно использовать AppGrid, вместо LibreOffice Writer — AbiWord и т.д.

Прим.перев. Ещё больше материалов по продвинутой оптимизации Linux-систем вы можете найти в Arch wiki.

Linux становится все тяжелее и тяжелее. Сегодня уже никого не удивишь приложениями, время запуска которых составляет несколько минут, окружениями рабочего стола, занимающими 500 Мб оперативки, и нерасторопной загрузкой ОС, напоминающей поход женщины по магазинам. Есть ли способы все это оптимизировать, существует ли лекарство от ожирения пингвинов, где взять ножик, чтобы отрезать все лишнее? Попробуем разобраться.

За все время существования толстых пингвинов (период, отсчитываемый примерно с момента появления GTK+ 2.X, X Free 4.X и Linux 2.6) было придумано немало способов ускорения запуска приложений и всей ОС.

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

Предварительное связывание или PRELINK

Пре-связывание есть ни что иное, как модификация запускаемого файла с целью включить в него результаты динамического связывания библиотек. Что это значит?

В стародавние времена приложения были просты и использовали в своей работе всего несколько динамически загружаемых системных библиотек. То было время господства формата исполняемых файлов a.out, особенность которых заключалась в предельной простоте.

Файлы a.out всегда точно знали, по какому адресу они будут загружены в память процесса, и по каким адресам будут располагаться их внутренние функции, константы и т.д. Эта особенность, с одной стороны, давала им преимущество в скорости загрузки, а с другой — создавала проблемы сосуществования библиотек в памяти (что, если две библиотеки будут загружены в память по одному адресу?). Проблемы надо было решать, поэтому появился формат ELF (его создатели на самом деле были поклонниками книг Толкиена :)), который снимал с исполняемых файлов ответственность за выбор адреса своего размещения в виртуальной памяти и перекладывал ее на динамический линковщик. Отныне адреса загрузки приложений, библиотек и всех их символов (переменных, констант, функций т.д.) вычислялись динамически на этапе загрузки.

ELF позволил UNIX/Linux сделать огромный шаг вперед и стать системой, способной загружать и исполнять огромное количество приложений, слинкованных с таким же количеством библиотек, без всяких проблем. Однако с точки зрения производительности это был провал. Процедура динамического связывания очень быстра, и при запуске приложений, зависящих всего от нескольких библиотек, она не вносит в процесс заметных задержек, но если это запуск громоздкого приложения с зависимостями порядка 50 библиотек, то задержка может быть весьма существенной (вплоть до нескольких десятков секунд).

Так называемое пре-связывание наделяет ELF-файлы наиболее выгодной чертой формата a.out. Запускаемые файлы модифицируются таким образом, чтобы уже включать в себя результат динамического связывания и, соответственно, заранее знать собственные адреса в памяти процесса и не тратить на их вычисление время в течение запуска. Процедура пре-связывания была предложена сотрудником Red Hat Jakub Jelinek еще в 2004 году и оказалась очень удачным методом повышения скорости запуска приложений. Согласно тестам, она может дать прирост, равный 50% от первоначальной скорости запуска, а в особо тяжелых случаях (OpenOffice, KDE, Gnome) — и того больше. При этом для ускорения системы достаточно запустить всего одну команду и немного подождать.

Да, задействовать механизм пре-связывания действительно просто. Для этого уже упомянутый выше Jakub Jelinek написал программу под названием prelink. Она доступна практически в любом Linux-дистрибутиве, поэтому собирать из исходников ничего не придется. Просто установи пакеты prelink, используя пакетный менеджер дистрибутива, и выполни следующую команду:

Аргументы командной строки в этом случае значат следующее:

  • v — выводить больше информации на экран;
  • a — подвергнуть пре-связыванию все бинарные файлы;
  • m — сохранить виртуальную память (нужно, если библиотек очень много);
  • R — рандомизировать порядок следования участков памяти (повышает уровень защиты от атак на срыв стека).

После окончания выполнения приложения можно начинать радоваться ускорению. Однако стоит помнить о нескольких ограничениях:

  1. Prelink не способен увеличить скорость загрузки бинарников, скомпилированных без опции '-fPIC'. К сожалению, таких библиотек достаточно много, обычно сборщики пакетов нарочно отключают этот флаг для увеличения производительности приложения;
  2. Prelink не умеет обрабатывать библиотеки проекта wine, поэтому об ускорении Windows-софта придется забыть;
  3. Некоторые статические библиотеки могут перестать запускаться после обработки prelink;
  4. После установки новых приложений или библиотек операцию прелинкинга рекомендуется повторить. Для удаления prelink делаем так:

Далее можно тереть пакет из системы.

Предварительная загрузка или PRELOAD

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

Демон preload может существенно повысить скорость загрузки приложений, но произойдет это только в том случае, если система оснащена достаточно большим объемом памяти. Два гигабайта — это минимум, при котором preload даст выигрыш, при меньших объемах он только помешает. Пакет preload можно найти в составе любого современного дистрибутива, поэтому для его установки достаточно использовать стандартный менеджер пакетов:

$ sudo apt-get install preload

Далее следует отредактировать конфигурационный файл /etc/preload.conf. Демон вполне сносно работает и при стандартных настройках, однако каждый из нас индивидуален и использует систему по-своему, поэтому, вероятно, ты захочешь подогнать preload под себя. Перечислю основные опции в секции model:

  • cycle — частота обращений к системе для сбора статистики. Значение по умолчанию — 20 секунд. В большинстве случаев изменять его не имеет смысла, однако если ты чувствуешь, что preload вредит производительности системы, увеличь значение.
  • halflife — задает интервал, по истечению которого preload будет забывать накопленную статистику на 50%. Значение по умолчанию — 168 часов (неделя). Рекомендуется уменьшить значение тем, кто часто меняет софт, и увеличить тем, кто может месяцами/годами пользоваться одним и тем же набором приложений.
  • minsize — минимальный размер объекта (программы, библиотеки), обрабатываемого preload. Значение по умолчанию — 2 000 000 байт (около 2 Мб), поэтому preload не будет выполнять предварительную загрузку файлов меньшего размера. Нет особой нужды менять это значение, однако если тебе кажется, что памяти будет достаточно и для кэширования более мелких приложений — уменьши значение.
  • memtotal, memfree, memcached — эти три опции взаимосвязаны и указывают на потребляемый preload объем памяти. Для расчетов используется следующая формула: (общее количество памяти х memtotal) + (память, доступная при старте х memfree) + (кэш х memcached).

Секция system также содержит три интересных для нас опции:

  • mapprefix — список каталогов, файлы которых должны быть предварительно загружены (имей в виду, что это не только бинарники и библиотеки, но и другие типы файлов).
  • exeprefix — список каталогов с бинарными файлами.
  • sortstrategy — способ оптимизации операций ввода-вывода. Значение по умолчанию — 3 (оптимизация для жестких дисков). Для твердотельных дисков лучше всего подойдет значение 1, для сетевых файловых систем — 2.

На этом все, можешь перезагрузить preload:

$ sudo /etc/init.d/preload reload

Как и любой другой демон, preload ведет логи, которые ты сможешь найти в файле /val/log/preload.log. Информация о текущем состоянии preload и его кэше доступна в файле /var/lib/preload/preload.state.

Предварительное чтение или READAHEAD

Ubuntu, а также некоторые другие современные дистрибутивы Linux, используют систему readahead во время инициализации системы. Как и демон preload, readahead заранее загружает необходимые компоненты приложений в оперативную память с целью ускорить их запуск. Разница заключается лишь в том, что readahead частично работает внутри ядра Linux и оптимизирован специально для ускорения процесса инициализации системы.

Система использует утилиту /sbin/readahead-list, которая читает файлы /etc/readahead/boot и /etc/readahead/desktop и загружает перечисленные в них файлы во время инициализации системы. Эта простая и эффективная схема, которая, однако, имеет и очевидные недостатки. Дело в том, что любая стандартная установка Ubuntu со временем претерпевает изменения в количестве установленных и загружаемых во время старта ОС сервисов. Списки файлов в этом случае становятся неактуальными и требуют обновления. Параметр ядра profile позволяет перестроить списки предварительно загружаемых файлов. Для его включения перезагрузи систему, во время загрузки нажми <Esc> для входа в меню загрузчика, далее нажми <e> и добавь в конец списка параметров ядра слово profile. Нажми <b> для загрузки. Инициализация системы в режиме профилирования займет время, поэтому будь готов потерпеть.

Заморозка процесса или CRYOPID

Иногда лучший способ ускорить запуск приложения — просто не останавливать его. Для многих юниксоидов работающие сутками напролет браузер, почтовый и jabber-клиенты — обычное дело. Такие приложения просто нет смысла завершать, они могут понадобиться в любую минуту.

Так почему бы не развить эту идею дальше и не сделать так, чтобы вместо остановки процессов их состояние можно было бы заморозить, а позже — восстановить, избавив программу от необходимости каждый раз производить сложную и трудоемкую инициализацию внутреннего состояния? Не мы первые, не мы последние. CryoPID — простое приложение для заморозки процессов и последующего их восстановления. Прога не требует прав root или модификации ядра, работает на архитектурах x86 и amd64 и, что самое главное, не привязывает замороженный процесс к конкретной машине. После заморозки процесс превращается во что-то вроде самораспаковывающегося архива, ты легко можешь перенести его на другую машину и просто запустить. Пакет CryoPID есть далеко не в каждом дистрибутиве, поэтому его придется установить самостоятельно:

После этого можно запустить программу следующим образом:

/bin/freeze имя-файла pid-поцесса

К сожалению, CryoPID имеет несколько проблем, включая неполную поддержку сокетов и X-приложений, а также генерирует мусор в списке процессов вместо имени восстановленной программы.

Шустрая загрузка UBUNTU

Ubuntu быстра, на самом деле быстра. Скорость загрузки этого дистрибутива оставляет далеко позади многие другие линуксы и заставляет завидовать поклонников BSD-систем. Однако нет пределов совершенст ву, и в этом разделе мы попробуем ускорить ускоренное.

1. Отключи таймаут в grub. По умолчанию загрузчик ждет 3 секунды, чтобы пользователь смог изменить параметры загрузки. Открой файл /boot/grub/menu.lst, найди строку «timeout=3» и замени 3 на 0.

2. Отключи splash. Ubuntu splash-screen, показываемый во время загрузки системы, малоинформативен и требует время на свою загрузку. Поэтому открываем все тот же /boot/grub/menu.lst и убираем опции «quiet» и «splash» из параметров загрузки ядра.

3. Отключи IPv6. Раньше поддержка пока ненужного протокола IPv6 в Linux была реализована в виде загружаемого модуля, поэтому для ее отключения требовалось лишь слегка отредактировать файл /etc/ modprobe.d/aliases. Сегодня IPv6 вшит прямо в ядро, поэтому для его отключения ядру должен быть передан параметр «ipv6.disable=1». Сделать это можно, отредактировав файл /boot/grub/menu.lst.

4. Отключи проверку на выход из спящего режима. Во время своей загрузки ядро выполняет проверку, выходит ли комп из спящего режима (suspend) или выполняет обыкновенную загрузку. Занимает эта процедура всего одну секунду, однако ее тоже можно сэкономить, добавив опцию «noresume» к параметрам загрузки ядра. Естественно, владельцам ноутбуков этого делать не стоит.

5. Оптимизируй initramfs. Образ RAM-диска используется для хранения низкоуровневых компонентов ОС, которые должны быть доступны еще до монтирования корневой файловой системы. По умолчанию этот образ содержит всевозможные компоненты, подобранные на все случаи жизни. Без них образ грузится в память быстрее, что способст вует сокращению общего времени загрузки системы. Открываем файл /etc/initramfs-tools/initramfs.conf, находим строку «MODULES=most» и заменяем ее на «MODULES=dep». Далее пересобираем все доступные образы только с необходимыми компонентами:

$ sudo update-initramfs -k all -u

После обновления ядра образы будут сгенерированы автоматически.

6. Отключи ненужные сервисы. По умолчанию в Ubuntu активировано множество фоновых сервисов на все случаи жизни. Вряд ли тебе нужны они все, поэтому идем отключать. Открываем System q„ Administration

  • Bluetooth Manager — менеджер устройств Bluetooth
  • Check for new hardware drivers — проверка новых версий проприетарных драйверов
  • Evolution Alarm Notifier — сигнализатор прихода почты в Evolution
  • Print Queue Applet — апплет очереди печати
  • Tracker — служба поиска и индексирования

7. Отключи автостарт ненужных приложений. Во время входа в систему происходит автозапуск большого количества различных приложений (в основном это апплеты). Не все они нужны, поэтому открой System ra Preferences p„ Applications startup и удали все, что считаешь ненужным (например, апплет bluetooth). Запуск оставшихся приложений можно немного оптимизировать с помощью следующего трюка: отредактируй строку запуска каждого из них так, чтобы она приняла примерно такой вид:

sh -c "sleep 10; exec bluetooth-applet"
sh -c "sleep 20; exec /usr/lib/evolution/2.28/evolution-alarm-notify"

Ускоряем запуск тяжеловесов

/.mozilla/firefox/ -name *.sqlite \
-exec sqlite3 <> VACUUM \;

Делать это необходимо регулярно (например, раз в неделю), так как базы постоянно растут и захламляются.

Читайте также: