Menaxhimi i kujtesës në Linux: një udhëzues i plotë dhe optimizim

Përditësimi i fundit: 30 Mars 2026
  • Linux përdor memorien fizike si memorje të përkohshme dhe buffer-a, kështu që pak RAM "i lirë" nuk do të thotë domosdoshmërisht se ka një problem.
  • Kombinimi i RAM-it, memorjes swap, memories virtuale dhe memorjes cache të faqes lejon izolimin e procesit dhe ruan performancën nën ngarkesa të ndryshme.
  • Mjete të tilla si free, htop, vmstat, pmap dhe cgroupv2 e bëjnë më të lehtë diagnostikimin dhe kufizimin e përdorimit të memories nga proceset dhe shërbimet.
  • Teknika të tilla si zram, zswap, EarlyOOM ose systemd-oomd përmirësojnë reagimin e sistemit ndaj presionit të memories dhe parandalojnë rrëzimet.

Menaxhimi i kujtesës në Linux

Kur punoni me servera ose kompjuterë desktop të bazuar në Linux, menaxhimi i memories Është një nga shtyllat Këta faktorë bëjnë diferencën midis një sistemi të shpejtë dhe një sistemi që ngadalësohet. Qoftë Debian, Ubuntu, AlmaLinux, CentOS apo ndonjë shpërndarje tjetër, të kuptuarit se si Linux trajton RAM-in, shkëmbimin dhe mekanizmat e tjerë të brendshëm është çelësi për të shmangur rrëzimet, humbjet e performancës ose problemet e stabilitetit.

Për më tepër, në mjediset moderne që përdorin baza të dhënash, kontejnerë, desktopë të plotë dhe aplikacione të rënda, thjesht "të kesh shumë RAM" nuk është e mjaftueshme: është thelbësore të dish Si e përdor Linux memorien, çfarë domethënie kanë në të vërtetë treguesit ajo që shohim në mjete si top, htop, free o vmstatDhe çfarë opsionesh kemi për të rregulluar imët sjelljen e kernelit, swap-it, cgroup-eve ose mekanizmave si zram, zswap, EarlyOOM ose systemd-oomd?

Bazat e Memorjes në Linux

Linux është projektuar për të shfrytëzuar sa më shumë memorien e disponueshme, kështu që RAM pothuajse kurrë nuk shfaqet "bosh", sepse kerneli e përdor atë si... memorien e përkohshme të diskut, memorjet e përkohshme dhe ruajtjen e përkohshme për të shpejtuar aksesin në të dhëna dhe aplikacione. Kjo çon në shumë keqkuptime: të shohësh pak memorie "të lirë" nuk është sinonim i një problemi, por më tepër i funksionimit efikas të sistemit.

Sasia totale e memories që një kompjuter mund të menaxhojë varet nga arkitektura e sistemit operativNjë sistem 32-bitësh zakonisht kufizohet në rreth 4 GB memorie të adresueshme, ndërsa një sistem 64-bitësh mund të trajtojë lehtësisht dhjetëra ose qindra gigabajt. Teorikisht, arkitektura 64-bitëshe lejon shifra të mëdha (në rendin e ekzabajtëve), megjithëse në praktikë limiti aktual imponohet nga hardueri dhe bërthama e përdorur.

Linux kombinon segmentimi dhe faqëzimi për të organizuar kujtesën. Kujtesa ndahet në faqe me madhësi fikse (zakonisht 4 KiB, të cilat mund të pyeten me getconf PAGESIZE) dhe bërthama menaxhon strukturat e brendshme të quajtura tabela faqesh për të përkthyer adresat virtuale në adresa fizike, për të aplikuar lejet dhe për të kontrolluar gjendjen e secilës faqe.

Kujtesa fizike, domethënë RAM i instaluar në kompjuterËshtë një burim i shtrenjtë, por jashtëzakonisht i shpejtë. Linux e përdor atë për ekzekutimin e proceseve, memorjeve të të dhënave, memories së përbashkët, buffer-ave I/O dhe strukturave të brendshme të kernelit. Kur proceset nuk e mbushin të gjithë RAM-in, sistemi e mbush boshllëkun me memorje të diskut për të shpejtuar aksesin në skedarë dhe pajisje ruajtjeje më të ngadalta.

