Atminties kiekis
Kaip jau buvo aptarta pirmojoje dalyje, visa atmintis vadinama virtualia atmintimi ir susideda iš fizinės atminties ir apsikeitimo vietos. Fizinės atminties prieinamumas priklauso nuo aparatūros, kuri įmontuota mašinoje, taip pat nuo to, kiek atminties procesorius gali iš tikrųjų adresuoti. Pavyzdžiui, 32 bitų operacinėse sistemose yra tik 4G atminties riba (2 ^ 32 bitų), o 64 bitų pagrindu veikiančios operacinės sistemos teoriškai leidžia iki 16 EB (2 ^ 64 bitų).
Tiksliau, apribojimas yra pagrindinė plokštė su pačiu procesoriumi, tos pagrindinės plokštės palaikomi atminties moduliai ir konkretūs atminties moduliai, prijungti prie pagrindinės plokštės atminties angų. Vienas iš būdų maksimaliai padidinti turimą sistemos atmintį yra naudoti panašius atminties modulius, kurių dydis yra kuo didesnis. Antrasis būdas yra naudoti apsikeitimo atmintį, kaip jau paaiškinta pirmojoje dalyje.
Prieiga prie atminties
Toliau atsižvelgiama į atminties prieigos greičio pagerinimą. Iš pradžių fizinę ribą suteikia pats atminties modulis. Negalite eiti žemiau fizinės aparatinės įrangos ribų. Antra, ramdiską, trečią - naudojimas „zRAM“ gali pagreitinti atminties prieigą. Mes išsamiau aptarsime šias dvi technologijas.
Kurti RAM diską
„Ramdisk“ yra atminties blokas, kurį operacinė sistema tvarko kaip fizinį įrenginį duomenims saugoti - kietasis diskas, kuris visiškai laikomas atmintyje. Šis laikinas įrenginys egzistuoja iškart, kai tik sistema paleidžia ir įgalina „ramdisk“, o sistema arba išjungia, arba išjungia. Atminkite, kad duomenys, kuriuos saugote tokiame ramdiske, prarandami išjungus įrenginį.
Dinaminį „ramdisk“ galite sukurti per „tmpfs“ failų sistemą ir per „ramfs“ failų sistemą. Abi technologijos labai skiriasi viena nuo kitos. Pirma, dinamiška reiškia, kad RAM disko atmintis paskirstoma atsižvelgiant į jos naudojimą (teisinga abiem būdais). Jei jame nesaugote duomenų, ramdisko dydis yra 0.
Dinaminį ramdiską per tmpfs galite sukurti taip:
# mkdir / media / ramdisk# mount -t tmpfs none / media / ramdisk
Dinaminį ramdiską per ramfs galite sukurti taip:
# mkdir / media / ramdisk# mount -t ramfs ramfs / media / ramdisk
Antra, naudojant tmpfs ir, jei nėra aiškiai nurodyta, ramdisko dydis ribojamas iki 50% fizinės atminties. Priešingai, ramdiskui, pagrįstam ramfs, tokio apribojimo nėra.
Dinaminio RAM disko sukūrimas naudojant tmpfs, kurio santykinis dydis yra 20% fizinės atminties, yra toks:
# mkdir / media / ramdisk# mount -t tmpfs -o size = 20% none / media / ramdisk
Dinaminio RAM disko sukūrimas naudojant tmpfs su fiksuoto dydžio 200M fizinės atminties yra toks:
# mkdir / media / ramdisk# mount -t tmpfs -o size = 200M none / media / ramdisk
Trečia, abu metodai keičia mainus kitaip. Jei sistema pasiekia atminties limitą, pagrįstą tmpfs, atminties limitas, duomenys iš ramdisko keičiami. Tai pažeidžia greitos prieigos idėją. Kita vertus, operacinė sistema teikia pirmenybę tiek ramdisko turiniui, tiek prašomiems atminties puslapiams, remiantis ramfais, juos laiko atmintyje ir likusius atminties puslapius keičia į diską.
Aukščiau pateiktuose pavyzdžiuose mes naudojome / media / ramdisk
kaip tvirtinimo taškas. Kalbant apie įprastus duomenis, vienintelė Linux failų sistemos dalis, kurią rekomenduojama naudoti ramdiske, yra / tmp
. Šiame kataloge saugomi tik laikini duomenys, kurie neišlieka. Norint sukurti nuolatinį RAM diską, kuriame saugoma / tmp failų sistema, reikia papildomo įrašo faile / etc / fstab
taip (remiantis ramfais):
Kitą kartą paleidus „Linux“ sistemą, ramdiskas bus įjungtas automatiškai.
Naudojant zRAM
„zRAM“ reiškia „Virtual Swap“, suspaustą RAM, ir sukuria suspaustą blokinį įrenginį tiesiai į fizinę atmintį. „zRAM“ pradeda veikti (naudoti), kai tik sistemoje nebėra fizinės atminties puslapių. Tada „Linux“ branduolys bando išsaugoti puslapius kaip suglaudintus duomenis „zRAM“ įrenginyje.
Šiuo metu nėra Debian GNU / Linux paketo, bet tik „Ubuntu“. Jis pavadintas „zram-config“. Įdiekite paketą ir nustatykite „zRAM“ įrenginį paprasčiausiai paleisdami atitinkamą „systemd“ paslaugą taip:
# systemctrl pradėti „zram-config“Kaip duoda išvestis swapon -s,
prietaisas yra aktyvus kaip papildomas „Swap“ skaidinys. Automatiškai zRAM priskiriama 50% atminties (žr. 1 pav.). Šiuo metu nėra galimybės nurodyti kitokios skiriamos zRAM vertės.
Norėdami pamatyti daugiau informacijos apie suglaudintą apsikeitimo skaidinį, naudokite komandą zramctl
. 2 paveiksle parodytas įrenginio pavadinimas, glaudinimo algoritmas (LZO), apsikeitimo skaidinio dydis, diske esančių duomenų dydis ir suglaudintas dydis, taip pat suspaudimo srautų skaičius (numatytoji vertė: 1).
Naudojimo strategija
Toliau mes sutelksime dėmesį į atminties naudojimo strategiją. Yra keli parametrai, turintys įtakos atminties naudojimo ir paskirstymo elgsenai. Tai apima atminties puslapių dydį - 64 bitų sistemose jis yra 4M. Tada vaidmuo tenka parametro „swappiness“. Kaip jau paaiškinta pirmojoje dalyje, šis parametras kontroliuoja santykinį svorį, skiriamą vykdymo laiko atminties keitimui, o ne atminties puslapių numetimui iš sistemos puslapių talpyklos. Taip pat neturėtume pamiršti ir talpyklos, ir atminties puslapių lygiavimo.
Naudokite programas, kurioms reikia mažiau atminties
Paskutinis, bet ne mažiau svarbus dalykas - atminties naudojimas priklauso nuo pačios programos. Dauguma jų susieti su numatytąja C biblioteka (standartine LibC). Kaip kūrėjas, norėdami sumažinti dvejetainį kodą, apsvarstykite galimybę naudoti alternatyvią ir daug mažesnę C biblioteką. Pavyzdžiui, yra dietlibc [1], uClibc [2] ir musl lib C [3]. Kūrėjo svetainėje „musl lib C“ pateikiamas išsamus šių bibliotekų palyginimas [4] pagal mažiausią įmanomą statinę C programą, funkcijų palyginimas, taip pat atitinkamos sukūrimo aplinkos ir palaikomos aparatinės įrangos architektūros.
Jums, kaip vartotojui, gali nereikėti kurti savo programų. Apsvarstykite galimybę ieškoti mažesnių programų ir skirtingų sistemų, reikalaujančių mažiau išteklių. Kaip pavyzdį galite naudoti XFCE darbalaukio aplinką, o ne KDE ar GNOME.
Išvada
Yra nemažai variantų, kaip pakeisti atminties naudojimą. Tai svyruoja nuo „Swap“ iki glaudinimo pagal „zRAM“, taip pat nustatant „ramdisk“ arba pasirinkus kitą sistemą.
Nuorodos ir nuorodos
- [1] dietlibc, https: // www.fefe.de / dietlibc /
- [2] uClibc, https: // uclibc.org /
- [3] musl lib C, http: // www.musl-libc.org /
- [4] C bibliotekų palyginimas, http: // www.etalabs.net / palyginti_libcs.HTML
„Linux“ atminties valdymo serija
- 1 dalis: „Linux“ branduolio atminties valdymas: keiskite erdvę
- 2 dalis. „Linux“ atminties valdymo komandos
- 3 dalis: „Linux“ atminties naudojimo optimizavimas
Padėkos
Autorius norėtų padėkoti Axelui Beckertui ir Geroldui Rupprechtui už paramą rengiant šį straipsnį.