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 desktopë të bazuar në Linux, menaxhimi i memories është një nga faktorët kryesorë që dallon një sistem të shpejtë nga një sistem i ngadaltë. 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ë thelbësore për të parandaluar rrëzimet, rëniet e performancës dhe 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 memorie të përkohshme disku, buffer-e dhe ruajtje të 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ë shenjë e një problemi, por përkundrazi që sistemi po funksionon në mënyrë efikase.

Sasia totale e memories që një kompjuter mund të menaxhojë varet nga arkitektura e sistemit operativ . Një 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 sasi të mëdha (rreth eksabajtësh), 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.

Memoria fizike, domethënë RAM-i i instaluar në kompjuter , është një burim i shtrenjtë, por jashtëzakonisht i shpejtë. Linux-i e përdor atë për ekzekutimin e proceseve, memorjeve të të dhënave në memorje, memories së përbashkët, buffer-ave I/O dhe strukturave të brendshme të kernel-it. Kur proceset nuk e mbushin të gjithë RAM-in, sistemi e mbush boshllëkun me memorje në disk 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ë zgjeruar logjikisht hapësirën e disponueshme , duke u lejuar proceseve të shohin një hapësirë ​​të madhe dhe të vazhdueshme adresash, edhe pse faqet po ripërdoren dhe zhvendosen midis RAM dhe hapësirës së ruajtjes dytësore poshtë saj.

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 hapësirën e vet të adresave të izoluar dhe të mbrojtur , 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ë thelbësore të keni RAM të mjaftueshëm për ngarkesat tipike të punës . Për shembull, një server me baza të dhënash si MongoDB ka nevojë për më shumë memorie fizike sesa 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 do të bjerë ndjeshëm: Qasja në RAM matet në nanosekonda, ndërsa shkëmbimi i diskut funksionon në milisekonda.

Memoria e ndërruar vepron si një zgjatim më i ngadaltë i RAM-it . Kur memoria fizike mbushet plot, Linux mund të zhvendosë faqet e përdorura rrallë në hapësirën e ndërrimit, 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 administrative, lehtësia e menaxhimit dhe kërkesat e letargjisë.

Është e rëndësishme të çmitizohet hapësira e shkëmbimit: nuk është problemi negativ. 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 po bllokohet. E konfiguruar siç duhet, hapësira e shkëmbimit ju lejon të lironi RAM nga faqet anonime joaktive (për shembull, pjesë të memories së procesit që nuk janë përdorur për një kohë të gjatë), duke bërë hapësirë ​​të disponueshme për ngarkesa të reja që kanë nevojë për shpejtësi.

Përveç RAM-it dhe memorjes swap, në lojë hyjnë edhe pajisjet e ruajtjes. Memoria e diskut ruan të dhëna të përhershme që i mbijetojnë rinisjeve dhe ndërprerjeve të energjisë . Ndërsa kompjuteri është i ndezur, shumica e këtyre të dhënave ruhen në memorien e përkohshme (cache) në RAM (page cache) dhe bërthama vendos se cilat faqe të mbajë dhe cilat të heqë 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 përfshin disa komponentë: përdoruesi ose aplikacionet gjenerojnë kërkesa që sistemi i përkthen në akses në memorie dhe disk . Të dhënat e lexuara nga memoria ngarkohen së pari në RAM, ku mund të mbeten në memorien e faqes. Kur kërkohet përsëri, bërthama kontrollon nëse është ruajtur tashmë në memorien e përkohshme, duke shmangur kështu një akses të ri 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 qasje 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ë ruhen, ato shkruhen në disk, por gjatë punës me to, përparësi i jepet ruajtjes së tyre në memorien e shpejtë për të përmirësuar performancën.

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.

  Udhëzues i plotë për PC virtuale dhe virtualizim

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

Çdo proces që funksionon në Linux ka një hartë memorieje ose një paraqitje memorieje që përcakton se si është e organizuar hapësira e adresave të tij: ku ndodhen kodi i ekzekutueshëm, 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.