Meqenëse RAM është i kufizuar, Linux përdor memorie virtuale dhe mekanizma shkëmbimi për të zgjeroni logjikisht hapësirën e disponueshmeduke u lejuar proceseve të shohin një hapësirë ​​të madhe dhe të vazhdueshme adresash, edhe pse faqet po ripërdoren dhe zhvendosen midis RAM-it dhe ruajtjes dytësore poshtë tij.

Memoria virtuale, memoria fizike, shkëmbimi dhe disku

Në Linux, termi "memorie virtuale" përdoret shpesh për t'iu referuar hapësirës së memories së dukshme për secilin proces. Çdo program sheh një hapësirë ​​adresash private, e izoluar dhe e mbrojturKjo falë kombinimit të MMU-së së procesorit dhe tabelave të faqeve të kernelit. Kjo hapësirë ​​është shumë më e madhe se RAM-i i disponueshëm dhe mbështetet si në memorien fizike ashtu edhe në skedarët swap dhe të mapuar.

Memoria fizike (RAM) është vendi ku ndodhen faqet që përdoren në mënyrë aktive. Është shumë e rëndësishme të keni RAM i mjaftueshëm për ngarkesa normale të punësPër shembull, një server me baza të dhënash si MongoDB ka nevojë për memorie fizike që tejkalon atë që kërkon motori i bazës së të dhënave dhe shërbimet e tjera, sepse nëse MongoDB detyrohet të përdorë shkëmbimin intensivisht, performanca bie ndjeshëm: Qasja në RAM matet në nanosekonda, ndërsa shkëmbimi i diskut funksionon në milisekonda.

Memoria e ndërrimit vepron si zgjerim më i ngadaltë i RAM-itKur memoria fizike ngopet, Linux mund të zhvendosë faqet e përdorura rrallë për të shkëmbyer hapësirë, e cila mund të jetë një ndarje e dedikuar ose një skedar brenda një sistemi skedarësh. Të dyja qasjet janë të vlefshme; zgjedhja varet nga politika e administrimit, lehtësia e menaxhimit dhe kërkesat e letargjisë.

Është e rëndësishme të çmitizohet hapësira e shkëmbimit: nuk është negativi. Nuk është, në vetvete, sinonim i një sistemi të ngadaltë, as nuk është një burim që duhet të përdoret vetëm kur gjithçka tjetër po prishet. E konfiguruar siç duhet, hapësira e shkëmbimit lejon RAM falas nga faqet anonime joaktive (për shembull, pjesë të memories së procesit që nuk janë përdorur për një kohë të gjatë), duke lënë hapësirë ​​të disponueshme për ngarkesa të reja pune që kërkojnë shpejtësi.

Përveç RAM-it dhe swap-it, në lojë hyjnë edhe pajisjet e ruajtjes së të dhënave. Memoria e diskut ruan të dhëna të qëndrueshme që i mbijetojnë rinisjeve dhe ndërprerjeve të energjisëNdërsa kompjuteri është i ndezur, shumica e këtyre të dhënave ruhen në RAM (faqe cache) dhe bërthama vendos se cilat faqe të mbajë dhe cilat të fshijë bazuar në heuristikat e përdorimit të fundit, me qëllim minimizimin e akseseve të kushtueshme në disk.

Si rrjedh përdorimi i memories në Linux

Rrjedha tipike e të dhënave në një sistem Linux kalon nëpër disa komponentë: përdoruesi ose aplikacionet gjenerojnë kërkesa që sistemi i përkthen në qasje në memorie dhe diskTë dhënat e lexuara nga memoria ngarkohen së pari në RAM, ku mund të mbeten në memorjen e përkohshme të faqes. Kur kërkohet përsëri, bërthama kontrollon nëse janë ruajtur tashmë në memorjen e përkohshme, duke shmangur kështu një qasje të re në disk.

CPU dhe MMU janë gjithashtu të përfshira në këtë proces. CPU operon me adresa virtuale dhe, duke përdorur tabela faqesh, hardueri përkthen çdo akses në një adresë fizike në RAM ose e zgjidh atë duke përdorur mekanizma të gabimit të faqes nëse adresa nuk është ngarkuar. Nëse të dhënat duhet të vazhdojnë, ato shkruhen në disk, por gjatë punës me to, përparësi i jepet mbajtjes së tyre në tabelën e adresave virtuale. Memorie e shpejtë për performancë të përmirësuar.

