Linux ядро

Разменено пространство за управление на паметта на ядрото на Linux

Разменено пространство за управление на паметта на ядрото на Linux

Част първа. Размененото пространство

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

За да постигнат този компромис, системите UNIX / Linux комбинират два вида памет - физическа памет (RAM) и суап пространство. Като цяло това се нарича виртуална памет на изчислителна система. Физическата памет е доста скъпа, но бърза и достъпна в рамките на наносекунди. За разлика от това, суап паметта е доста евтина, но бавна и достъпна в рамките на милисекунди.

Има няколко причини, поради които суап паметта е полезна. Първо, понякога отделните процеси се нуждаят от повече памет, отколкото системата притежава физически, и могат да предоставят повече на процесите, които я изискват. В резултат на това всички данни, които се съхраняват във физическата памет, не могат да се съхраняват там повече. Сега пространството за суап влиза в игра и избрани страници с памет се прехвърлят в пространството за суап, за да освободят физическата памет.

Второ, не всички данни са необходими в паметта едновременно. Ето защо по-малко използваните страници с памет се паркират на суап пространство, за да има възможно най-много свободна физическа памет. Този метод е наречен алгоритъм за най-малко наскоро използвана страница (LRU) [1].

Видове суап

Суап пространството съществува в два варианта. Версия 1 е отделен дисков дял, който е така нареченият суап дял. В този дял не се съхраняват файлове, но информация за паметта (дъмп). Просто версия 2 е файл на диск, който се намира във файловата система на вашия твърд диск. Версия 1 е много разпространена в UNIX / Linux системи, BSD и OS X, докато версия 2 съществува в системи, работещи с Microsoft Windows. Версия 2 може да бъде активирана и на UNIX / Linux системи (вижте по-долу).

За да видите кое пространство за суап е активно във вашата UNIX / Linux система, изпълнете следната команда в терминал:

$ / sbin / swapon -s
Тип на файла Тип Размер Използван Приоритет
/ dev / dm-3 дял 16150524 316484 -1
$

Като алтернатива можете да изпратите заявка до файловата система proc и да изпълните командата cat / proc / swaps

Тази Linux система има суап дял с размер около 15 GB, в който в момента се използват над 300M. Колоната Приоритет показва кое място за суап да се използва първо. Стойността по подразбиране е -1. Колкото по-висока е приоритетната стойност, толкова по-рано се взема предвид това място за суап. Опцията -s е кратката версия на-резюме. Тази опция е оттеглена и се препоръчва вместо нея да се използва опцията -show както следва:

$ / sbin / swapon --show = ИМЕ, ТИП, РАЗМЕР, ИЗПОЛЗВАН, ПРИО
ИМЕ ТИП РАЗМЕР ИЗПОЛЗВАНО ПРИО
/ dev / dm-3 дял 15,4G 307,1M -1
$

Опцията -show приема списък със стойности, които представляват заглавките на колоните. За да постигнете конкретен ред на изход, изберете желаните заглавки на колони и тяхната последователност.

Суап размер

Като общо правило размерът на суап пространството се препоръчва да бъде два пъти повече, отколкото системата има физическа памет. Имайте предвид това за настройки с общо предназначение и настолни машини. За UNIX / Linux сървъри с много повече физическа памет можете да намалите размера на суап пространството до 50% от RAM. Лаптопите, които могат да хибернират, трябва да са малко по-големи от физическата памет.

Инсталация

За суап дял се препоръчва да се мисли за суап пространство още в началото на разделянето на диска на единични дялове или да се остави достатъчно неизползвано дисково пространство, за да се използва по-късно, в крайна сметка. Обикновено по време на конфигурирането на дисковете, които ще се използват, процедурата за настройка ви пита за размера на пространството за размяна. Като пример, на Debian GNU / Linux това изглежда както следва:

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

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

Като пример създаваме файл с име / swapfile с размер 512M и го активираме като допълнително пространство за суап. Първо, с помощта на командата dd създаваме празен файл. Второ, mkswap използва този файл, за да го трансформира в стил суап. Може да забележите, че съдържанието на файла се третира като дял и се присвоява съответния UUID. Трето, ние активираме това, използвайки супон. И накрая, командата swapon -show показва два суап записа - дял и новосъздадения файл.

