Linux ядро

Разбиране на vm.разменност

Разбиране на vm.разменност
Ядрото на Linux е доста сложен софтуер с дълъг списък от компоненти като модули, интерфейси и конфигурационни файлове [1]. Тези компоненти могат да бъдат конфигурирани със специфични стойности, за да се постигне желано поведение или режим на работа на компонента [2,3,4]. Впоследствие тази настройка влияе пряко както върху поведението, така и върху ефективността на вашата Linux система като цяло.

Текущите стойности на ядрото на Linux и неговите компоненти стават достъпни чрез специален интерфейс - директорията / proc [5]. Това е виртуална файлова система, в която отделните файлове се пълнят със стойности в реално време. Стойностите представляват действителното състояние на ядрото на Linux. Можете да получите достъп до отделните файлове в директорията / proc, като използвате командата cat, както следва:

$ cat / proc / sys / net / core / somaxconn
128
$

Един от тези параметри на ядрото се нарича vm.разменност. Той „контролира относителното тегло, придадено на размяната от паметта по време на работа, за разлика от изпускането на страници с памет от системния кеш на страници“ [6]. Започвайки с издания на ядрото на Linux 2.6 тази стойност беше въведена. Съхранява се във файла / proc / sys / vm / swappiness .

Използване на суап

Използването на суап [6] беше съществена част от използването на по-малки UNIX машини в началото на 90-те години. Все още е полезно (като наличието на резервна гума във вашия автомобил), когато неприятните изтичания на памет пречат на вашата работа. Машината ще се забави, но в повечето случаи все още ще може да се използва за изпълнение на възложената задача. Разработчиците на безплатен софтуер правят големи стъпки за намаляване и премахване на програмни грешки, така че преди да промените параметрите на ядрото, помислете първо за актуализиране до по-нова версия на вашето приложение и свързаните библиотеки.

Ако изпълнявате множество задачи, неактивните задачи ще бъдат заменени на диск, като по-добре ще използвате паметта с активните си задачи. Редактирането на видео и други приложения, отнемащи голяма памет, често имат препоръчани количества памет и дисково пространство. Ако имате по-стара машина, която не може да има надстройка на паметта, тогава предоставянето на повече суап може да е добро временно решение за вас (вижте [6] как да научите повече за това).

Размяната може да се случи на отделен дял или на суап файл. Разделът е по-бърз и предпочитан от много приложения за бази данни. Файловият подход е по-гъвкав (вижте пакета dphys-swapfile в Debian GNU / Linux [7]). Наличието на повече от едно физическо устройство за размяна позволява на ядрото на Linux да избере устройството, което е най-бързо достъпно (по-ниска латентност).

vm.разменност

Стойността по подразбиране на vm.swappiness е 60 и представлява процентът на свободната памет преди активиране на суап. Колкото по-ниска е стойността, толкова по-малко суап се използва и толкова повече страници памет се съхраняват във физическа памет.

Стойността 60 е компромис, който работи добре за съвременните настолни системи. Вместо това се препоръчва по-малка стойност за сървърна система. Както посочва ръководството за настройка на производителността на Red Hat [8], се препоръчва по-малка стойност на разменност за натоварвания на базата данни. Например, за базите данни на Oracle, Red Hat препоръчва стойност на разместване 10. За разлика от това, за базите данни на MariaDB се препоръчва да се зададе размененост на стойност 1 [9].

Промяната на стойността пряко влияе върху производителността на системата Linux. Тези стойности са дефинирани:

* 0: суапът е деактивиран
* 1: минимално количество суап, без да го деактивирате изцяло
* 10: препоръчителна стойност за подобряване на производителността, когато в системата съществува достатъчно памет
* 100: агресивно размяна

Както е показано по-горе, командата cat помага да се прочете стойността. Също така командата sysctl ви дава същия резултат:

# sysctl vm.разменност
vm.разменност = 60
#

Имайте предвид, че командата sysctl е достъпна само за администраторски потребител. За да зададете временно стойността, задайте стойността във файловата система / proc, както следва:

# ехо 10> / proc / sys / vm / swappiness