Kur RAM fillon të pakësohet, bërthama hyn në lojë me algoritmet e saj të rikuperimit të memories: liron memorjen e përkohshme të faqeve më pak të përdorura, kompaktëson zonat e memories, përdor faqet me përparësi më të ulët dhe, nëse situata bëhet kritike, mund të marrë masa më drastike, siç është aktivizimi i funksionit OOM-killer.

  Si të ktheheni në një pikë të mëparshme në Windows pa humbur të dhëna

Harta e kujtesës së një procesi në Linux

Çdo proces që funksionon në Linux ka një harta e kujtesës ose paraqitja e kujtesës i cili përcakton se si është e organizuar hapësira e adresave të tij: ku ndodhen kodi ekzekutues, variablat globale, heap, stack, argumentet e linjës së komandës, variablat e mjedisit dhe mapimet e skedarëve ose librarive të përbashkëta.

Ajo hartë zakonisht ndahet në disa segmente të dallueshme. Në fund të hapësirës virtuale gjejmë segment teksti (kodi binar i programit), pastaj segmentet e të dhënave të inicializuara dhe të painicializuara (BSS), sipër tij heap-i ku ruhen alokimet dinamike dhe në krye steku i proceseve. Argumentet dhe mjedisi ndodhen gjithashtu në pjesën e sipërme të hapësirës së adresave.

Segmenti i tekstit përmban udhëzime të ekzekutueshme të programit dhe bibliotekave të përbashkëtaNormalisht është vetëm për lexim dhe mund të ndahet nga shumë procese që ekzekutojnë të njëjtin skedar binar, duke kursyer memorien fizike. Çdo përpjekje për të shkruar në atë rajon rezulton në një defekt segmentimi.

Segmenti i të dhënave të inicializuara ruan variabla globale dhe statike që kanë një vlerë jo zero në fillim. Ky segment mund të ndahet konceptualisht në një pjesë vetëm për lexim dhe një pjesë për lexim dhe shkrim, varësisht nga lloji i të dhënave. Segmenti BSS, nga ana tjetër, grupon variabla globale ose statike që nuk kanë një vlerë të qartë në kod ose që janë inicializuar në zero.

Heap është rajoni i përdorur për memorie dinamike e menaxhuar nga thirrje të tilla si malloc, calloc ose reallocKur programi kërkon memorie, menaxheri i memories së përdoruesit e merr atë nga grumbulli; kur e liron atë me `free`, ajo kthehet në grumbull, por jo domosdoshmërisht në sistemin operativ, gjë që mund të çojë në fragmentim të brendshëm. Grumbulli është i rezervuar për variablat lokale të funksionit, adresat e kthimit dhe parametrat, dhe rritet ose zvogëlohet me çdo thirrje dhe kthim të funksionit.

Nëse duam të inspektojmë hartën e memories së një procesi në ekzekutim, mjete si pmap Ato janë shumë të dobishme. Me pmap <PID> Mund të shohim rajonet e ndryshme të hartuara, madhësinë e tyre, lejet, nëse janë anonime apo të shoqëruara me skedarë, si dhe madhësinë e rezidentit (RSS) në RAM dhe metrika të tjera që ndihmojnë për të kuptuar konsumin aktual të memories së një aplikacioni.

Konceptet kryesore: faqet, gabimet e faqes dhe memoria e përkohshme (cache)

Njësia më e vogël e menaxhimit të memories në Linux është faqe kujtimeshZakonisht 4 KiB, megjithëse ekzistojnë faqe të mëdha për ngarkesa të caktuara pune. Të gjitha vendimet e bërthamës në lidhje me atë që duhet zhvendosur, liruar ose ruajtur në memorje të përkohshme merren në nivel faqeje, jo në nivel bajtesh individualë.

Tabelat e faqeve janë struktura hierarkike të mirëmbajtura nga bërthama që tregojnë se si adresat virtuale përkthehen në adresa fizike. Çdo hyrje mund të përfshijë informacion rreth lexoni, shkruani dhe ekzekutoni lejet, gjendja e faqes (e pranishme në memorie, në swap, dirty, e ndarë, etj.) dhe meta të dhëna të tjera që MMU përdor gjatë përkthimit.

