memória

A Linux memória használatának optimalizálása

A Linux memória használatának optimalizálása
Ennek a sorozatnak az egyik részében közelebbről szemügyre vettük a Csere helyet, a második rész pedig a memória kezelésére szolgáló eszközökkel és parancsokkal foglalkozott. Most különböző paramétereket és stratégiákat fogunk megvitatni a memória és általában annak optimalizálása érdekében. Ez magában foglalja a memória mennyiségét, a hozzáférés gyorsítását és a belső felhasználási stratégiát.

Memória mennyisége

Amint azt az első részben már említettük, a teljes memóriát virtuális memóriának hívják, és fizikai memóriából és cseretérből egyaránt áll. A fizikai memória rendelkezésre állása függ a gépbe épített hardvertől, valamint attól, hogy a processzor ténylegesen mennyi memóriát tud megszólítani. Például a 32 bites operációs rendszerek csak 4G memóriával rendelkeznek (2 ^ 32 bites), míg a 64 bites operációs rendszerek elméletileg akár 16 EB (2 ^ 64bit) memóriát engednek meg.

Pontosabban: a korlátozás az alaplap magával a processzorral, az alaplap által támogatott memóriamodulokkal és az alaplap memóriahelyeihez csatlakoztatott speciális memóriamodulokkal. A rendszer rendelkezésre álló memóriájának maximalizálásának egyik módja a lehető legnagyobb méretű hasonló memóriamodulok használata. A második módszer a Swap memória használata, amint azt az első részben már kifejtettük.

Hozzáférés a memóriához

Ezután a memória hozzáférési sebességének javítását vesszük figyelembe. Eleinte a fizikai határt maga a memóriamodul adja meg. Nem mehet a hardver fizikai határai alá. Másodszor egy ramdisk, harmadszor pedig a zRAM használata felgyorsíthatja a memória elérését. Ezt a két technológiát részletesebben tárgyaljuk.

Ramdisk létrehozása

A ramdisk egy memóriablokk, amelyet az operációs rendszer fizikai eszközként kezel, az adatok tárolására - egy merevlemez, amelyet teljes egészében a memóriában tartanak. Ez az ideiglenes eszköz létezik, amint a rendszer elindul és engedélyezi a ramdisket, és a rendszer vagy letiltja a ramdiskot, vagy leáll. Ne feledje, hogy az ilyen ramdiskon tárolt adatok elvesznek a gép leállítása után.

Dinamikus ramdiskot hozhat létre a tmpfs fájlrendszeren és a ramfs fájlrendszeren keresztül. Mindkét technológia jelentősen eltér egymástól. Először is, a dinamikus azt jelenti, hogy a ramdisk memóriáját a felhasználása alapján osztják ki (mindkét módszerre igaz). Amíg nem tárol rá adatokat, a ramdisk mérete 0.

Dinamikus ramdisk létrehozása a tmpfs segítségével a következő:

# mkdir / media / ramdisk
# mount -t tmpfs none / media / ramdisk

Dinamikus ramdisk létrehozása ramfs-en keresztül a következő:

# mkdir / media / ramdisk
# mount -t ramfs ramfs / media / ramdisk

Másodszor, a tmpfs használatával, és hacsak nincs kifejezetten megadva, a ramdisk mérete a fizikai memória 50% -ára korlátozódik. Ezzel szemben a ramf-eken alapuló ramdisk nincs ilyen korlátozással.

Dinamikus ramdisk létrehozása tmpfs-en keresztül, a fizikai memória relatív 20% -ával:

# mkdir / media / ramdisk
# mount -t tmpfs -o size = 20% none / media / ramdisk

Dinamikus ramdisk létrehozása tmpfs-en keresztül, rögzített, 200 millió fizikai memóriával, a következő:

# mkdir / media / ramdisk
# mount -t tmpfs -o size = 200M none / media / ramdisk

Harmadszor, mindkét módszer más módon kezeli a cserét. Abban az esetben, ha a rendszer eléri a ramdisk memóriakorlátját a tmpfs alapján, a ramdisk adatait felcserélik. Ez sérti a gyors hozzáférés gondolatát. Másrészt az operációs rendszer prioritásként kezeli a ramdisk tartalmát és a kért memóriaoldalakat a ramfs alapján, ezt a memóriában tartja, és a fennmaradó memória oldalakat lemezre cseréli.