Kjo hartë zakonisht ndahet në disa segmente të dallueshme. Në fund të hapësirës virtuale, gjejmë segmentin e tekstit (kodin binar të programit), të ndjekur nga segmentet e të dhënave të inicializuara dhe të painicializuara (BSS), pastaj heap-in ku ruhen alokimet dinamike dhe së fundmi pirgu i proceseve në krye. Argumentet dhe mjedisi ndodhen gjithashtu në pjesën e sipërme të hapësirës së adresave.

Segmenti i tekstit përmban udhëzimet e ekzekutueshme të programit dhe ato të bibliotekave të përbashkëta . Normalisht është vetëm për lexim dhe mund të ndahet nga shumë procese që ekzekutojnë të njëjtin skedar binar, duke kursyer kështu memorien fizike. Çdo përpjekje për të shkruar në këtë 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 menaxhimin dinamik të memories, i trajtuar nga komanda si malloc, calloc ose realloc . Kur një program kërkon memorie, menaxheri i memories së përdoruesit e merr atë nga heap; kur e liron atë me free, memoria kthehet në heap, por jo domosdoshmërisht në sistemin operativ, gjë që mund të çojë në fragmentim të brendshëm. Steku është i rezervuar për variablat lokale të funksionit, adresat e kthimit dhe parametrat, dhe rritet ose zvogëlohet me çdo thirrje funksioni dhe kthim.

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ë faqja e memories , zakonisht 4 KiB, megjithëse faqe më të mëdha (faqe të mëdha) janë gjithashtu të disponueshme për ngarkesa të caktuara pune. Të gjitha vendimet e kernelit në lidhje me atë që duhet të zhvendoset, të lirohet ose të ruhet në memorje të përkohshme merren në nivelin e faqes, jo në nivelin individual të bajtit.

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 në lidhje me lejet e leximit, shkrimit dhe ekzekutimit , statusin e faqes (e pranishme në memorie, në shkëmbim, e ndotur, e ndarë, etj.) dhe meta të dhëna të tjera që MMU përdor gjatë përkthimit.

Një defekt 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ë lokalizuar ose krijuar atë faqe . Nëse faqja ndodhet në RAM, por nuk është shënuar siç duhet, kostoja e defektit është e ulët; nëse duhet të merret nga disku (swap ose skedar), kostoja është shumë më e lartë.

Memoria e përkohshme e faqes është një nga sekretet e mëdha pas performancës së mirë të Linux-it. Bërthama ruan të dhënat e skedarëve dhe metadatat në RAM për të shpejtuar leximin dhe shkrimin, duke zvogëluar 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-i është në të vërtetë e disponueshme: bërthama mund të lirojë shpejt hapësirën e përkohshme nëse aplikacionet kanë nevojë për më shumë.

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 të memories . Në këtë skenar, bërthama duhet të shpenzojë më shumë kohë duke gjetur faqe që mund të lirohen, kompaktohen ose zhvendosen për t'u ndërruar, dhe kjo ndikon në performancën e përgjithshme.

Në serverat web, presioni i lartë i memories mund të çojë në rritje të vonesës : punëtorët duhet të presin që faqet të lirohen përpara se të vazhdojnë të përpunojnë kërkesat, dhe CPU shpenzon cikle në detyrat e menaxhimit të memories në vend që të përpunojë ngarkesat. Në desktopë, kjo manifestohet 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, ngecin", vonesa në shtypje dhe, në përgjithësi, një ndërveprim më i ngadaltë. Nëse përdoret gjerësisht edhe shkëmbimi, kjo mund të çojë në një gjendje të ngadaltë , ku sistemi shpenzon më shumë kohë duke zhvendosur faqet midis RAM 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.

  Si të instaloni Linux së bashku me Windows hap pas hapi