Një gabim faqeje ndodh kur një proces qaset në një adresë virtuale të vlefshme, por faqja përkatëse nuk është gati për përdorim: mund të mos jetë ndarë ende, mund të jetë në disk ose mund të kërkojë hartëzim fillestar. Bërthama ndërhyn për të gjeni ose krijoni atë faqeNëse faqja ndodhet në RAM, por nuk është shënuar saktë, kostoja e dështimit është e ulët; nëse duhet të sillet nga disku (swap ose skedar), kostoja është shumë më e lartë.

Memoria e faqes, ose memoria e faqes së skedarit, është një nga sekretet e mëdha të performancës së mirë të Linux-it. Bërthama e ruan atë në RAM. të dhënat e skedarëve dhe metadatat Për të përshpejtuar leximin dhe shkrimin, duke ulur në mënyrë drastike numrin e akseseve në disk. Prandaj, edhe pse mund të duket sikur ka pak memorie të lirë, shumica e asaj RAM është në të vërtetë e disponueshme: bërthama mund të lirojë shpejt memorien e përkohshme nëse aplikacionet kanë nevojë për më shumë hapësirë.

Brenda hapësirës virtuale bëjmë dallimin edhe midis memories së skedarëve, të lidhur me skedarë të mapuar (për shembull, kodi i skedarëve binare dhe librarive ose skedarë të mapuar në mënyrë eksplicite me mmap), dhe memorie anonime, e cila korrespondon me heap-in, stack-un dhe mapime të tjera pa kopje rezervë të skedarëve. Këto të fundit mund të zëvendësohen vetëm nëse është e nevojshme, sepse nuk ka asnjë skedar nga i cili mund të rigjenerohet.

Presioni i kujtesës, rrahjet e forta dhe OOM

Kur numri i faqeve të lira bie nën pragje të caktuara, thuhet se sistemi hyn në një gjendje presioni i kujtesësNë këtë skenar, kerneli duhet të shpenzojë më shumë kohë duke gjetur faqe që mund të lirohen, kompaktohen ose zhvendosen për t'u shkëmbyer, dhe kjo ndikon në performancën e përgjithshme.

Në serverat web, presioni i lartë i memories mund të përkthehet në latencë e rriturPunëtorët duhet të presin që faqet të lirohen përpara se të vazhdojnë të përpunojnë kërkesat, dhe CPU-ja shpenzon cikle në detyrat e menaxhimit të memories në vend që të përpunojë ngarkesat. Në desktopë, kjo perceptohet si ngecje, përgjigje e ngadaltë e miut, dritare që nuk përgjigjen dhe madje edhe ngrirje të shkurtra.

Në aksesin në distancë nëpërmjet SSH, RDP ose VNC, kjo situatë manifestohet si komanda që "ngrihen", vonesa në shtypje dhe, në përgjithësi, një ndërveprim më i vështirë. Nëse përdoret gjerësisht edhe shkëmbimi, kjo mund të çojë në... gjendje dërrmueseku sistemi shpenzon më shumë kohë duke zhvendosur faqe midis RAM-it dhe hapësirës së ruajtjes sesa duke ekzekutuar kod të dobishëm.

Shkatërrimi i sistemit ndodh kur RAM-i nuk është i mjaftueshëm për të mirëmbajtur grupin aktiv të proceseve të punës. Me shkëmbimin e aktivizuar, faqet anonime udhëtojnë vazhdimisht midis RAM-it dhe hapësirës së shkëmbimit, duke aktivizuar hyrjet/daljet e diskut. Pa shkëmbim, bërthama nuk ka ku të heqë këto faqe anonime dhe e vetmja zgjidhje është të ndërpresë proceset duke përdorur OOM-killer.

Edhe pa shkëmbim, mund të ndodhë mbingarkesë e memories së skedarëve: faqet që i përkasin memories së përkohshme të skedarëve nxirren dhe ringarkohen vazhdimisht nga disku, me ritmin që aplikacionet kanë nevojë për to, duke gjeneruar një cikël aktiviteti I/O dhe ngadalësi ekstreme.

  Debian Linux: shpërndarja kryesore e ekosistemit GNU

