- „Linux“ naudoja visą turimą RAM talpykloms ir puslapių talpyklai, todėl mažas laisvos atminties kiekis nebūtinai reiškia, kad yra problema.
- „Swap“, „zram“ / „zswap“ ir tinkamo „vm.swappiness“ nustatymo derinys leidžia subalansuoti našumą ir stabilumą.
- „cgroup v2“, „systemd-oomd“ ir tokie įrankiai kaip „earlyroom“ arba „nohang“ suteikia tikslų atminties apkrovos ir OOM įvykių valdymą.
- Stebėjimas naudojant nemokamą, „vmstat“, „htop“, „sar“ arba „Glances“ yra labai svarbus norint aptikti kliūtis ir optimizuoti atminties valdymą.

Jei valdote sistemas, dirbate su konteineriais arba prižiūrite gamybinius serverius, išsamus atminties valdymo „Linux“ sistemoje išmanymas nebėra privalomas. Tai skirtumas tarp serverio, kuris be jokių dvejonių susidoroja su apkrovos šuoliais, ir to, kuris sunkiai dirba, pereina į „thrashing“ režimą arba netinkamiausiu metu iškviečia baisiąją OOM žudikę.
„Linux“ sukurta taip, kad RAM būtų naudojama kuo efektyviau: ji kaupia failus talpykloje, suspaudžia puslapius, perkelia duomenis į apsikeitimo zoną ir nustato procesų prioritetus pagal labai tikslias politikas. Iš išorės gali atrodyti, kad ji „sunaudoja daug atminties“ arba kad „niekada nebūna laisvos RAM“, tačiau iš tikrųjų ji stengiasi užtikrinti maksimalų našumą ir stabilumą . Pažiūrėkime, žingsnis po žingsnio ir su šiek tiek „paprastų“ paaiškinimų, kaip visa tai veikia ir kaip galite tai tiksliai suderinti pažangiais būdais.
Pagrindinės sąvokos ir mitai apie atmintį „Linux“ sistemoje

