Linux kernel

Linux kernelmemória-kezelő csere helyet

Linux kernelmemória-kezelő csere helyet

Első rész. A Szóköz cseréje

A megfelelő működés érdekében a számítógép a megfelelő memória mennyiségétől függ. Egyszerűen azt mondva, hogy soha nem lehet elég. Minél több fizikai memória van telepítve, annál költségesebb. Az eredmény okos kompromisszum a memória cellákhoz való hozzáférés költségei és sebessége között.

A kompromisszum elérése érdekében a UNIX / Linux rendszerek kétféle memóriát kombinálnak - fizikai memóriát (RAM) és helyet cserélnek. Összességében ezt hívják egy számítástechnikai rendszer virtuális memóriájának. A fizikai memória meglehetősen drága, de gyors és nanoszekundumon belül elérhető. Ezzel szemben a csere memória meglehetősen olcsó, de lassú és milliszekundumon belül elérhető.

Néhány oka van annak, hogy a csere memória hasznos. Először is, néha az egyes folyamatoknak több memóriára van szükségük, mint amennyit a rendszer fizikailag birtokol, és többet tudnak biztosítani az azt igénylő folyamatok számára. Ennek eredményeként a fizikai memóriában tárolt összes adat nem tárolható tovább ott. Most a cserefelület jön szóba, és a memóriaoldalak egy része átkerül a cserefelületbe a fizikai memória felszabadítása érdekében.

Másodszor, nem minden adatra van szükség a memóriában egyszerre. Éppen ezért a kevésbé használt memóriaoldalak a cserehelyen vannak parkolva, hogy a lehető legtöbb szabad fizikai memória álljon rendelkezésre. Ezt a módszert a legkevésbé használt oldalcsere-algoritmusnak (LRU) nevezik [1].

A csere típusai

A cserehely két változatban létezik. Az 1. verzió egy különálló lemezpartíció, az úgynevezett swappartíció. Az adott partíción nincsenek fájlok tárolva, de a memória információi (dumpok). Egyszerűen a 2. verzió a lemezen található fájl, amely a merevlemez fájlrendszerében található. Az 1. verzió nagyon gyakori a UNIX / Linux, a BSD és az OS X rendszerekben, míg a 2. verzió a Microsoft Windows rendszert futtató rendszereken létezik. A 2. verzió UNIX / Linux rendszereken is engedélyezhető (lásd alább).

Annak megtekintéséhez, hogy melyik cserehely aktív az UNIX / Linux rendszeren, futtassa a következő parancsot egy terminálon:

$ / sbin / swapon -s
Fájlnév típusa Méret Elsőbbség
/ dev / dm-3 partíció 16150524 316484 -1
$

Alternatív megoldásként küldhet egy kérést a proc fájlrendszernek, és futtathatja a cat / proc / swaps parancsot

Ennek a Linux rendszernek van egy kb. 15 GB méretű swap partíciója, amelyben jelenleg több mint 300 milliót használnak. A Prioritás oszlop megmutatja, hogy melyik csere helyet használja először. Az alapértelmezett érték -1. Minél magasabb a prioritás értéke, annál korábban veszik figyelembe ezt a cserefelületet. Az -s opció a -summary rövid verziója. Ez az opció elavult, és ajánlott a -show opciót a következőképpen használni:

$ / sbin / swapon --show = Név, TÍPUS, MÉRET, HASZNÁLT, PRIO
NÉV TÍPUS MÉRET HASZNÁLT PRIO
/ dev / dm-3 partíció 15,4G 307,1M -1
$

A -show opció elfogadja az oszlopfejléceket képviselő értékek listáját. Egy adott kimeneti sorrend elérése érdekében válassza ki a kívánt oszlopfejléceket és azok sorrendjét.

Csere mérete

Általános szabály, hogy a cseretér nagysága kétszer akkora, mint a rendszer fizikai memóriája. Ezt tartsa szem előtt az általános célú telepítéseknél és az asztali gépeknél. Sokkal több fizikai memóriával rendelkező UNIX / Linux szerverek esetén csökkentheti a cseretér méretét a RAM 50% -ára. A hibernálni képes laptopoknak valamivel nagyobbaknak kell lenniük, mint a fizikai memória.

Telepítés