Kur kerneli i shterron të gjitha opsionet e tij për marrjen e memories - lirimin e memorjes së përkohshme, zhvendosjen e faqeve për shkëmbim, kompaktimin dhe zbatimin e politikave të cgroups - ai hyn në një gjendje Pa memorie (OOM)Në atë pikë, OOM-killer duhet të zgjedhë një ose më shumë procese për t'i mbyllur në mënyrë që të rimarrë memorien dhe të ruajë pjesën tjetër të sistemit.

Për të zgjedhur se cilin proces të mbyllë, kerneli llogarit një rezultati_i_oom-it për secilin PID, bazuar në faktorë të tillë si sasia e memories së përdorur, rëndësia e procesit dhe parametra të tjerë të brendshëm. Kjo sjellje mund të modifikohet nga oom_score_adje cila rregullon peshën e një procesi specifik. Mjete të tilla si choom Ato ju lejojnë të shikoni dhe ndryshoni lehtësisht këto vlera.

Shkëmbimi: mitet, praktikat më të mira dhe variacionet moderne

Swap ka një reputacion disi të keq. Shumë përdorues besojnë se është diçka që duhet shmangur me çdo kusht ose se ka kuptim vetëm nëse RAM është shumë i kufizuar. Megjithatë, në Linux, swap është pjesë e... strategji globale e kujtesës virtuale: lejon bërthamën të zhvendosë faqet anonime joaktive nga RAM-i për të përcaktuar përparësitë e të dhënave aktive dhe memories së përkohshme të faqes.

Është e gabuar të mendosh për swap-in si një "zgjidhje të fundit" që duhet përdorur vetëm kur gjithçka tjetër shkon keq. Në fakt, edhe në sisteme me shumë RAM, të kesh swap i jep bërthamës më shumë hapësirë ​​për ta mbajtur grupin kryesor të punës të shkathët dhe për ta përdorur më mirë memorien fizike. Megjithatë, është e vërtetë që kur aktiviteti i swap-it është shumë i lartë dhe i qëndrueshëm, performanca vuan ndjeshëm.

Në terma praktikë, rregulli i vjetër që hapësira e shkëmbimit duhet të jetë 1 deri në 2 herë RAM-i nuk është më një ligj i pandryshueshëm. Në serverat me sasi të mëdha memorieje, është më e zakonshme të caktohet një hapësirë ​​shkëmbimi shumë më e vogël në përpjesëtim, ose edhe të përdoret shkëmbim i kompresuar në RAM me teknologji të tilla si zram ose zswap për të përmirësuar performancën dhe për të zvogëluar shkrimet në disk.

Një rast tjetër përdorimi për shkëmbimin është hibernimi: sistemi mund të shkarkojë përmbajtjen e RAM-it në hapësirën e shkëmbimit dhe të fiket plotësisht, pastaj ta rivendosë gjendjen e tij pas nisjes. Kjo kërkon që hapësira e disponueshme e shkëmbimit të jetë të paktën aq e madhe sa sasia e memories që do të ruhet, dhe ky është një faktor që ndikon në zgjedhjen midis zgjidhjeve si zram (e cila nuk lejon hibernimin) dhe shkëmbimit tradicional të diskut.

Në vitet e fundit, është raportuar edhe sjellje e dyshimtë e OOM-killer në disa kernel, ku sistemi rrëzohet përpara se OOM-killer të hyjë në fuqi. Në raste të caktuara, aktivizimi i shkurtesave të tilla si Alt+SysRq+F (pas aktivizimit të parametrit) /proc/sys/kernel/sysrqKjo ju lejon të detyroni OOM-killer të rikuperojë një sistem që duket i ngrirë. Për më tepër, daemonë si EarlyOOM, nohang dhe systemd-oomd janë shfaqur pikërisht për të reaguar përpara se bërthama të arrijë në situata ekstreme.

Mjete për monitorimin dhe menaxhimin e kujtesës

Për të shmangur problemet me kujtesën, është thelbësore të përdorni mjetet e duhura. Komanda si free, top, htop, vmstat, ps o sar ofroni një një rreze X shumë e detajuar e gjendjes së sistemit, si në kohë reale ashtu edhe me kalimin e kohës.