Като алтернатива можете да използвате командата sysctl, както следва:

# sysctl -w vm.разменност = 10

За да зададете стойността за постоянно, отворете файла / etc / sysctl.conf като административен потребител и добавете следния ред:

vm.разменност = 10

Заключение

Все повече потребители на Linux работят с виртуални машини. Всеки от тях има свое собствено ядро ​​в допълнение към хипервизора, който всъщност контролира хардуера. Виртуалните машини имат виртуални дискове, създадени за тях, така че промяната на настройката във виртуалната машина ще има неопределени резултати. Експериментирайте първо с промяна на стойностите на ядрото на хипервизора, тъй като то всъщност контролира хардуера във вашата машина.

За по-стари машини, които вече не могат да бъдат надстроени (вече имат максимално поддържана памет), можете да помислите за поставяне на малък твърд диск в машината, за да го използвате като допълнително устройство за смяна. Това очевидно ще се превърне в консуматив, тъй като клетките на паметта се провалят от много записи, но може да удължи живота на машината за една година или повече за много ниска цена. По-ниската латентност и бързото четене ще осигурят много по-добра производителност от смяната на обикновен диск, като ще дадат междинни резултати на RAM. Това трябва да ви позволи да използвате малко по-ниска vm.разменни стойности за оптимално представяне. Ще трябва да експериментирате. SSD устройствата се променят бързо.

Ако имате повече от едно устройство за размяна, помислете дали да не го направите RAID устройство, за да прехвърляте данни през наличните устройства.

Можете да правите промени в заместването, без да рестартирате машината, което е голямо предимство пред други операционни системи.

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

Последна бележка: Ще добавяте товар към вашите суап устройства. Вие ще искате да наблюдавате температурите им. Прегрятата система ще намали честотата на процесора и ще се забави.

Благодарности

Авторът би искал да изкаже специални благодарности на Gerold Rupprecht и Zoleka Hatitongwe за техните критични забележки и коментари при подготовката на тази статия.

Връзки и справки

* [1] Урок за ядро ​​на Linux за начинаещи, https: // linuxhint.com / linux-kernel-tutorial-начинаещи /

* [2] Дерек Молой: Писане на модул на ядрото на Linux - Част 1: Въведение, http: // derekmolloy.т.е. / писане-на-ядро-модул-част-1-въвеждане /

* [3] Дерек Молой: Писане на модул на ядрото на Linux - Част 2: Устройство с символи, http: // derekmolloy.т.е. / писане-linux-kernel-module-part-2-a-character-device /

* [4] Дерек Молой: Писане на модул на ядрото на Linux - Част 3: Бутони и светодиоди, http: // derekmolloy.т.е. / ядро-gpio-програмиране-бутони и светодиоди /

* [5] Франк Хофман: Команди за управление на паметта на Linux, https: // linuxhint.com / команди за управление-linux-памет /

* [6] Франк Хофман: Управление на паметта на ядрото на Linux: Размяна на пространство, https: // linuxhint.com / linux-memory-management-swap-space /

* [7] dphys-swapfile пакет за Debian GNU / Linux, https: // пакети.debian.org / stretch / dphys-swapfile

* [8] Ръководство за настройка на производителността на Red Hat, https: // access.червена шапка.com / documentation / en-us / red_hat_enterprise_linux / 6 / html / performance_tuning_guide / s-memory-tunables

* [9] Конфигуриране на MariaDB, https: // mariadb.com / kb / en / library / configuring-swappiness /

Как да покажете OSD наслагване в приложения на цял екран за Linux и игри
Играта на цял екран или използване на приложения в режим на цял екран без разсейване може да ви откъсне от съответната системна информация, видима в п...
Топ 5 карти за залавяне на игри
Всички сме виждали и обичаме поточни игри в YouTube. PewDiePie, Jakesepticye и Markiplier са само някои от най-добрите геймъри, които са спечелили мил...
Как да разработите игра на Linux
Преди десетилетие не много потребители на Linux биха прогнозирали, че любимата им операционна система един ден ще бъде популярна игрална платформа за ...