Cserepartíció esetén ajánlatos a lemezterület felosztása a lemez egy partícióra bontásának kezdetétől, vagy hagyni annyi fel nem használt lemezterületet, hogy később, végül. Általában a használandó lemezek konfigurálása során a beállítási rutin megkérdezi a cseretér nagyságáról. Például a Debian GNU / Linux rendszeren ez a következőképpen néz ki:

Amint fent említettük, mindaddig, amíg van hely új partíciókra a merevlemezen, létrehozhat és felvehet cserepartíciókat az fdisk és a swapon parancsok használatával.

Alternatív megoldásként a cserefelület később is engedélyezhető swap fájlként. A Linux támogatja ezt a módot, így létrehozhatja, előkészítheti és felcserélheti a cserepartícióhoz hasonló módon. Ennek a módnak az az előnye, hogy nem szükséges újraparticionálnia egy lemezt, hogy további csere helyet biztosítson.

Példaként létrehozunk egy / swapfile nevű fájlt, amelynek mérete 512M, és ezt további cserehelyként engedélyezzük. Először a dd parancs segítségével hozunk létre egy üres fájlt. Másodszor, az mkswap ezt a fájlt használja, hogy átalakítsa swap stílusra. Észreveheti, hogy a fájl tartalmát partícióként kezelik, és a megfelelő UUID-t hozzárendelik. Harmadszor, ezt a swapon segítségével engedélyezzük. Végül a swapon -show parancs két swap bejegyzést jelenít meg - egy partíciót és az újonnan létrehozott fájlt.

# dd, ha = / dev / nulla = / swapfile bs = 1024 szám = 524288
524288 + 0 adatkészlet
524288 + 0 adatkészlet
536870912 bájt (537 MB) másolva, 0,887744 s, 605 MB / s
# mkswap / swapfile
Az 1. swapspace verzió beállítása, méret = 524284 KiB
nincs címke, UUID = e47ab7fe-5efc-4175-b287-d0e83bc10f2e
# swapon / swapfile
# swapon --show = NÉV, TÍPUS, MÉRET, HASZNÁLT, PRIO
NÉV TÍPUS MÉRET HASZNÁLT PRIO
/ dev / dm-3 partíció 15,4G 288,9M -1
/ swapfile fájl 512M 0B -2
#

A cserefájl indításkor történő használatához adja meg rendszergazdaként a következő sort a fájlhoz / etc / fstab:

/ swapfile none swap sw 0 0

Cserehely letiltása

Legkevésbé, de nem utoljára, van egy parancs a cserefájl letiltására. A parancs meghívásra kerül csere. Ehhez egyetlen paraméterre van szükség, amely jelzi a csereeszköz letiltását. Ez a parancs letiltja a korábban aktivált cserefájlt:

# swapoff / swapfile

Is, csere tud dolgozni egy fájlrendszer UUID azonosítójával. Csinálni csere így járj el az opció használatával -U amelyet a megfelelő fájlrendszer UUID-je követ. Abban az esetben, ha az összes cserehelyet egyszerre kell letiltani, az opciót kell megadni -a (long option -all) elég praktikus. A teljes parancs az swapoff -a.

A csere ökoszisztéma hangolása

A Linux kernellel kezdve kiadja a 2-es verziót.6 új értéket vezettek be. Ezt a változó tárolja / proc / sys / vm / swappinessés ellenőrzi a futásidejű memória kicserélésének adott relatív súlyát, szemben a memóriaoldalak eldobásával a rendszeroldal gyorsítótárából [2]. Az alapértelmezett érték 60 (a szabad memória százaléka a csere aktiválása előtt). Minél alacsonyabb az érték, annál kevesebbet használ felcsere, és annál több memóriaoldalt tart a fizikai memória.

Az érték ideiglenes beállításához állítsa be az értéket a / proc fájlrendszerben az alábbiak szerint:

# echo 10> / proc / sys / vm / swappiness

Alternatív megoldásként használhatja a sysctl parancsot az alábbiak szerint:

# sysctl -w vm.swappiness = 10

Az érték végleges beállításához adja hozzá a következő sort a fájlhoz / etc / sysctl.konf:

vm.swappiness = 10

A csere még mindig naprakész?

Megkérdezheti, miért foglalkozunk ezzel a témával. A modern számítógépeknek elegendő fizikai memóriájuk van - miért kell ezzel törődnünk? Néhány oka annak, hogy ez a technológia többet ér, mint egy gondolat.