Komanda free Shfaq shpejt sasinë totale të memories, memorien e përdorur, memorien e lirë, memorien e përkohshme dhe memorjet e përkohshme, si dhe informacionin e shkëmbimit. Kjo është shumë e dobishme për të kontrolluar nëse ka mungesë memorieje fizike apo nëse pjesa më e madhe e saj është thjesht e ruajtur në memorien e përkohshme dhe mund të ripërdoret pa problem.

Klasikja top dhe varianti i saj i përmirësuar htop Ato ju lejojnë të shihni konsumin e CPU-së dhe të memories për çdo proces, si dhe ngarkesën e sistemit, kohën e funksionimit, përdorimin e shkëmbimit dhe tregues të tjerë në kohë reale. htop ofron një ndërfaqe më miqësore për përdoruesit., me shirita me ngjyra dhe shkurtore tastiere për të renditur, filtruar ose mbyllur shpejt proceset.

Komanda vmstat Ofron një pamje më teknike: statistikat e memories, proceset, faqëzimin, ndërprerjet dhe planifikimin e CPU-së. Është ideal për zbulimin e gabimeve të tepërta të faqes, aktivitetit të lartë të shkëmbimit ose një modeli të humbjes së të dhënave. Ndërkohë, ps Ju lejon të listoni proceset me hollësi të madhe, duke përfshirë kolonat për memorien rezidente (RSS), memorien virtuale (VSZ) dhe parametra të tjerë që ndihmojnë në gjetjen e aplikacioneve që janë "aktivizuar".

Në mjediset Debian ose AlmaLinux, paketa të tilla si sysstat Ato ofrojnë komanda shtesë, të tilla si sar, e cila mundet regjistro përdorimin e memories me kalimin e kohësKjo bën të mundur lidhjen e pikave të larta të konsumit me detyrat e planifikuara, vendosjet ose ngjarjet specifike dhe përshtatjen e konfigurimit të sistemit në përputhje me rrethanat.

Për të inspektuar hartën e memories së një procesi specifik, përveç pmapËshtë gjithmonë një ide e mirë të eksplorosh sistemin pseudo-skedarësh. /procku çdo proces ka direktorinë e vet me informacion të detajuar, duke përfshirë hartën e tij të memories në /proc/<PID>/maps dhe statistikat në /proc/<PID>/smaps.

Optimizimi bazë: shkëmbimi, memorja e përkohshme dhe ndërrimi i të dhënave

Përtej teorisë, ekzistojnë disa veprime të thjeshta praktike për të rregullim i hollësishëm i menaxhimit të memories në Linux pa u çmendur. Një nga gjërat e para që duhet të bëni është të kontrolloni statusin e shkëmbimit me swapon --show Dhe, nëse është e nevojshme, krijoni një skedar shkëmbimi në vend që të mbështeteni vetëm në një ndarje. Kjo ofron fleksibilitet për të rregulluar madhësinë pa pasur nevojë të rindarni disqet.

Parametri vm.swappiness Kjo kontrollon se sa agresivisht e përdor bërthama shkëmbimin (swap) në krahasim me lirimin e memorjes së përkohshme (cache). Një vlerë e lartë e detyron shkëmbimin të përdoret më shpesh; një vlerë e ulët e rezervon shkëmbimin për raste më ekstreme, duke i dhënë përparësi mbajtjes së të dhënave në RAM. Cilësime të tilla si ndërrimi = 10 Ato kanë tendencë të funksionojnë mirë në shumë mjedise desktopi dhe serverash të lehtë, dhe mund të aplikohen përkohësisht me Optimizimi i bërthamës me sysctl ose vazhdimisht në /etc/sysctl.conf.

Në situata shumë specifike ku duam ta pastrojmë manualisht memorien e përkohshme - për shembull, pas një ngarkese intensive leximi që ka përfunduar tashmë - mund të përdorim cilësimin vm.drop_cachesKombinimi sync Dhe duke shkruar një vlerë të përshtatshme (1, 2 ose 3) në atë parametër, kerneli hedh poshtë disa memorje të caktuara. Megjithatë, është më mirë ta përdorni me mençuri, sepse Memoria e përkohshme nuk është "memorie e humbur"por një optimizim i rëndësishëm.

