С времето Linux става все по-тежък. Софтуерът за Linux дистрибуциите стана сложен и времето за зареждане на програмите се увеличава. Но има начин за оптимизация на процесите, чрез която системата започва да реагира по-бързо, а приложенията стартират веднага.

Тук ще разгледаме три съвсем лесни начина за ускоряване на всяка Linux дистрибуция. По-опитните потребители със сигурност познават тези методи, но тук те са събрани на едно място. Предлаганите техники дават възможност за получаване на значително ускоряване реакцията на операционната система, както и на общото бързодействие. Предложените методи оказват особено голямо влияние на по-старите машини, но и при съвременните компютри се забелязва неголям ръст на производителността.

Първа стъпка: инсталиране на prelink

Предварителното свързване е модификация на изпълнимия файл, в която наготово са включени резултатите от динамичното свързване на споделените библиотеки. Да се опитаме да изясним нещата.

Преди много години Linux приложенията бяха съвсем опростени и за тяхната работа бяха необходими само няколко динамично зареждани системни библиотеки. Това бяха a.out изпълнимите файлове, предлагащи пределна простота на програмирането и изпълнението.

При файловете a.out, предварително се знае на кой адрес ще бъдат заредени по отношение паметта на процеса и на кои адреси ще се намират подпрограмите, функциите, променливите и т.н. Този подход осигурява висока скорост, но създава проблеми – какво ще стане, ако две библиотеки бъдат заредени на един и същ адрес? Ето защо бе въведен ELF форматът за изпълнимите файлове. Вече не се налагаше изпълнимите файлове да избират адресите във виртуалната памет, където да се заредят и тази отговорност бе прехвърлена на линкера (свързващия редактор). При ELF, адресите на зареждане на приложенията, библиотеките, функциите и т.н, се изчисляват при стартирането на програмата.

ELF бе за Linux една огромна стъпка напред и стана възможно да се зареждат и стартират голям брой приложения, използващи едни и същи динамични библиотеки без да възникват каквито и да било проблеми. Но от гледна точка на производителността, това е провал. Динамичното свързване е бързо и при използването само на няколко споделени библиотеки, когато няма забавяне. Но ако се стартира тромаво приложение, използващо около и над 50 споделени библиотеки, забавянето става съществено и може да достигне няколко и дори десетки секунди.

Prelink модифицира изпълнимите файлове по такъв начин, че в тях предварително са включени резултатите от необходимите динамични свързвания. Тоест, предварително се знаят необходимите адреси в паметта и не се налага тяхното изчисляване при стартирането.

Възможността „prelink“ бе предложена от Джейкъб Джелинек още през 2004 година това се превърна в един от най-удачните методи за повишаване скоростта на стартиране на приложенията. Достига се 50% ускоряване, а при OpenOffice, KDE, Gnome, и повече.

Инсталирането на prelink, който е включен в стандартните хранилища, може да стане както от софтуерния мениджър, така и от командния ред.

Така например, за Debian GNU/Linux, Ubuntu и техните производни в терминала трябва да се въведе следното:

sudo apt install prelink

В Arch-подобните дистрибуции командата е:

sudo pacman -S prelink

А за фамилията Fedora/Red Hat трябва да се въведе следното:

sudo yum install prelink

След като prelink бъде инсталиран, е добре леко да се промени един от конфигурационните файлове. В произволен текстов редактор отваряме файла /etc/default/prelink с правата на администратор, намираме реда „PRELINKING=unknown“ и заменяме думата „unknown“ на „yes“. Записваме файла.

Сега програмата е готова за работа. В терминала въвеждаме следното:

sudo prelink -avfmR

Компютърът ще работи известно време, през което ще бъдат направени съответните връзки към необходимите библиотеки и приложенията ще започна да работят по-бързо.

Ако искате да отмените предварителното свързване, достатъчно е да въведете следното:

sudo prelink -ua