Ne feledje, hogy egy ideig ragaszkodik a gépéhez, de időnként frissítheti a rajta használt szoftvert. Jelenleg a hardver és a szoftver egyaránt megfelel egymásnak. A jövőben ez változhat, és több memóriára van szüksége, mint most. Hacsak nem frissít vagy új hardvert vásárol, a Swap partíció megspórolhat egy kis pénzt.

Lehet, hogy hallott egy olyan funkcióról, amelyet felfüggesztés lemezre vagy hibernált módnak neveznek [3]. A gép aludni fog. Ezt megelőzően valahol tárolnia kell a jelenlegi állapotát. Most a cseretér játszik szerepet, és tárolóként működik ezen adatok megőrzésére. Amint a gép legközelebb felébred, a teljes adatot beolvassa a Csere térből, betölti a memóriába, és folytathatja a munkát ott, ahol korábban leállt.

Ha a rendszernek csak egy állandó tárolóeszköze van, akkor el kell olvasnia és megírnia a fájlokat, miközben ugyanazon az eszközön cserél. Óriási javulást fog tapasztalni, ha van második eszköze, és el tudja különíteni a csereeszközt az ütköző fájlhozzáféréstől.

A cserefájlnak át kell adnia az adatokat a fájlrendszeren keresztül. Ez hozzáad egy réteg indirekciót, hogy látszódjon, hogy van egy összefüggő logikai címtér a kernel számára. Ez további memóriaterhelést és CPU-ciklust ad hozzá. A nyers swap partíció használatával érheti el a legjobb eredményt.

Következtetés

A Swap-tal kapcsolatos ismeretek ma is elengedhetetlenek. Ez a témakör a Linux Professional Institute 1. szintű tanúsítványának (LPIC 1) átadásához szükséges ismeretek része. A legtöbb vizsga egy vagy két kérdést tartalmaz erről a témáról.

A helycsere segít a Linux rendszernek (kernelnek) a memória gyors rendezésében, ha erre szükség van. Ahhoz, hogy nyitott legyél veled, nincs szükség feltétlenül cserélni a helyet, ha a rendszered rengeteg RAM-mal rendelkezik. Vészhelyzetek esetén ez segíti a rendszer túlélését. Ezért soha nem hagynám el a hagyományos beállítások útját a Szóköz nélkül.

A Swap és az SSD kombinációját ellentmondásos módon vitatják meg, mert az SSD-re írt lemezek száma meglehetősen korlátozott. Mind a Swap, mind az ideiglenes fájlok sok adat írására épülnek. Másrészről a modern SSD-k több mint elegendő kiegészítő területtel (7%) rendelkeznek az ágazati hibák kezeléséhez. A biztonság kedvéért: ha lehetséges, külön cseréljen egy hagyományos merevlemezre - ne használjon ramdisket, sem SSD-t, legalábbis a csere érdekében [4]. Linux rendszere meg fogja köszönni ezt a döntést.

Annak elkerülése érdekében, hogy helyet cseréljen az SSD-re, használhatja a ZRAM-ot [5,6]. Ez a RAM-ban tömörített virtuális csere, más néven zSwap. Ez a technológia lehetővé teszi a memóriában egy tömörített blokkeszközt. Amint nincs több memória, a memóriaoldalak átkerülnek erre a blokkoló eszközre. Ez kevesebb cserehasználatot eredményez, és hozzájárul a merevlemez élettartamának meghosszabbításához is.

Linkek és hivatkozások

Linux memóriakezelő sorozat

Köszönetnyilvánítás

A szerző köszönetet mond Mandy Neumeyer és Gerold Rupprecht támogatásáért a cikk elkészítése során.

A League of Legends telepítése az Ubuntu 14-re.04
Ha rajongsz a League of Legendsért, akkor ez egy lehetőség arra, hogy teszteld a League of Legends játékot. Ne feledje, hogy a LOL a PlayOnLinux rends...
Telepítse a legújabb OpenRA stratégiai játékot az Ubuntu Linux rendszerre
Az OpenRA egy ingyenes / ingyenes valós idejű stratégiai játékmotor, amely újjáépíti a korai Westwood játékokat, mint például a klasszikus Command & C...
Telepítse a legújabb Dolphin Emulator for Gamecube & Wii szoftvert Linuxra
A Dolphin Emulator segítségével a kiválasztott Gamecube & Wii játékokat játszhatja Linux személyi számítógépeken (PC). Mivel a Dolphin Emulator szaba...