# dd, ако = / dev / нула на = / swapfile bs = 1024 count = 524288
524288 + 0 набора от данни в
524288 + 0 набора от данни
536870912 байта (537 MB) копирани, 0,887744 s, 605 MB / s
# mkswap / swapfile
Настройване на суап пространство, версия 1, размер = 524284 KiB
без етикет, UUID = e47ab7fe-5efc-4175-b287-d0e83bc10f2e
# swapon / swapfile
# swapon --show = ИМЕ, ТИП, РАЗМЕР, ИЗПОЛЗВАН, PRIO
ИМЕ ТИП РАЗМЕР ИЗПОЛЗВАНО ПРИО
/ dev / dm-3 дял 15,4G 288,9M -1
/ файл за размяна на файлове 512M 0B -2
#

За да използвате този суап файл по време на зареждане, добавете като администратор следния ред към файла / и т.н. / fstab:

/ swapfile няма swap sw 0 0

Деактивиране на място за суап

Най-малкото, но не на последно място, има отново една команда за деактивиране на суап файла. Извиква се командата замяна. Той изисква един параметър, който показва, че суап устройството трябва да бъде деактивирано. Тази команда деактивира предварително активирания файл за суап:

# суап / суап файл

Също, замяна може да работи с UUID на файлова система. Да направиш замяна действайте по този начин, използвайте опцията -U последвано от UUID на съответната файлова система. В случай, че е необходимо да деактивирате всички места за суап едновременно опцията (long option -all) е доста удобен. Пълната команда е суап-а.

Настройка на суап екосистемата

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

За да зададете временно стойността, задайте стойността във файловата система / proc, както следва:

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

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

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

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

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

Суапът все още ли е актуален?

Може да попитате защо се занимаваме с тази тема. Съвременните компютри имат достатъчно физическа памет - така че защо трябва да се грижим за това? Има няколко причини, поради които тази технология струва повече от мисъл.

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

Може да сте чували за функция, наречена суспендиране на диск или режим на хибернация [3]. Вашата машина ще заспи. Преди да направи това, трябва да съхранява текущото си състояние някъде. Сега мястото за суап влиза в игра и действа като контейнер за съхраняване на тези данни. Веднага след като машината се събуди следващия път, когато всички данни се четат от пространството за замяна, зареждат се в паметта и можете да продължите да работите там, където сте спрели преди.

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

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

Заключение

Дори днес знанията относно суап са от съществено значение. Тази тема е част от знанията, необходими за преминаване на сертификат на Linux Professional Institute Level 1 (LPIC 1). Повечето изпити съдържат един или два въпроса по тази тема.

Размененото пространство помага на вашата Linux система (ядро) да организира бързо паметта, ако има нужда от нея. За да бъдете отворени с вас, суап пространството не е абсолютно необходимо, в случай че вашата система има тонове RAM. В случай на извънредна ситуация това помага на вашата система да оцелее. Ето защо никога не бих напуснал пътя на традиционната настройка без Swap пространство.

Комбинацията от Swap и SSD се обсъжда по спорен начин, тъй като броят на дисковите записи на SSD е доста ограничен. Размените и временните файлове са създадени за записване на много данни. От друга страна, модерните SSD дискове имат повече от достатъчно допълнително пространство (7%), за да се справят със секторни повреди. За да сте на сигурно място: ако е възможно, имайте отделен суап на конвенционален твърд диск - не използвайте ramdisk, нито SSD, поне за суап [4]. Вашата Linux система ще ви благодари за това решение.

За да избегнете поставянето на суап място на SSD, вместо това можете да използвате ZRAM [5,6]. Това е Виртуален суап, компресиран в RAM, наричан още zSwap. Тази технология позволява компресирано блоково устройство в паметта. Веднага след като няма повече памет, останалите страници с памет се прехвърлят към това блоково устройство. Това води до по-малко използване на суап и помага да удължите живота на вашия твърд диск.

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

Серия за управление на паметта на Linux

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

Авторът би искал да благодари на Mandy Neumeyer и Gerold Rupprecht за тяхната подкрепа при подготовката на тази статия.

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