Kur kerneli i shteron 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ë grupeve c - ai hyn në një gjendje Out-Of-Memory (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ë shpëtojë 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 në mënyrë të padrejtë. Shumë përdorues besojnë se është diçka që duhet shmangur me çdo kusht ose se ka kuptim vetëm kur RAM është shumë i kufizuar. Megjithatë, në Linux, swap është pjesë e strategjisë së përgjithshme të memories virtuale : i lejon bërthamës të zhvendosë faqet anonime joaktive nga RAM 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ë madhësia e swap-it duhet të jetë 1 deri në 2 herë më e madhe se 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ë swap shumë më i vogël në mënyrë proporcionale, ose edhe të përdoret swap i kompresuar në RAM me teknologji 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.

  Administrimi i Sistemit Linux: Një Udhëzues i Plotë për Administratorët e Sistemit

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 zram, zswap, hapësirat e emrave dhe cgroups , përveç daemonëve si EarlyOOM, nohang ose systemd-oomd, të dizajnuar 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 në këto pajisje, kështu që faqet kompresohen para se të ruhen. Në praktikë, kjo e përdor më mirë memorien e disponueshme në kurriz të kohës së CPU-së për kompresim dhe eliminon nevojën për të shkruar në disk, megjithëse sakrifikon aftësinë për të kaluar në hibernim.

Zswap, nga ana e tij, vepron si një memorje e ngjeshur në memorien e përkohshme (cache) kundrejt hapësirës aktuale të shkëmbimit (swap) në disk. Faqet që do të shkëmbehen fillimisht ruhen të kompresuara në RAM dhe vetëm kur kjo memorie e përkohshme është plot ose faqet fshihen, ato shkruhen në hapësirën tradicionale të shkëmbimit (swap). Kjo zvogëlon hyrjet/daljet në disk, zgjat jetëgjatësinë e SSD-ve dhe përmirëson performancën në situata me përdorim të moderuar të shkëmbimit (swap).

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 të hollësishëm mbi proceset që 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ë përdorimin e përditshëm, përtej rregullimit të parametrave specifikë, këshillohet të ndiqni një sërë praktikash më të mira për të minimizuar problemet që lidhen me memorien në Linux. E para është të madhësisë së saktë të RAM-it dhe shkëmbimit bazuar në ngarkesën aktuale të punës: bazat e të dhënave, serverët e aplikacioneve, mjediset e rënda të desktopit ose ngarkesat e shumëfishta të kontejnerëve kërkojnë më shumë memorie sesa shërbimet e thjeshta.

Në servera, këshillohet të rishikoni rregullisht se cilat shërbime janë duke u ekzekutuar dhe të çaktivizoni ose ndaloni ato që nuk janë në përdorim . Në mjedise me Docker ose kontejnerë të tjerë, pas përfundimit të testeve ose vendosjeve të përkohshme, është një ide e mirë të pastroni kontejnerët, imazhet dhe vëllimet që nuk nevojiten më për të parandaluar që proceset e mbetura të konsumojnë memorie në heshtje.

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 kur kompjuteri fiket ose riniset, por në këmbim, ato mund të jenë dhjetëra herë më të shpejta se një SSD , gjë që është shumë e dobishme për detyra intensive të përkohshme leximi dhe 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, ndikimi i sistemit të skedarëve në performancën e përgjithshme nuk duhet të neglizhohet. Opsionet moderne si XFS ose Btrfs 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 trajtohen meta të dhënat dhe qasja në disk, duke ndikuar indirekt në rrjedhshmërinë 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 OOM-i, dhe si të përdoren mjete dhe mekanizma të përparuar si zram, zswap, cgroupv2 dhe systemd-oomd. Me këtë njohuri, bëhet shumë më e lehtë të akordohet çdo makinë - nga një laptop modest 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 një sistemi të shkathët dhe të qëndrueshëm, të përgatitur për të përballuar ngarkesat maksimale pa probleme.

Diagnostikim i avancuar i memories RAM
Artikuj të ngjashëm:
Diagnostika e avancuar e RAM-it: një udhëzues i plotë për zbulimin e dështimeve reale