Ускоряем любой дистрибутив GNU/Linux: три простых шага

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

ШАГ 1. Устанавливаем и активируем prelink

В GNU/Linux подавляющее большинство приложений не «таскает» с собой весь нужный для своей работы код, а использует так называемые разделяемые библиотеки, установленные в системе, к которым обращается по мере надобности. Такие запросы занимают некоторое время — иногда небольшое, а иногда и значительное, из-за чего программа может работать медленнее.


Статические библиотеки vs. разделяемые библиотеки

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

Устанавливается prelink из страндартных репозиториев практически любого дистрибутива стандартным же менеджером пакетов. Например, для Debian GNU/Linux, Ubuntu и ее форков в терминале нужно выполнить:

sudo apt install prelink

В семействе Fedora/Red Hat печатаем следующее:

sudo yum install prelink

По некоторым данным, для Arch-подобных дистрибутивов prelink может быть вредна и даже вызывать крах системы, поэтому в репозиториях большей части форков Arch Linux ее просто нет.

После того, как prelink установится, следует немного поправить один из конфигурационных файлов. В любом текстовом редакторе открываем файл /etc/default/prelink от администратора и находим строку «PRELINKING=unknown», где меняем слово «unknown» на «yes». Не забываем сохранять изменения! 😉


Искомая строка выделена

Теперь программа готова к работе! Открываем терминал и выполняем:

sudo prelink -avfmR

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

sudo prelink -ua

ШАГ 2. Устанавливаем и активируем preload

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

Так же, как и prelink, preload доступен в репозиториях большинства дистрибутивов. Для Debian GNU/Linux и его семейки выполняем:

sudo apt install preload

Для Arch Linux и его родственников команда будет выглядеть так:

sudo pacman -S preload

В Fedora/Red Hat и CentOS нужно запустить:

sudo yum install preload

Если в репозиториях вашего дистрибутива preload по какой-то причине не оказалось, смело качаем его со страницы на «SOURCEFORGE».

Стандартные настройки утилиты подойдут большинству пользователей. Если же хотите немного изучить конфиги — ищите в /etc/preload.conf. 😎


Конфигурация preload

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

sudo reboot

Обратите внимание! Команда reboot в большинстве дистрибутивов не требует наличия прав суперпользователя, и, соответсвенно, утилиту sudo можно не использовать. Однако в Debian GNU/Linux выключение и перезагрузка машины все-таки относятся к административным действиям, посему без sudo не обойтись.

После перезагрузки создадим файл preload.state по адресу /var/lib/preload. Возможно, он уже существует, поэтому для уверенности воспользуемся командой touch:

sudo touch /var/lib/preload/preload.state

Если файла по указаному адресу не было, он будет создан. А если был, то команда touch как бы «дотронется» до него, обновив дату и время последнего взаимодействия в свойствах файла.

Далее меняем права доступа к этому файлу:

sudo chmod 600 /var/lib/preload/preload.state

И перезапустим сам preload:

sudo /etc/init.d/preload restart

Работу программы можно проверить в любой момент, посмотрев в файл /var/lib/preload/preload.state. Если файл не пуст, preload прекрасно выполняет свои обязанности. 🙂


У нас файл не только не пуст, но и просто огромен! smile

ШАГ 3. Оптимизируем использование области резервной памяти (swap)

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

Как правило, размер области swap равняется объему оперативной памяти, но актуально это лишь для машин с 2-8 Гб ОЗУ. Если же у вас 16 и более гигабайт оперативки, вряд ли вам захочется отрезать от свободного места так много, и вы наверняка ограничитесь созданием swap размером 2-4 Гб. А если же у вас меньше, чем 1 Гб оперативной памяти, то… мне вас очень жаль: никакой swap уже не поможет. 😥


На моем жестком диске область резервной памяти Linux выглядит так

По умолчанию GNU/Linux начинает обращаться к swap, если оперативка заполнена на 40% и больше. Скорость считывания данных с жесткого диска — а именно там находится область резервной памяти — значительно ниже, чем скорость доступа к ОЗУ, и поэтому система начинает подтормаживать. А забить меньше чем на половину те же 4 Гб оперативной памяти очень просто — достаточно запустить любой современный браузер.


Команда free поможет проверить, лезла ли система в swap

Давайте изменим процентный показатель, являющийся «триггером» для обращения к swap.

Для начала проверим, действительно ли наш GNU/Linux задействует резервную память, когда оперативная заполняется именно на 40 процентов:

cat /proc/sys/vm/swappiness

Если система выводит «60» — значит, так и есть (100-40=60).

Затем мы вольны подправить цифру. Я, как правило, меняю значение так, чтобы GNU/Linux обращался к swap только после захламления 80 и более процентов оперативной памяти:

sudo sysctl -w vm.swappiness=20

Теперь можем еще раз проверить значение в /proc/sys/vm/swapiness, если желаем убедиться в эффективности предыдущей команды:

cat /proc/sys/vm/swappiness

Терминал показывает «20» — получается, что swap активизируется после заполнения 80% ОЗУ (100-80=20).


Окно терминала после всех манипуляций

Однако советовать что-либо касательно оптимального значения в вашем конкретном случае я не могу. Советую лишь оэкспериментировать с разными цифрами, чтобы достичь идеального баланса. Обычно они находятся в диапазоне от 10 до 30.

Выводы

Три простых шага, описанных выше, помогут немного оптимизировать ваш дистрибутив GNU/Linux. Как видите, я специально подобрал те инструменты, что доступны не только для Debian или Ubuntu, но и для большинства других дистрибутивов.

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

P.S. Успейте принять участие в конкурсе!

Автор: root
Изображения: из открытых источников