Në shpërndarje si Debian dhe AlmaLinux, është e zakonshme që këto cilësime të plotësohen me një monitorim të mirë të proceseve që kërkojnë shumë burime duke përdorur htop o psIdentifikimi i shërbimeve ose aplikacioneve që "hanë" memorien dhe, nëse është e nevojshme, rikonfigurimi i tyre ose kufizimi i konsumit të tyre.

Krijimi dhe rregullimi i zonës së shkëmbimit është një operacion relativisht i thjeshtë: thjesht rezervoni një skedar me fallocatecaktoni lejet e sakta, inicializoni atë si shkëmbim me mkswap dhe aktivizojeni atë me swaponPër ta bërë ndryshimin të qëndrueshëm, shtohet një hyrje e përshtatshme në /etc/fstab duke treguar që ky skedar do të përdoret si swap në çdo nisje.

  Udhëzues i plotë për analizën e malware-it për të mbrojtur sistemet tuaja

Teknika të avancuara: zram, zswap, cgroupv2 dhe OOM në hapësirën e përdoruesit

Kur duam të shkojmë një hap më tej në optimizim, hyjnë në lojë mekanizma të përparuar si p.sh. zram, zswap y hapësirat e emrave dhe grupet cPërveç daemonëve si EarlyOOM, nohang ose systemd-oomd, të projektuar për të shfrytëzuar sa më shumë memorien dhe për të përmirësuar reagimin e sistemit nën presion.

Zram përdor një modul kernel për të krijuar pajisje blloku të kompresuara në vetë RAM-in. Një hapësirë ​​shkëmbimi mund të montohet sipër këtyre pajisjeve, kështu që faqet kompresohen para se të ruhen. Kjo do të thotë që, në praktikë, shfrytëzoni sa më shumë memorien e disponueshme me koston e një CPU-je për kompresim, dhe eliminon nevojën për të shkruar në disk, megjithëse sakrifikon aftësinë për të kaluar në gjendje letargjie.

Zswap, nga ana e tij, vepron si një memorje e kompresuar në hapësirën aktuale të shkëmbimit në disk. Faqet që do të shkëmbehen fillimisht ruhen të kompresuara në RAM, dhe vetëm kur kjo memorje është e plotë ose vendoset të hiqen, ato shkruhen në hapësirën tradicionale të shkëmbimit. Kjo zvogëlon hyrjet/daljet në disk, zgjat jetëgjatësinë e SSD-ve dhe Përmirëson performancën në situata të përdorimit të moderuar të shkëmbimit.

Në fushën e kontrollit të burimeve, cgroupv2 ofron një mekanizëm të fuqishëm për organizimin e proceseve në hierarki dhe ndarjen e memories, CPU-së dhe burimeve të tjera për to. Kjo arrihet përmes parametrave të tillë si memory.low ose skedarë si memory.pressureMund t’i tregoni bërthamës se cilat grupe kanë përparësi dhe të monitoroni kohën që detyrat kalojnë të bllokuara për shkak të mungesës së memories, duke dalluar nëse problemi ndikon në disa detyra apo në të gjithë grupin.

Në skenarë ku ngrirjet e sistemit duhet të shmangen me çdo kusht, janë shfaqur disa daemonë të hapësirës së përdoruesit për të menaxhuar situatat e OOM në mënyrë më proaktive. EarlyOOM monitoron periodikisht RAM-in dhe shkëmbimin, dhe kur zbulon se të dyja bien nën pragje të caktuara (Si parazgjedhje, më pak se 10% falas për të filluar të veprojë), dërgon sinjale në proceset me më shumë oom_score për të liruar memorien përpara se bërthama të bjerë në panik.

nohang ofron një qasje të ngjashme, por më të konfigurueshme, duke mbështetur zram-in, duke analizuar presionin e memories dhe duke u lejuar përdoruesve të përcaktojnë veprime të personalizuara kur zbulohet një rrezik përplasjeje. Edhe pse projekti ka humbur disa aktivitete krahasuar me të tjerët, ai mbetet një opsion tërheqës për përdoruesit e përparuar që duan kontroll i imët mbi cilat procese sakrifikohen dhe kur.