A fenti példákban használtuk / media / ramdisk csatlakozási pontként. A rendszeres adatok tekintetében a Linux fájlrendszer egyetlen része, amelyet ajánlott használni a ramdiskon / tmp. Ez a könyvtár csak ideiglenes adatokat tárol, amelyek nem maradnak fenn. A / tmp fájlrendszert tároló állandó ramdisk létrehozásához további bejegyzésre van szükség a fájlban / etc / fstab az alábbiak szerint (ramf-ek alapján):

ramfs / tmp ramfs alapértelmezett értéke 0 0

A következő rendszerindításkor a Linux rendszert automatikusan engedélyezi a ramdisk.

A zRAM használata

A zRAM azt jelenti, hogy a virtuális csere tömörítve van a RAM-ban, és egy tömörített blokk eszközt hoz létre közvetlenül a fizikai memóriában. A zRAM azonnal működésbe lép (használat), amint a rendszeren már nem állnak rendelkezésre fizikai memória oldalak. Ezután a Linux kernel megpróbálja az oldalakat tömörített adatokként tárolni a zRAM eszközön.

Jelenleg a Debian GNU / Linuxhoz nem áll rendelkezésre csomag, hanem az Ubuntu. A neve zram-config. Telepítse a csomagot, és állítsa be a zRAM eszközt egyszerűen a megfelelő systemd szolgáltatás elindításával az alábbiak szerint:

# systemctrl indítsa el a zram-config parancsot

Amint azt a swapon -s, az eszköz további Swap partícióként aktív. Automatikusan a memória 50% -át lefoglalják a zRAM számára (lásd 1. ábra). Jelenleg nincs mód a kiosztandó zRAM eltérő értékének megadására.

A tömörített cserepartícióval kapcsolatos további részletek megtekintéséhez használja a parancsot zramctl. A 2. ábra bemutatja az eszköz nevét, a tömörítési algoritmust (LZO), a cserepartíció méretét, a lemezen lévő adatok méretét és tömörített méretét, valamint a tömörítési folyamok számát (alapértelmezett érték: 1).

Felhasználási stratégia

Ezután a memóriahasználati stratégiára koncentrálunk. Néhány paraméter befolyásolja a memóriahasználat és az elosztás viselkedését. Ez magában foglalja a memóriaoldalak méretét is - 64 bites rendszereken 4M. Ezután a swappiness paraméter játszik szerepet. Amint az első részben már kifejtettük, ez a paraméter a futásidejű memória kicserélésének tulajdonított relatív súlyt szabályozza, szemben a memóriaoldalak eldobásával a rendszeroldal gyorsítótárából. Nem szabad megfeledkeznünk a gyorsítótárról és a memóriaoldalak igazításáról sem.

Használjon kevesebb memóriát igénylő programokat

Végül, de nem utolsósorban a memória használata magától a programtól függ. Legtöbbjük az alapértelmezett C könyvtárhoz (standard LibC) kapcsolódik. Fejlesztőként fontolja meg egy alternatív és sokkal kisebb C könyvtár használatát a bináris kód minimalizálása érdekében. Például léteznek dietlibc [1], uClibc [2] és musl lib C [3]. A musl lib C fejlesztői weboldala tartalmaz egy átfogó összehasonlítást [4] ezekről a könyvtárakról a lehető legkisebb statikus C program, a szolgáltatások összehasonlítása, valamint az építési környezetek és a támogatott hardverarchitektúrák szempontjából.

Felhasználóként előfordulhat, hogy nem kell lefordítania a programokat. Fontolja meg kisebb programok és különböző keretek keresését, amelyek kevesebb erőforrást igényelnek. Példaként használhatja az XFCE asztali környezetet a KDE vagy a GNOME helyett.

Következtetés

Van jó néhány lehetőség a memória használatának jobb megváltoztatására. Ez a csere-től a zRAM-alapú tömörítésig terjed, valamint egy ramdisk beállítására vagy egy másik keretrendszer kiválasztására.

Linkek és hivatkozások

Linux memóriakezelő sorozat

Köszönetnyilvánítás

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

SuperTuxKart Linuxhoz
A SuperTuxKart egy nagyszerű cím, amelynek célja, hogy ingyenesen hozza el a Mario Kart élményét Linux rendszerén. Elég kihívást jelentő és szórakozta...
Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...
0 A.D. Bemutató
A sok stratégiai játék közül 0 A.D. átfogó címként és nagyon mély, taktikus játékként képes kiemelkednie annak ellenére, hogy nyílt forráskódú. A játé...