Автор публикации

не в сети 18 часов

root

0
Адміністратор сайту «LinuxTheBest»
Комментарии: 203Публикации: 35Регистрация: 11-01-2019
Если Вам понравилась статья, то поделитесь ею в соц.сетях:

45
Отправить ответ

 
avatar
 
smilegrinwinkmrgreenneutraltwistedarrowshockunamusedcooleviloopsrazzrollcryeeklolmadsadexclamationquestionideahmmbegwhewchucklesillyenvyshutmouth
Фото и картинки
 
 
 
Другие файлы
 
 
 
16 Темы
29 Ответов
14 Комментаторов
 
Самый обсуждаемый
Горячие комментарии
18 Авторы комментариев
V50yuriy_chijikovuserrootrezerv Последние авторы комментариев
eloo
Гость
eloo

prelink в arch linux ставить нельзя. будет крах системы.

V50
Участник

Устонавливал и немножко пользовался дистрибутивом VoidLinux…Так там по дефолту в /etc/fstab есть такая интересная запись:tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0 ….—-ну не небось что,но в комплексе
при оптимизации….у меня на сис.мониторе было ОП–115МБ стало ОП–105…после добавления этой строчки:))

user
Гость
user

Ерунда это все. Давным-давно уже выяснили, что профита с этих утилит почти нет, а на ССД они еще и вредить будут. Матчасть бы сперва читали что ли.

yuriy_chijikov
Участник

Абсолютная правда! ))))

V50
Участник

В Arch32 нет и prelink и preload ,но судя по коментарям это только к лучшему…

rezerv
Участник

Доброго дня. Прописал значение “20” в /proc/sys/vm/swapiness, перезагрузился и там опять оказалось “60”. Т.е. значение “20” не сохраняется. Пробовал на LUbuntu 18.04, Bodhi 5 (Ubuntu 18.04), на Rpi3. Это как-то можно исправить?

soup69
Участник

Система після всього цього працює(невпала)) ….це дуже добре.Приріст є але, такий не значний …шо cry

Sovremenik
Гость
Sovremenik

Prelink седой совет. Юзал его на сюзе лет 10 назад и требуется каждый раз его запускать при добавлении и обновлении софта . Preload сейчас во всех дистрах и так работает

sergey.tarabanovskiy
Участник

Вже зробив. Подивлюсь, як воно буде працювати. От якби ще так детально хтось пояснив, як запустити Deluge в Ubuntu 18.04, бо щось не спрацьовує після установки. Вибачаюсь, що не зовсім по темі.

yuriy.chijikov
Участник

Заметил недавно, что Deluge стало “выбрасывать коней” в последнее время. Не стал разбираться. Ставьте qBittorrent – настроек больше, версия самая новая, а зависимостей – даже меньше. Deluge же уже давно не обновляется – это болото.
Самая новая версия qBittorrent:
sudo add-apt-repository ppa:qbittorrent-team/qbittorrent-stable

sudo apt-get update && sudo apt-get install qbittorrent
Удачи!

sergey.tarabanovskiy
Участник

Дякую, попробую вашу пораду.

yuriy.chijikov
Участник

Это очень “скользкая” тема и, как показывает практика – в “оптимизацию” таким путем лучше не лезть – можно заработать геморрой на пятую точку! К тому же, во многих дистрибутивах много, что уже оптимизировано “по дефолту”. Эта тема была популярна лет 10 назад. Считаю, что в наше время – ээто не актуально и, даже вредно! Сейчас, если кому надо “оптимизировать”. лучшее средство – команды в терминале (могу написать статью) или выложить… Читать далее »

GrigS
Участник

Интересно было бы почитать подробней о Вашем опыте в практике. LinuxMint 18.3 не такой уж и древний, однако “по дефолту”… эти утилиты в Менеджере программ дистрибутива. Или нельзя всему доверять, что они там предлагают? Ускорения я пока не заметил от утилит. Единственное, что улучшило настроение – swappiness=10 . При обращении к SWAP начинались тормоза.

kuchera066
Участник

После swappiness тоже нужна перезагрузка чтобы заработали изменения, и в fedora лучше использовать родной “пакетник” dnf, новички могут запутаться.

V50
Участник

Странно но розработчики моего дистрибутива уже оптимизировали SWAP —swappiness=10 по максимуму,а я еще пересобрал ядро -10% оперативки — опять-же тема для статьи по компиляции ядра…

GrigS
Участник

Стаття схожа на сторінки з майбутнього підручника, абетки по GNU Linux. Раніше все це зустрічав на просторах Інтернету, але ця стаття дає більш для розуміння, що ж ми робимо. Дякую.
Виявилося, що я забув після переустановлення поставити ці утиліти.
Подивимось далі що буде.
Ще таке питання: Чому, відразу немає всього цього в тому ж LinuxMint, наприклад?

Jack Frost
Участник

Спасибо за swap. У меня слабая машина (всего 2 гб озу). И как только открываеш пару вкладок в браузере – swap начинает заполнятся. Теперь он будет использоватья только при заполнении ОЗУ

Homer
Гость
Homer

Z-ram используйте

Uran78
Участник

sudo pacman -S prelink в manjaro не работает, нет такого файла.

sergey.siryy
Участник

не используйте prelink в манджаро, ниже мой комментарий детально описывает, что произойдет!

sergey.siryy
Участник

Выполнил sudo prelink -avfmR получил ошибку сегментирования на запуск любых пакетов https://pastebin.com/XhuwuXyT
sudo prelink -ua ничего не откатывает.

Aleksandr.Tereshchuk
Участник

cool

Авторизация
*
*
 
Регистрация
*
*
*
*
 
Генерация пароля