Важно:

  • prelink не може да обработва файловете от проекта wine и няма как да бъде ускорен софтуера за ОС Windows.
  • След инсталирането на нови приложения и/или библиотеки, добре е prelink да се изпълни още веднъж

Втора стъпка: Инсталираме и активираме preload

Това е демон, който работи във фонов режим. Програмата натрупва статистика за най-често стартираните програми и кешира използваните от тях библиотеки. Това до известна степен ускорява зареждането на приложенията.

Точно както prelink, така и preload е включена в стандартните хранилища и може да се инсталира чрез софтуерния мениджър:

За любителите на командния ред, командата за Debian GNU/Linux семейството е следната:

sudo apt install preload

За Arch Linux и неговите „роднини“:

sudo pacman -S preload

За Fedora/Red Hat и CentOS:

sudo yum install preload

Стандартните настройки са подходящи за почти всички. Но ако някой иска да вникне в тънкостите, може да разгледа файла /etc/preload.conf.

Да уточним, че демонът не започва работа веднага, а след като натрупа статистиката.

Друг важен момент е, че preload може съществено да увеличи скоростта на зареждане на приложенията, но само в случай, че има достатъчно RAM. Минимумът, при който preload започва да оказва влияние е 2 GB. Това е минимумът: при по-малко оперативна памет preload може само да попречи.

Трета стъпка: оптимизираме използването на swap паметта

Около използването на swap отдавна се водят горещи дискусии. Но това е най-директния начин за оптимизиране на производителността. Нека се абстрахираме от чуждите мнения и да приемем, че swap е необходим и да се надяваме, че не се използва като файл, а като дял.

Обикновено, размерът на swap областта е равен на капацитета на оперативната памет. Само че това е по-актуално за компютри с от 2 до 8 GB оперативна памет. Ако имате 16 GB или повече, едва ли ще искате да отрежете от капацитета на бързия си флаш диск толкова много дисково пространство и ще се ограничите с от 2 до 4 GB. А ако имате по-малко от 1 GB, никакъв swap няма да помогне.

По подразбиране, Linux започва да използва swap, когато оперативната памет се запълни до 40%. Но скоростта на работа на хард и дори флаш диска е много по-бавна от тази на оперативната памет, а именно там се намира swap пространството. Когато започне неговото използване, цялата система започва осезателно и дразнещо да се забавя. Ако имате 4 GB оперативна памет, то само стартирането на който и да е уеб браузър ще доведе до използването на swap, а това забавя системата.

За щастие, в Linux е съвсем лесно да се промени прага, при който започва използването на swap.

Нека първо проверим, какъв е прагът на задействане на swap паметта:

cat /proc/sys/vm/swappiness

Ако излезе съобщение „60“, това означава, че 40% са за RAM паметта и 60% за swap – тоест, прагът за включване на swap раздела е 40%.

Лесно можем да променим този праг. Един много добър компромис е swap разделът да се включи при 80 и дори повече процента използване на оперативната памет. Промяната на прага на 80% става с помощта на следната команда:

sudo sysctl -w vm.swappiness=20

Можем да се убедим, че всичко се е получило, като отново въведем предишната команда:

cat /proc/sys/vm/swappiness

Ако в терминала се вижда „20“ – всичко се е получило.

Не могат да се дадат конкретни съвети за прага на включване на swap пространството. Всичко зависи от конкретно изпълняваните програми и от самия компютър. Обикновено, идеалният баланс е в пределите от 10 до 30 процента.

 

Описаните дотук три съвсем лесни стъпки могат значително да ускорят която и да било GNU/Linux дистрибуция. Не бива да забравяме, че всяко подобно решение е въпрос на компромис. Всеки сам трябва да се увери, кои точно параметри ускоряват неговата система.

Важно уточнение: след рестартирането на компютърната система, настройките на прага на включване на swap файла се губят и се налага описаните по-горе команди да се въведат отново, преди да е стартирането дори и едно приложение. Очевидно е, въпросната команда е по-удобно да бъда изпълнена автоматично след стартирането на системата. Но това е тема за друг материал.