Së fundmi, systemd-oomd, i zhvilluar fillimisht nga Facebook dhe tani i integruar në shumë shpërndarje me systemd modern, ofron një zgjidhje të projektuar si për vendosje në shkallë të gjerë ashtu edhe për mjedise desktopi. Ai monitoron kufijtë e cgroup, presionin e memories dhe tregues të tjerë, dhe vendos se cilat njësi ose shërbime duhet të ndalen për të rivendosur përdorshmërinë e sistemit, duke funksionuar si një plotësues më i sofistikuar i bërthamës klasike OOM-killer.

Praktika të mira për të shmangur problemet e kujtesës

Në praktikën e përditshme, përtej rregullimit të parametrave specifikë, këshillohet të ndiqni një seri praktikat e mira për të minimizuar frikën në lidhje me memorien në Linux. E para është të përmasoni saktë RAM-in dhe të shkëmbeni atë bazuar në ngarkesën aktuale: bazat e të dhënave, serverët e aplikacioneve, desktopët e rëndë ose ngarkesat e shumëfishta të kontejnerëve kërkojnë më shumë memorie sesa shërbimet e thjeshta.

Në servera, këshillohet të kontrolloni rregullisht se cilat shërbime janë aktive dhe çaktivizoni ose ndaloni ato që nuk janë në përdorimNë mjedise me Docker ose kontejnerë të tjerë, pas përfundimit të testeve ose vendosjeve të përkohshme, këshillohet të pastroni kontejnerët, imazhet dhe vëllimet që nuk nevojiten më, për të parandaluar që proceset e mbetura të konsumojnë në heshtje memorien.

Disqet RAM mund të jenë një mjet i dobishëm për përshpejtimin e llojeve të caktuara të detyrave të përkohshme: një sistem skedarësh përcaktohet në RAM dhe përdoret për të ruajtur në memorje të dhënat e aplikacioneve ose zonat e punës me qarkullim të lartë. Meqenëse ato janë të paqëndrueshme, është e rëndësishme të kuptohet se përmbajtja e tyre humbet pas mbylljes ose rinisjes, por në këmbim ato mund të jenë... dhjetëra herë më i shpejtë se një SSD, diçka shumë interesante për lexim intensiv dhe detyra të përkohshme shkrimi.

Nga pikëpamja e sigurisë, është e rëndësishme të monitorohen portet e hapura dhe të ekspozohen vetëm ato që janë absolutisht të nevojshme. Sulmet e programeve keqdashëse, siç janë kriptomonedhat, shpesh lënë gjurmë në formën e proceseve që konsumojnë sasi të mëdha të CPU-së dhe memories, dhe mund të instalojnë detyra në crontab Për të vazhduar. Rishikimi dhe pastrimi i punëve të dyshimta cron, si dhe mbyllja e portave jo-thelbësore, ndihmon në parandalimin e konsumimit të memories nga proceset e padëshiruara.

Së fundmi, nuk duhet të harrojmë ndikimin e sistemit të skedarëve në performancën e përgjithshme. Opsionet moderne si p.sh. XFS ose Btrfs Ato mund të ofrojnë avantazhe ndaj ext4 në skenarë të caktuar, veçanërisht nën ngarkesa të larta pune ose kur shfrytëzohen veçoritë e përparuara. Çdo rast kërkon testim, por zgjedhja e sistemit të skedarëve ndikon gjithashtu në mënyrën se si menaxhohen meta të dhënat dhe qasja në disk, duke ndikuar indirekt në performancën e perceptuar të sistemit.

Zotërimi i menaxhimit të memories në Linux përfshin të kuptuarit se si ndahen RAM-i, shkëmbimi dhe hapësira e ruajtjes, roli i koncepteve si faqet, memoria e faqes në memorje, presioni i memories dhe përgatitja paraprake (OOM), dhe si të përdoren mjete dhe mekanizma të përparuar si zram, zswap, cgroupv2 dhe systemd-oomd. Me këtë njohuri, është shumë më e lehtë të akordohet çdo makinë - nga një laptop modest deri te një server prodhimi i ngarkuar me shërbime - në mënyrë që memoria të mos jetë më një burim problemesh dhe të bëhet një aleat në arritjen e performancës optimale. sistem i shkathët dhe i qëndrueshëm i përgatitur për t'i bërë ballë ngarkesave maksimale asnjë dramë.

Diagnostikim i avancuar i memories RAM
Artikulli i lidhur:
Diagnostika e avancuar e RAM-it: një udhëzues i plotë për zbulimin e dështimeve reale