Prieš žaidžiant su branduolio parametrais ar montuojant „zram“ tarsi rytojaus nebūtų, pravartu aiškiai suprasti atminties tipus, architektūrą ir tai, kaip sistema mato RAM.
Maksimalus fizinės atminties kiekis, kurį gali apdoroti kompiuteris, priklauso nuo operacinės sistemos ir procesoriaus architektūros. 32 bitų sistema paprastai turi tik 4 GB RAM, o 64 bitų sistema gali lengvai apdoroti dešimtis ar šimtus gigabaitų (teoriškai daug daugiau, nors tikrąjį limitą nustato aparatinė įranga).
„Linux“ sistemoje visa atmintis valdoma kaip virtualioji atmintis . Tai apima ir fizinę RAM, ir keičiamąją erdvę. RAM negalima „ištempti“, išskyrus pridedant fizinius modulius, tačiau virtualiąją atmintį galima išplėsti naudojant diską (skaidinius arba keičiamuosius failus) ir pažangius mechanizmus, tokius kaip zram arba zswap.
La fizinė atmintis (RAM) Tai greitas ir brangus išteklius: ten įkeliami procesai, bibliotekos, failų talpyklos, įvesties/išvesties buferiai, bendra atmintis ir kt. „Linux“ turi labai aiškią filosofiją: jei yra laisvos RAM, geriau ją naudoti kaip talpyklą ir pagreitinti prieigą, nei palikti tuščią. Štai kodėl tokiuose įrankiuose kaip free Tai nereiškia, kad turite problemų.
Disko atmintis ( nuolatinė atmintis) yra daug lėtesnė. Nors RAM reaguoja per nanosekundes, net SSD reaguoja per mikrosekundes ar milisekundes. Štai kodėl sistema stengiasi dažnai naudojamus duomenis laikyti RAM atmintyje ir naudoja diską tik tada, kai tai absoliučiai būtina: įkelia vykdomuosius failus, skaito šaltuosius duomenis arba keičia puslapius.
Virtuali atmintis, puslapiai ir vidinės branduolio struktūros
Virtuali atmintis yra mechanizmas, kuriuo „Linux“ kiekvienam procesui suteikia atskirą ir apsaugotą adresų erdvę . Aparatinė įranga ir branduolys virtualius adresus verčia į fizinius adresus per struktūras, vadinamas puslapių lentelėmis.
Mažiausias atminties valdymo vienetas yra puslapis , paprastai 4 KB. Visa virtualiosios atminties sistema sukasi apie puslapius: jie yra paskirstomi, atlaisvinami, keičiami, kaupiami talpykloje ir žymimi skirtingais leidimais (tik skaitymui, vykdymui ir kt.).
Puslapių lentelės yra branduolio palaikomos hierarchinės struktūros. Jose kiekvienam virtualiam kiekvieno proceso puslapiui saugoma faktinio fizinio puslapio vieta (jei jis egzistuoja), jo teisės ir dabartinė būsena. Šis vertimas leidžia izoliuoti procesus, bendrinti puslapius tarp jų ir tiesiogiai susieti failus su atmintimi.
Kai procesas pasiekia galiojantį adresą, bet puslapis nėra paruoštas prieigai, įvyksta puslapio klaida . Ji gali būti nedidelė (puslapis yra RAM atmintyje, bet tokioje būsenoje, kurią reikia atnaujinti) arba brangi (puslapis yra diske, mainų atmintyje arba faile ir turi būti perkeltas į RAM). Jei puslapio klaidos dažnėja, sistema sulėtėja, nes per daug laiko praleidžia skaitydama iš disko.
Puslapių talpykla yra branduolio palaikoma failų puslapių talpykla. Joje saugomi failų ir katalogų duomenys bei metaduomenys, siekiant sumažinti prieigą prie disko. Tai viena iš priežasčių, kodėl „Linux“ „atrodo“ naudojanti visą RAM: iš tikrųjų ji naudoja atmintį, kurios programos aktyviai nenaudoja, kad pagreitintų prieigą prie disko.
Atminties tipai: failų pagrindu sukurta, anoniminė ir kaip jie susiję su mainų saugykla
„Linux“ sistemoje paprastai skiriama failų atmintis ir anoniminė atmintis . Abi yra RAM atmintyje, tačiau jų kilmė ir galimas atsarginių kopijų kūrimas diske skiriasi.
Skambutis failų atmintis Tai yra tas, kurio atsargines kopijas kuria sistemos failai: vykdomieji dvejetainiai failai, bendros bibliotekos, susieti duomenys su mmap iš failo ir pan. Tą atmintį galima išmesti ir iš naujo įkelti iš originalaus failo, jei reikia vietos.
La anoniminė atmintis Tai viskas, ką procesas rezervuoja ir kas nėra susieta su failu: dinaminis kaupiklis, stekas, privatūs regionai su MAP_ANONYMOUSir sritys, nukopijuotos naudojant kopijavimo įrašymo funkciją, kai tai daroma fork()Ši atmintis egzistuoja tik RAM atmintyje (arba mainų atmintyje, jei ji perkeliama) ir vienintelė galima jos atsarginė kopija yra būtent ta mainų erdvė.
Kai branduoliui reikia atlaisvinti RAM, jis pirmiausia bandys atlaisvinti puslapius, kuriuos gali surinkti iš naujo: paprastai puslapius iš puslapių talpyklos arba failų saugomų sričių. Tik tada, kai nebėra vietos arba atminties slėgis yra labai didelis, jis pradeda perkelti anoniminę atmintį į swap , kuris yra daug brangesnis, bet suteikia sistemai pertraukos.
Atminties spaudimas, mėtymas ir OOM žudikas
Atminties trūkumas atsiranda , kai laisvų puslapių skaičius nukrenta žemiau tam tikrų vidinių slenksčių. Tuomet branduolys yra priverstas nuolat dirbti, kad atlaisvintų atmintį: valyti talpyklas, įrašyti nešvarius puslapius į diską, iškelti retai naudojamus puslapius ir pan.
Didelis atminties kiekis gali sukelti labai aiškius simptomus: didelį delsos laiką žiniatinklio paslaugose , lėtas grafines sąsajas, uždelstus atsakymus iš nuotolinių sesijų (SSH, VNC, RDP), trūkčiojančią pelę, langus, kuriems reaguoti reikia kelių sekundžių ir pan. Tuo metu sistema labiau susitelkia į išlikimą nei į naudingo darbo atlikimą.
Puslapių mėtymas įvyksta , kai RAM nepakanka procesams nuolat naudoti. Branduolys pradeda nuolat keisti puslapius: jis pašalina vieną, kad įterptų kitą, bet tada jam iš karto reikia ką tik pašalinto. Rezultatas – puslapių klaidų ir disko prieigų ciklas, kuris mažina našumą.
Įjungus mainų funkciją, thrashing reiškia, kad anoniminiai puslapiai juda pirmyn ir atgal tarp RAM ir mainų vietos, perpildydami diską. Be mainų funkcijos problema persikelia į failų puslapius: jie yra atmetami ir pakartotinai įkeliami iš failų sistemos, o tai gali padaryti kompiuterį praktiškai nenaudojamą.
Jei branduolys vis dar negali gauti laisvos atminties, atliekami šie veiksmai: Atminties trūkumo (OOM) mechanizmasKai išnaudojama visa, ką galima atmesti, suspausti arba pakeisti, branduolys apskaičiuoja kiekvieno proceso balą (oom_scoreir nusprendžia, kurį paaukoti. Šį procesą užbaigia OOM žudikas kad atlaisvintumėte nemažą kiekį RAM ir išvengtumėte visiško gedimo.
Apsikeitimas: kas tai yra, kiek reikia įdėti ir kodėl tai nėra „velnias“
Keičiamoji atmintis (swap memory) turi blogą reputaciją, iš dalies dėl pasenusių patarimų ir pernelyg didelių supaprastinimų, tokių kaip „jei turite daug RAM, jums nereikia keičiamosios atminties“. Iš tikrųjų keičiamoji atmintis yra pagrindinis „Linux“ atminties projektavimo komponentas, net ir sistemose, kuriose yra daug RAM.
„Swap“ yra disko (skaidinio arba failo) sritis, kurią branduolys naudoja neaktyviems atminties puslapiams saugoti . Tai leidžia jam atlaisvinti RAM procesams, kuriems jos iš tikrųjų reikia. Tai ne pati virtualioji atmintis, o vienas iš mechanizmų, leidžiančių tai padaryti.
Be mainų, anoniminiai puslapiai neturi kur eiti, kai padidėja atminties apkrova. Branduolys vis dar gali pasikliauti talpyklomis ir failais saugomais puslapiais, tačiau kai tik anoniminės atminties lygis tampa kritiškai didelis, jis praktiškai priverstas daug greičiau iškviesti OOM žudiką. Techniškai „Linux“ gali veikti be mainų, tačiau praktiškai daugeliu atvejų tai yra nereikalinga rizika.
Kalbant apie mainų erdvės dydžio nustatymą, nėra vieno recepto, tačiau yra keletas gana pagrįstų šiuolaikinių kriterijų, priklausomai nuo mašinos vaidmens:
- Serveriai be žiemos miego režimo4–8 GB mainų vietos paprastai pakanka kaip buferis, net ir turint daug RAM. Atmintį intensyviai naudojančioms paslaugoms (duomenų bazėms, virtualizacijai) galite ją padidinti iki 1,5 karto, tačiau prioritetas turėtų būti teikiamas fizinės RAM didinimui.
- Staliniai kompiuteriai be žiemos miego režimoTurint 16 GB ar daugiau RAM, 2–4 GB mainų atminties yra daugiau nei pakankamai, kaip saugumo tinklo.
- Įrenginiai, palaikantys žiemos miego režimąApkeitimo vieta turi būti lygi arba šiek tiek didesnė už RAM, nes sistema, užmigdydama, į ją iškelia visą atminties turinį.
Apkeitimo vietos kūrimas yra labai lankstus. Galite naudoti skirtą skaidinį arba apkeitimo failą . Apkeitimo failas idealiai tinka, kai jūsų diskas jau yra padalintas į skaidinius arba norite koreguoti dydį neperkonfigūruodami visos sistemos.
Atminties metrika: nemokama, vmstat, ps, RSS, PSS ir kita
Klasikiniai „Linux“ atminties valdymo įrankiai gali sukelti klaidingą interpretaciją, jei nežinote, ką reiškia kiekvienas stulpelis. Komanda free -h Tai paprasčiausias būdas iš pirmo žvilgsnio pamatyti bendrą atmintį, panaudotą atmintį, laisvą atmintį, talpyklą ir mainų atmintį.
Prie išėjimo free Svarbu atkreipti dėmesį į eilutę, kurioje nurodomi buferiai ir talpykla, nes šis stulpelis nurodo atmintį, kurią iš tikrųjų užima procesai, neskaičiuojant to, ką branduolys naudoja kaip talpyklą ir kurią jis gali greitai atlaisvinti prireikus.
su vmstat -s -S M Gausite išsamesnę santrauką: bendrą atmintį, panaudotą atmintį, laisvą atmintį, aktyvią atmintį, nenaudojamą atmintį, keičiamąją talpyklą ir kt. Taip pat galite peržiūrėti /proc/meminfo kad būtų galima išsamiai pamatyti kiekvieną rodiklį, nors rezultatas yra sausesnis ir mažiau patogus naudoti.
Norėdami sužinoti, kurie procesai labiausiai veikia RAM, ps aux rodo stulpelius, tokius kaip VSZ (bendra virtualioji atmintis, kurią procesas galėtų naudoti, jei įkeltų viską) ir RSS (Rezidento rinkinio dydis – faktinė atmintis, šiuo metu esanti RAM). Pastaba: RSS taip pat apima bendros bibliotekos atmintį, kuri skaičiuojama kelis kartus, jei ją naudoja keli procesai.
Čia ateina į žaidimą PSS (proporcingas rinkinio dydis)kuris paskirsto bendrinamų bibliotekų kainą tarp jas naudojančių procesų. Norint lengvai gauti PSS, yra tokių įrankių kaip smem, labai naudinga norint pamatyti, kurios programos iš tikrųjų yra „duomenų vagys“, neiškraipant duomenų dėl bendrinamų bibliotekų.
Atminties fragmentacija, stekas, kaupikas ir ulimit
Kitas mažiau pastebimas atminties valdymo aspektas yra fragmentacija . Galime kalbėti apie vidinę fragmentaciją (kai suapvalinti blokai paskirstomi 4, 8 arba 16 baitų kartotiniais, paliekant nenaudingą dalį) ir išorinę fragmentaciją (kai laisvos atminties yra, bet ji yra padalinta į mažas dalis, kurios neleidžia naudoti didelio gretimo paskirstymo).
Tokiose programose kaip „Redis“ kartais matysite skirtumų tarp sistemos (RSS) nurodytos atminties ir atminties, kurią pati programa laiko naudinga (used_memory). Šis atstumas paprastai daugiausia susijęs su išorinis susiskaldymas, tarpai, kuriuos sistema laiko užimtais, bet procesas jų iš tikrųjų nenaudoja.
Proceso atmintis konceptualiai skirstoma į sukrauti ir sukrautiStekas naudojamas vietiniams kintamiesiems ir funkcijų iškvietimams, o krūva – dinaminiam paskirstymui. malloc() ir panašiai. Kai duomenų struktūros išauga iki ribos, kurią gali talpinti stekas, jos ištraukiamos iš steko ir tvarkomos naudojant rodykles.
Maksimalų stekų dydį vienam procesui galima reguliuoti naudojant ulimit -a ir sistemos konfigūracijas. Sumažinus jį, apribojamas didelių vietinių kintamųjų skaičius, o padidinus – daugiau kintamųjų arba galima naudoti giliąją rekursiją. Šio parametro reguliavimas gali padėti geriau kontroliuoti atminties naudojimą ir sumažinti tam tikrus fragmentacijos tipus, nors tai nėra panacėja.
Išplėstinė stebėsena ir diagnostika: „top“, „htop“, „vmstat“, „sar“ ir kt.
Norėdami rasti procesus, kurie naudoja RAM, galite pradėti nuo top O jei norite kažko patogesnio vartotojui, su htopPastarasis rodo procesoriaus, atminties ir mainų srities naudojimo juostas ir leidžia interaktyviai rūšiuoti bei filtruoti procesus.
Debian'e ir išvestinėse programose įdiegti htop su sudo apt install htop„AlmaLinux“ ir kitose „Red Hat“ tipo sistemose su sudo dnf install htopPatekę į vidų, galite rūšiuoti pagal atmintį, ieškoti konkrečių procesų ir tiesiogiai iš sąsajos užbaigti problemines užduotis.
Norint atlikti išsamesnę analizę ir paketinį režimą, vmstat 5 Jis reguliariai teikia informaciją apie procesus, atmintį, puslapiavimą, blokų įvestį/išvestį, pertraukimus ir procesoriaus planavimą. Jis idealiai tinka norint matyti, kaip atminties apkrova kinta laikui bėgant.
Toliau sysstat Jame yra tokių įrankių kaip sarkurie leidžia įrašyti ir analizuoti atminties ir kitų išteklių naudojimą. Pavyzdžiui, sar -r 1 5 Jis rodo atminties ir mainų naudojimą kas sekundę, penkis kartus. „Debian“ sistemoje jis įdiegiamas su sudo apt install sysstatir „AlmaLinux“ sistemoje su sudo dnf install sysstat.
Jei jums reikia gilaus branduolio lygio derinimo, bpftrace Tai galingas įrankis, pagrįstas eBPF. Jis leidžia instrumentuoti sistemos iškvietimus, stebėti atminties prieigą ir aptikti kliūtis neperkompiliuojant ar nepaleidžiant iš naujo. Paprastai jis įdiegiamas kartu su sudo apt install bpftrace „Debian“ tipo sistemose.
Praktinis atminties valdymas: swap, swappiness ir cache valymas
Pagrindinė užduotis daugelyje serverių yra patikrinti dabartinė mainų būsena. Su swapon --show Turite aktyvių mainų įrenginių ir failų sąrašą, jų dydį, tipą ir prioritetą. Jei reikia pridėti mainus akimirksniu, galite sukurti failą su fallocate, saugoti leidimus su chmod 600, formatuokite jį su mkswap ir aktyvuokite jį su swaponKad jis būtų nuolatinis, tiesiog pridėkite atitinkamą įrašą prie /etc/fstab.
Parametras vm.swappiness Tai kontroliuoja, kaip lengvai branduolys teikia pirmenybę apsikeitimui, o ne RAM pildymui. Jis svyruoja nuo 0 iki 100. Mažos vertės (10–20) lemia, kad sistema vengia apsikeitimo, kol tai nėra absoliučiai būtina, o didelės vertės (60 ar daugiau) skatina sistemą greičiau perkelti puslapius, kad būtų išlaikyta laisva RAM.
Serveriuose su lėtais diskais arba didelėmis duomenų bazėmis tai dažnai yra įdomu sumažinkite mainų greitįPavyzdžiui, iki 10 arba 20, su sudo sysctl vm.swappiness=10Staliniams kompiuteriams su greita „zram“ arba SSD diskais tarpinės vertės, tokios kaip 30–60, gali užtikrinti gerą delsos ir atminties panaudojimo pusiausvyrą.
Esant gerai atminčiai, kartais reikia priversti talpyklos išleidimas su sudo sync && sudo sysctl -w vm.drop_caches=3Tai ištuština didelę puslapio talpyklos dalį ir fragmentus. Tai kartais naudinga testavimui arba atminties atlaisvinimui labai ribotose sistemose, tačiau to nereikėtų naudoti reguliariai, nes prarandamas ir našumo pagerėjimas, kurį suteikia talpykla.
Išplėstiniai valdymo įrankiai: „cgroup v2“, „memory.pressure“ ir OOM vartotojo erdvėje
Šiuolaikinėse sistemose, kurios naudoja „systemd“ ir „cgroup v2“ , atminties valdymą galima tiksliai suderinti pagal procesų grupes. „cgroup v2“ organizuoja užduotis į hierarchijas ir taiko išteklių apribojimus bei prioritetus (CPU, atmintis, įvestis/išvestis) grupės lygmeniu, o ne tik atskirų procesų lygmeniu.
Atminties hierarchijoje tokie parametrai kaip memory.low Jie leidžia nurodyti, kad tam tikrų c grupių atmintis turėtų būti labiau apsaugota nuo pasaulinio spaudimo, o kitos gali būti labiau išeikvojamos, jei reikia atlaisvinti RAM.
Failas memory.pressure Tai atskleidžia labai naudingus rodiklius: kiek laiko užduotys toje c grupėje buvo blokuojamos dėl atminties trūkumo, 10, 60 ir 300 sekundžių intervalais. Variantas šiek tiek Tai rodo, ar bent viena užduotis buvo atidėta, ir pilnas Tai atspindi akimirkas, kai visos grupės užduotys buvo paveiktos vienu metu.
Be branduolio OOM žudiko, atsirado ir vartotojo erdvės sprendimai, tokie kaip ankstyvas, nohang o systemd-oomd„EarlyOOM“ stebi RAM ir swap'us, o kai jie nukrenta žemiau tam tikrų ribų, ji aktyviai nutraukia procesus. oom_score didesnis, atkuriant tinkamumą naudoti prieš užstrigdamas mašinai.
„NoHang“ žengia dar vieną žingsnį: palaiko daugiau atrankos kriterijų , gali atsižvelgti į atminties spaudimą ir gerai integruojasi su pažangiomis konfigūracijomis, nors jos kūrimas turėjo ir pakilimų, ir nuosmukių. Tuo tarpu „systemd-oomd“ tiesiogiai integruojasi su „systemd“ ir „cgroup v2“ ir šiuo metu yra pageidaujamas pasirinkimas daugelyje distribucijų, norint intelektualiau ir detaliau valdyti atminties trūkumo situacijas.
„Modern Swap“: „zram“, „zswap“ ir įrenginių prioritetai
Be „klasikinio“ diskų keitimo, „Linux“ siūlo modernius mechanizmus, kurie gerokai pagerina našumą, derindami RAM glaudinimą ir selektyvų diskų naudojimą.
„zram“ yra branduolio modulis, kuris pačioje RAM atmintyje sukuria blokinius įrenginius, kuriuose puslapiai saugomi suspaustoje būsenoje. Jie paprastai naudojami kaip itin greiti mainų įrenginiai: glaudinimas ir išskleidimas sunaudoja šiek tiek procesoriaus išteklių, tačiau padidėja loginės atminties talpa ir smarkiai sumažėja disko naudojimas.
Daugelyje distribucijų pakanka įdiegti zram-tools o zram generatorius ir įjunkite jos paslaugą. Pavyzdžiui, „Debian“ sistemoje galite naudoti sudo apt install zram-tools ir aktyvuoti zramswap su systemd. „AlmaLinux“ sistemoje su sudo dnf install zram-generator ir atitinkamą paslaugą.
Kita vertus, „zswap“ veikia kaip suspausta talpykla prieš disko apsikeitimo sritį . Pirmiausia ji bando išsaugoti suspaustą RAM atmintį; tik tada, kai ši talpykla prisipildo arba puslapiai tampa neaktyvūs, ji rašo į tikrąją apsikeitimo sritį. Tai sumažina disko įvesties/išvesties kiekį ir pailgina SSD diskų tarnavimo laiką, tačiau šiek tiek sumažina procesoriaus apkrovą.
Sujungiant kelis mainų įrenginius (pvz., „zram“ ir disko failą), labai svarbu pakoreguoti prioritetai. Su swapon -p arba variantas pri= en /etc/fstab Jūs nurodote, kuris įrenginys turėtų būti naudojamas pirmiausia. Įprasta praktika yra suteikti aukštą prioritetą (pvz., 100) zram ir mažesnį prioritetą (10) disko mainams, kad branduolys prieš pasiekdamas diską galėtų visapusiškai išnaudoti suspaustą mainų erdvę RAM atmintyje.
Serveriams taikomas atminties valdymas: swap, paslaugos ir saugumas
Žiniatinklio serveriuose („Apache“, „Nginx“), duomenų bazėse („MySQL“, „MariaDB“, „MongoDB“) arba daug išteklių reikalaujančiose programose atmintis yra svarbiausias išteklius. RAM ir mainų konfigūracija tiesiogiai lemia, kiek vienu metu vykdomų užklausų galite apdoroti, kol sistema pradės veikti.
Duomenų bazių variklių, tokių kaip „MongoDB“, atveju labai svarbu, kad fizinė RAM atmintis viršytų duomenų bazės reikalavimus ; kitaip bus naudojama mainų erdvė, o našumas smarkiai sumažės dėl didelio skirtumo tarp RAM ir disko prieigos. Tas pats pasakytina ir apie „MySQL“ / „MariaDB“, kur tokios priemonės kaip „MySQLTuner“ rekomenduoja atminties parametrus pagal turimą RAM atmintį.
Norint nešvaistyti atminties, patartina sustabdyti nenaudojamas paslaugas ir išvalyti nebereikalingus konteinerius, atvaizdus ir „Docker“ tomus. Kūrimo ir kokybės užtikrinimo aplinkose labai lengva sukaupti pamirštus išteklius, kurie niekam nepastebint vagia gigabaitus RAM ir disko vietos.
Saugumas taip pat vaidina svarbų vaidmenį: nereikalingi prievadai atidaryti Jie padidina atakos paviršių. Kenkėjiška programa, kuriai pavyksta įsiskverbti į sistemą, gali, pavyzdžiui, paleisti kasybos procesus, kurie sunaudoja procesorių ir atmintį, planuoti užduotis crontab ir sugadinti sistemą. Įeinančių ir išeinančių prievadų tikrinimas, visko, kas nėra būtina, uždarymas ir įtartinų „cron“ užduočių išvalymas yra pagrindinės sistemos higienos dalis, kuri taip pat apsaugo atminties išteklius.
Atminties ir failų sistemos: ext4, XFS, Btrfs ir žurnalavimas
Nors tai gali atrodyti kaip atskiras klausimas, failų sistemos pasirinkimas ir jos konfigūracija taip pat turi įtakos atminties elgsenai ir įvesties/išvesties apkrovai. Pavyzdžiui, „Ext4“ naudoja žurnalą, kuris, priklausomai nuo apkrovos, gali sukelti papildomą apkrovą diskui ir, atitinkamai, talpyklos valdymui.
Sudėtingose serverių aplinkose daugelis administratorių renkasi XFS arba net „Btrfs“ . XFS paprastai labai gerai veikia su dideliais failais ir didelio našumo sistemomis. „Btrfs“ siūlo pažangias funkcijas, tokias kaip momentinės kopijos, skaidrus glaudinimas ir potomiai, tačiau yra tam tikro sudėtingumo ir, priklausomai nuo versijos ir platinimo, brandos lygio, kuris vis dar diskutuojamas visų darbo krūvių atveju.
Branduolys pritaiko savo talpyklos ir nurašymo politiką prie failų sistemos ypatybių, todėl perėjimas iš ext4 į XFS arba Btrfs paveikia ne tik neapdorotus įvesties / išvesties duomenis, bet ir tai, kaip RAM ir puslapio talpykla naudojama skaitymo ir rašymo operacijoms buferizuoti.
Svarbiausi grafiniai įrankiai ir pagalbinės priemonės administratoriams
Nors terminalas išlieka bet kurio administratoriaus įrankiu, yra įrankių, kurie labai palengvina atminties ir išteklių valdymą . Vienas iš jų yra „Glances“ – realaus laiko monitorius, rodantis procesoriaus, atminties, disko, tinklo ir procesų informaciją viename ekrane, su pasirenkama žiniatinklio sąsaja, skirta stebėti kelis serverius iš naršyklės.
Norėdami greitai įdiegti „Debian“ sistemoje, tiesiog... sudo apt install glancesŽvilgsniai labai gerai dera su htop, vmstat y sar, pateikdamas vaizdesnį sistemos veikimo apkrovos metu vaizdą.
Grafinio serverių administravimo srityje „Cockpit“ siūlo patogią naudoti žiniatinklio sąsają atminties, procesų ir paslaugų stebėjimui . Ji leidžia valdyti kelis serverius iš vienos konsolės, paleisti ir sustabdyti „systemd“ įrenginius, stebėti swap ir zram naudojimą bei peržiūrėti žurnalus neišeinant iš naršyklės.
Stalinių kompiuterių sistemose daugelis distribucijų integruoja savo išteklių monitorių, tačiau aplinkose be grafinės sąsajos arba kai norite kažko lengvesnio, šių konsolės įrankių derinimas su pasirinktiniais scenarijais suteikia puikų matomumą, kas vyksta su atmintimi bet kuriuo metu.
Tinkamas atminties valdymas „Linux“ sistemoje apima supratimą, kaip branduolys naudoja RAM, swap, zram ir zswap vaidmenis, kaip cgroup v2 ir įvairios OOMs reaguoja į spaudimą ir kokius įrankius turite sistemai stebėti ir tiksliai derinti. Sudėjus visus šiuos elementus – nuo „ free“, „vmstat“, PSS ir „memory.pressure“ iki „zram“, „swappiness“ ir „systemd-oomd“ – nustosite vargti su „Linux“ RAM eikvojančia aparatūros atmintimi“ ir pradėsite turėti tiksliai suderintą, stabilią sistemą, galinčią maksimaliai padidinti aparatinės įrangos našumą bet kuriame vaidmenyje: serveryje, darbalaukyje ar didelės apkrovos aplinkoje.
Rodiklis
- 1 Pagrindinės sąvokos ir mitai apie atmintį „Linux“ sistemoje
- 2 Virtuali atmintis, puslapiai ir vidinės branduolio struktūros
- 3 Atminties tipai: failų pagrindu sukurta, anoniminė ir kaip jie susiję su mainų saugykla
- 4 Atminties spaudimas, mėtymas ir OOM žudikas
- 5 Apsikeitimas: kas tai yra, kiek reikia įdėti ir kodėl tai nėra „velnias“
- 6 Atminties metrika: nemokama, vmstat, ps, RSS, PSS ir kita
- 7 Atminties fragmentacija, stekas, kaupikas ir ulimit
- 8 Išplėstinė stebėsena ir diagnostika: „top“, „htop“, „vmstat“, „sar“ ir kt.
- 9 Praktinis atminties valdymas: swap, swappiness ir cache valymas
- 10 Išplėstiniai valdymo įrankiai: „cgroup v2“, „memory.pressure“ ir OOM vartotojo erdvėje
- 11 „Modern Swap“: „zram“, „zswap“ ir įrenginių prioritetai
- 12 Serveriams taikomas atminties valdymas: swap, paslaugos ir saugumas
- 13 Atminties ir failų sistemos: ext4, XFS, Btrfs ir žurnalavimas
- 14 Svarbiausi grafiniai įrankiai ir pagalbinės priemonės administratoriams