- Linux kešatmiņai un lapu kešatmiņai izmanto visu pieejamo RAM, tāpēc maz brīvas atmiņas ne vienmēr nozīmē, ka pastāv problēma.
- Swap, zram/zswap un pareiza vm.swappiness iestatījuma kombinācija ļauj līdzsvarot veiktspēju un stabilitāti.
- cgroup v2, systemd-oomd un tādi rīki kā earlyoom vai nohang nodrošina precīzu atmiņas noslodzes un OOM notikumu kontroli.
- Uzraudzība ar bezmaksas, vmstat, htop, sar vai Glances ir būtiska, lai atklātu vājās vietas un optimizētu atmiņas pārvaldību.

Ja pārvaldāt sistēmas, strādājat ar konteineriem vai uzturat ražošanas serverus, padziļināta atmiņas pārvaldības izpratne operētājsistēmā Linux vairs nav obligāta. Tā ir atšķirība starp serveri, kas bez vilcināšanās tiek galā ar slodzes lēcieniem, un tādu, kas cīnās, pāriet pārslodzes režīmā vai visnepiemērotākajā brīdī izsauc baiso OOM slepkavu.
Linux ir izstrādāts, lai pēc iespējas efektīvāk izmantotu RAM: tas kešatmiņā saglabā failus, saspiež lapas, pārvieto datus uz mijmaiņas serveri un nosaka procesu prioritātes saskaņā ar ļoti precīzām politikām. No malas varētu šķist, ka tas "patērē daudz atmiņas" vai ka "nekad nav brīvas RAM", bet patiesībā tas cenšas nodrošināt maksimālu veiktspēju un stabilitāti . Apskatīsim soli pa solim un ar nelielu "zemas tehnoloģijas" skaidrojumu, kā tas viss darbojas un kā jūs varat to precīzi noregulēt progresīvos veidos.
Pamatjēdzieni un mīti par atmiņu Linux sistēmā

Pirms ķerties pie spēles ar kodola parametriem vai zram pievienošanas, it kā rītdienas nebūtu, ir ieteicams skaidri saprast atmiņas veidus, arhitektūru un to, kā sistēma redz RAM.
Maksimālo fiziskās atmiņas apjomu, ko dators var apstrādāt, nosaka operētājsistēma un procesora arhitektūra. 32 bitu sistēma parasti ir ierobežota līdz 4 GB RAM, savukārt 64 bitu sistēma var viegli apstrādāt desmitiem vai simtiem gigabaitu (teorētiski daudz vairāk, lai gan faktisko ierobežojumu nosaka aparatūra).
Linux sistēmā visa atmiņa tiek pārvaldīta kā virtuālā atmiņa . Tas ietver gan fizisko RAM, gan mijmaiņas atmiņu. RAM nevar "paplašināt", izņemot pievienojot fiziskus moduļus, bet virtuālo atmiņu var paplašināt, izmantojot disku (nodalījumus vai mijmaiņas failus) un tādus uzlabotus mehānismus kā zram vai zswap.
La fiziskā atmiņa (RAM) Tas ir ātrs un dārgs resurss: tur tiek ielādēti procesi, bibliotēkas, failu kešatmiņas, I/O buferi, koplietojamā atmiņa utt. Linux ir ļoti skaidra filozofija: ja ir brīva RAM, labāk to izmantot kā kešatmiņu un paātrināt piekļuvi, nevis atstāt tukšu. Tāpēc tādos rīkos kā free Tas nenozīmē, ka tev ir problēma.
Diska atmiņa ( pastāvīgā krātuve) ir daudz lēnāka. Kamēr RAM reaģē nanosekundēs, pat SSD reaģē mikrosekundēs vai milisekundēs. Tāpēc sistēma cenšas saglabāt bieži izmantotos datus RAM un izmanto disku tikai tad, kad tas ir absolūti nepieciešams: ielādējot izpildāmos failus, lasot neatgriezeniskus datus vai mainot lapas.
Virtuālā atmiņa, lapas un iekšējās kodola struktūras
Virtuālā atmiņa ir mehānisms, ar kuru Linux katram procesam nodrošina savu izolētu un aizsargātu adrešu telpu . Aparatūra un kodols pārveido virtuālās adreses fiziskajās adresēs, izmantojot struktūras, ko sauc par lapu tabulām.
Mazākā atmiņas pārvaldības vienība ir lapa , kuras lielums parasti ir 4 KB. Visa virtuālās atmiņas sistēma griežas ap lapām: tās tiek piešķirtas, atbrīvotas, apmainītas, kešatmiņā saglabātas un atzīmētas ar dažādām atļaujām (tikai lasīšanas, izpildes utt.).
Lapu tabulas ir hierarhiskas struktūras, ko uztur kodols. Tās katra procesa katrai virtuālajai lapai glabā faktiskās fiziskās lapas atrašanās vietu (ja tāda pastāv), tās atļaujas un pašreizējo stāvokli. Šī tulkošana ļauj izolēt procesus, koplietot lapas starp tiem un tieši kartēt failus atmiņā.
Kad process piekļūst derīgai adresei, bet lapa nav gatava piekļuvei, rodas lapas kļūme . Tā var būt neliela (lapa atrodas RAM atmiņā, bet stāvoklī, kas prasa atjaunināšanu) vai dārga (lapa atrodas diskā, mijmaiņas diskā vai failā un ir jāienes RAM atmiņā). Ja lapas kļūmes kļūst biežas, sistēma palēninās, jo tā pavada pārāk daudz laika, lasot no diska.
Lapu kešatmiņa ir kodola uzturētā failu lapu kešatmiņa. Tajā tiek glabāti dati un metadati par failiem un direktorijiem, lai samazinātu piekļuvi diskam. Šis ir viens no iemesliem, kāpēc Linux "šķiet" izmantojam visu RAM: patiesībā tā izmanto atmiņu, ko lietojumprogrammas aktīvi neizmanto, lai paātrinātu piekļuvi diskam.
Atmiņas veidi: failu dublētā, anonīmā un kā tie ir saistīti ar mijmaiņas atmiņu
Linux sistēmā parasti tiek nošķirta failu atmiņa un anonīmā atmiņa . Abas atrodas RAM atmiņā, taču to izcelsme un iespējamā dublēšana diskā atšķiras.
Zvans failu atmiņa Tas ir tas, ko dublē sistēmas faili: izpildāmie binārie faili, koplietotās bibliotēkas, kartētie dati ar mmap no faila utt. Šo atmiņu var atmest un atkārtoti ielādēt no sākotnējā faila, ja nepieciešama vieta.
La anonīma atmiņa Tas ir viss, ko process rezervē un kas nav saistīts ar failu: dinamiskais kaudze, steks, privātie reģioni ar MAP_ANONYMOUSun apgabali, kas tiek kopēti, izmantojot kopēšanu rakstīšanas laikā, veicot fork()Šī atmiņa pastāv tikai RAM atmiņā (vai mijmaiņas atmiņā, ja tā tiek pārvietota), un tās vienīgā iespējamā dublēšana ir tieši šī mijmaiņas vieta.
Kad kodolam ir jāatbrīvo RAM, tas vispirms mēģinās atbrīvot lapas, kuras tas var salikt atkārtoti: parasti lapas no lapu kešatmiņas vai failu dublētajiem reģioniem. Tikai tad, kad vairs nav vietas vai atmiņas spiediens ir ļoti liels, tas sāk pārvietot anonīmo atmiņu uz mijmaiņas atmiņu , kas ir daudz dārgāk, bet dod sistēmai pārtraukumu.
Atmiņas spiediens, sagrābšana un OOM slepkava
Atmiņas spiediens rodas , kad brīvo lappušu skaits nokrītas zem noteiktiem iekšējiem sliekšņiem. Tad kodolam ir pastāvīgi jāstrādā, lai atbrīvotu atmiņu: jāiztīra kešatmiņa, jāieraksta netīrās lapas diskā, jāizdzēš reti izmantotas lapas utt.
Augsts atmiņas noslogojums var radīt ļoti skaidrus simptomus: augstu latentumu tīmekļa pakalpojumos , lēnas grafiskās saskarnes, aizkavētas atbildes no attālinātām sesijām (SSH, VNC, RDP), saraustītu peli, logus, kuru reaģēšanai nepieciešamas sekundes utt. Šajā brīdī sistēma vairāk koncentrējas uz izdzīvošanu, nevis uz noderīga darba veikšanu.
Lapu apvērsums notiek , ja RAM nav pietiekami, lai saglabātu lapas, kuras procesi pastāvīgi izmanto. Kodols sāk nepārtraukti mainīt lapas: tas izņem vienu, lai ievietotu citu, bet pēc tam nekavējoties ir nepieciešama tā, kas tikko tika izmesta. Rezultāts ir lapu kļūmju un diska piekļuves cikls, kas pasliktina veiktspēju.
Ja ir iespējota mijmaiņas funkcija, pārslodze nozīmē, ka anonīmas lapas pārvietojas starp RAM un mijmaiņas vietu, piesātinot disku. Bez mijmaiņas funkcijas problēma pāriet uz failu lapām: tās tiek atkārtoti atmestas un ielādētas no failu sistēmas, kas var padarīt datoru praktiski nelietojamu.
Ja kodols joprojām nevar iegūt brīvu atmiņu, tiek veiktas šādas darbības: Atmiņas trūkuma (OOM) mehānismsKad viss, ko var atmest, saspiest vai apmainīt, ir izsmelts, kodols aprēķina katra procesa rezultātu (oom_scoreun izlemj, kuru upurēt. Šo procesu pabeidz OOM slepkava lai atbrīvotu ievērojamu RAM apjomu un izvairītos no pilnīgas avārijas.
Apmaiņa: kas tas ir, cik daudz jāiegulda un kāpēc tas nav "velns"
Swap atmiņai ir slikta reputācija, daļēji novecojušu padomu un pārāk vienkāršotu apgalvojumu, piemēram, "ja jums ir daudz RAM, jums nav nepieciešama swap atmiņa". Patiesībā swap vieta ir galvenā Linux atmiņas dizaina sastāvdaļa, pat sistēmās ar lielu RAM apjomu.
Swap ir apgabals diskā (nodalījumā vai failā), ko kodols izmanto neaktīvo atmiņas lapu glabāšanai . Tas ļauj atbrīvot RAM procesiem, kuriem tā patiešām ir nepieciešama. Tā nav pati virtuālā atmiņa, bet gan viens no mehānismiem, kas to padara iespējamu.
Bez mijmaiņas servera anonīmām lapām nav kur iet, palielinoties atmiņas spiedienam. Kodols joprojām var paļauties uz kešatmiņu un failu atbalstītām lapām, taču, tiklīdz anonīmā atmiņa kļūst kritiski augsta, tas praktiski ir spiests daudz ātrāk izsaukt OOM slepkavu. Tehniski Linux var darboties bez mijmaiņas servera, taču praksē tas vairumā scenāriju ir nevajadzīgs risks.
Runājot par mijmaiņas vietas izmēru noteikšanu, nav vienas receptes, taču ir daži diezgan pamatoti mūsdienīgi kritēriji atkarībā no mašīnas lomas:
- Serveri bez hibernācijas režīma4–8 GB mijmaiņas atmiņas parasti ir pietiekama kā buferis, pat ar lielu RAM apjomu. Atmiņas ietilpīgiem pakalpojumiem (datubāzēm, virtualizācijai) to var palielināt līdz 1,5 reizēm, bet prioritātei jābūt fiziskās RAM palielināšanai.
- Galddatori bez hibernācijas režīmaAr 16 GB vai vairāk RAM 2–4 GB mijmaiņas atmiņas ir vairāk nekā pietiekami kā drošības tīkls.
- Ierīces ar hibernācijas režīmuApmaiņas vietai (swap space) jābūt vienādai ar RAM vai nedaudz lielākai par to, jo hibernācijas režīmā sistēma tajā ievieto visu atmiņas saturu.
Mijmaiņas vietas izveide ir ļoti elastīga. Varat izmantot atsevišķu nodalījumu vai mijmaiņas failu . Mijmaiņas fails ir ideāli piemērots, ja disks jau ir sadalīts nodalījumos vai vēlaties pielāgot izmēru, nepārkonfigurējot visu sistēmu.
Atmiņas metrika: bezmaksas, vmstat, ps, RSS, PSS un citi
Klasiskie Linux atmiņas pārvaldības rīki var radīt nepareizas interpretācijas, ja nezināt, ko nozīmē katra kolonna. Komanda free -h Tas ir vienkāršākais veids, kā uzreiz redzēt kopējo atmiņu, izmantoto atmiņu, brīvo atmiņu, kešatmiņu un mijmaiņas atmiņu.
Pie izejas no free Ir svarīgi aplūkot rindu, kurā tiek atskaitīti buferi un kešatmiņa, jo šī kolonna norāda procesu faktiski izmantotā atmiņa, neskaitot to, ko kodols izmanto kā kešatmiņu un ko tas var ātri atbrīvot, ja nepieciešams.
ar vmstat -s -S M Jūs iegūsiet detalizētāku kopsavilkumu: kopējā atmiņa, izmantotā atmiņa, brīvā atmiņa, aktīvā atmiņa, dīkstāves atmiņa, mijmaiņas kešatmiņa utt. Varat arī skatīt /proc/meminfo lai detalizēti redzētu katru rādītāju, lai gan rezultāts ir sausāks un mazāk lietotājam draudzīgs.
Lai uzzinātu, kuri procesi visvairāk ietekmē RAM, ps aux parāda kolonnas, piemēram, VSZ (kopējā virtuālā atmiņa, ko process varētu izmantot, ja tas ielādētu visu) un RSS (Rezidentu kopas lielums, faktiskā atmiņa, kas pašlaik atrodas RAM). Piezīme. RSS ietver arī koplietoto bibliotēkas atmiņu, kas tiek skaitīta vairākas reizes, ja to izmanto vairāki procesi.
Šeit stājas spēle PSS (proporcionāls komplekta izmērs)kas sadala koplietoto bibliotēku izmaksas starp procesiem, kas tās izmanto. Lai viegli iegūtu PSS, ir pieejami tādi rīki kā smem, ļoti noderīgi, lai redzētu, kuras lietojumprogrammas patiesībā ir "datu rijēji", neizkropļojot datus koplietoto bibliotēku dēļ.
Atmiņas fragmentācija, kaudze, kaudze un ulimit
Vēl viens mazāk redzams atmiņas pārvaldības aspekts ir fragmentācija . Var runāt par iekšējo fragmentāciju (kad noapaļoti bloki tiek piešķirti 4, 8 vai 16 baitu daudzkārtņos, atstājot nederīgu daļu) un ārējo fragmentāciju (kad brīva atmiņa pastāv, bet ir sadalīta mazos gabalos, kas neļauj izmantot lielu nepārtrauktu piešķiršanu).
Tādās lietojumprogrammās kā Redis dažreiz var būt atšķirības starp sistēmas ziņoto atmiņu (RSS) un atmiņu, ko pati lietotne uzskata par noderīgu (used_memory). Šis attālums parasti lielā mērā ir saistīts ar ārējā fragmentācija, spraugas, kuras sistēma uzskata par aizņemtām, bet process tās faktiski neizmanto.
Procesa atmiņa konceptuāli tiek sadalīta kaudze un kaudzītSteks tiek izmantots lokālajiem mainīgajiem un funkciju izsaukumiem, savukārt kaudze tiek izmantota dinamiskai piešķiršanai. malloc() un līdzīgi. Kad datu struktūras pārsniedz kaudzes ietilpību, tās tiek izvilktas no kaudzes un apstrādātas, izmantojot rādītājus.
Maksimālo kaudzes izmēru katram procesam var pielāgot ar ulimit -a un sistēmas konfigurācijas. Tā samazināšana ierobežo lielu lokālo mainīgo skaitu, savukārt palielināšana ļauj izmantot vairāk mainīgo vai dziļu rekursiju. Šī parametra pielāgošana var palīdzēt labāk kontrolēt atmiņas izmantošanu un samazināt noteiktus fragmentācijas veidus, lai gan tā nav panaceja.
Uzlabota uzraudzība un diagnostika: top, htop, vmstat, sar un citas
Lai atrastu procesus, kas patērē RAM, varat sākt ar top Un, ja vēlaties kaut ko lietotājam draudzīgāku, ar htopPēdējais parāda centrālā procesora, atmiņas un mijmaiņas diska izmantošanas joslas un ļauj interaktīvi kārtot un filtrēt procesus.
Debian un atvasinātajos produktos instalēt htop ar sudo apt install htopAlmaLinux un citās Red Hat līdzīgās sistēmās ar sudo dnf install htopKad esat iekļuvis, varat kārtot pēc atmiņas, meklēt konkrētus procesus un tieši no saskarnes atcelt problemātiskos uzdevumus.
Lai veiktu padziļinātu analīzi un partijveida apstrādi, vmstat 5 Tas sniedz regulāru informāciju par procesiem, atmiņu, lapošanu, bloku I/O, pārtraukumiem un centrālā procesora plānošanu. Tas ir ideāli piemērots, lai redzētu, kā atmiņas noslodze mainās laika gaitā.
Turpinājums sysstat Tas ietver tādus rīkus kā sarkas ļauj reģistrēt un analizēt atmiņas un citu resursu izmantošanu. Piemēram, sar -r 1 5 Tas parāda atmiņas un mijmaiņas servera izmantošanu katru sekundi, piecas reizes. Debian sistēmā tas ir instalēts ar sudo apt install sysstatun AlmaLinux vidē ar sudo dnf install sysstat.
Ja nepieciešama dziļa kodola līmeņa atkļūdošana, bpftrace Tas ir jaudīgs rīks, kura pamatā ir eBPF. Tas ļauj instrumentēt sistēmas izsaukumus, novērot piekļuvi atmiņai un noteikt sastrēgumus bez atkārtotas kompilēšanas vai restartēšanas. Tas parasti tiek instalēts kopā ar sudo apt install bpftrace Debian līdzīgās sistēmās.
Praktiska atmiņas pārvaldība: mijmaiņa, mijmaiņas funkcija un kešatmiņas tīrīšana
Daudzos serveros pamatuzdevums ir pārbaudīt pašreizējais maiņas stāvoklis. Ar swapon --show Jums ir aktīvo mijmaiņas ierīču un failu saraksts, to lielums, veids un prioritāte. Ja jums ir jāpievieno mijmaiņas ierīce acumirklī, varat izveidot failu ar fallocate, drošas atļaujas ar chmod 600, formatējiet to ar mkswap un aktivizējiet to ar swaponLai to padarītu pastāvīgu, vienkārši pievienojiet atbilstošo ierakstu /etc/fstab.
Parametrs vm.swappiness Tas kontrolē, cik viegli kodols piešķir prioritāti mijmaiņas izmantošanai, nevis RAM aizpildīšanas turpināšanai. Tas svārstās no 0 līdz 100. Zemas vērtības (10–20) liek sistēmai izvairīties no mijmaiņas, līdz tas ir absolūti nepieciešams, savukārt augstas vērtības (60 vai vairāk) mudina sistēmu pārvietot lapas uz mijmaiņu ātrāk, lai saglabātu brīvu RAM.
Serveros ar lēniem diskiem vai lielām datubāzēm tas bieži vien ir interesanti samaziniet mainīgumuPiemēram, līdz 10 vai 20, ar sudo sysctl vm.swappiness=10Galddatoriem ar ātru zram vai SSD diskdziņiem starpvērtības, piemēram, 30–60, var nodrošināt labu līdzsvaru starp latentumu un atmiņas izmantošanu.
Labas atmiņas situācijās dažreiz ir nepieciešams piespiest kešatmiņas atbrīvošana ar sudo sync && sudo sysctl -w vm.drop_caches=3Tas iztukšo lielu daļu lapas kešatmiņas un fragmentus. Tas reizēm ir noderīgi testēšanai vai atmiņas atbrīvošanai ļoti ierobežotās sistēmās, taču to nevajadzētu izmantot regulāri, jo tiek zaudēts arī kešatmiņas nodrošinātais veiktspējas uzlabojums.
Uzlaboti vadības rīki: cgroup v2, memory.pressure un OOM lietotāja telpā
Mūsdienu sistēmās, kas izmanto systemd un cgroup v2 , atmiņas pārvaldību var precīzi noregulēt procesu grupas. cgroup v2 organizē uzdevumus hierarhijās un piemēro resursu ierobežojumus un prioritātes (CPU, atmiņa, I/O) grupas līmenī, ne tikai atsevišķu procesu līmenī.
Atmiņas hierarhijā tādi parametri kā memory.low Tie ļauj norādīt, ka noteiktu c grupu atmiņai jābūt vairāk aizsargātai pret globālu spiedienu, savukārt citas var būt vairāk tērējamas, ja ir jāatbrīvo RAM.
Fails memory.pressure Tas atklāj ļoti noderīgus rādītājus: cik ilgi šīs cgroup uzdevumi ir bloķēti atmiņas trūkuma dēļ, 10, 60 un 300 sekunžu intervālos. Variants daži Tas norāda, vai vismaz viens uzdevums ir aizkavējies, un Pilns Tas atspoguļo brīžus, kad visi grupas uzdevumi tika ietekmēti vienlaicīgi.
Papildus kodola OOM killer ir parādījušies lietotāja telpas risinājumi, piemēram agrīnā istaba, nohang o systemd-oomdEarlyOOM uzrauga RAM un mijmaiņas disku, un, kad tie nokrītas zem noteiktiem sliekšņiem, tas proaktīvi iznīcina procesus. oom_score augstāks, atjaunojot lietojamību pirms iekārtas sasalšanas.
NoHang iet soli tālāk: tas atbalsta vairāk atlases kritēriju , var ņemt vērā atmiņas slodzi un labi integrējas ar uzlabotām konfigurācijām, lai gan tā izstrādē ir bijuši gan kāpumi, gan kritumi. Tikmēr systemd-oomd tieši integrējas ar systemd un cgroup v2, un pašlaik daudzās distribūcijās tā ir vēlamā opcija, lai inteliģentāk un detalizētāk pārvaldītu atmiņas trūkuma situācijas.
Modern Swap: zram, zswap un ierīču prioritātes
Papildus "klasiskajai" disku apmaiņai Linux piedāvā modernus mehānismus, kas ievērojami uzlabo veiktspēju, apvienojot RAM saspiešanu un selektīvu disku izmantošanu.
zram ir kodola modulis, kas izveido blokierīces pašā RAM atmiņā, kur lapas tiek glabātas saspiestā stāvoklī. Tās parasti tiek izmantotas kā īpaši ātras mijmaiņas ierīces: saspiešana un dekompresija patērē zināmu CPU jaudu, bet jūs iegūstat loģiskās atmiņas ietilpību un ievērojami samazināt diska izmantošanu.
Daudzos izplatījumos pietiek ar instalēšanu zram-tools o zram ģenerators un iespējojiet tā pakalpojumu. Piemēram, Debian vidē varat izmantot sudo apt install zram-tools un aktivizējiet zramswap ar systemd. AlmaLinux sistēmā ar sudo dnf install zram-generator un tam atbilstošais pakalpojums.
Savukārt zswap darbojas kā saspiesta kešatmiņa diska mijmaiņas apgabala priekšā . Vispirms tā mēģina saglabāt mijmaiņas lapas saspiestā RAM atmiņā; tikai tad, kad šī kešatmiņa ir pilna vai lapas kļūst neaktīvas, tā raksta faktiskajā mijmaiņas apgabalā. Tas samazina diska ievades/izvades apjomu un pagarina SSD disku kalpošanas laiku, vienlaikus samazinot procesora noslodzi.
Apvienojot vairākas mijmaiņas ierīces (piemēram, zram un diska failu), ir svarīgi pielāgot prioritātes. Ar swapon -p vai opcija pri= en /etc/fstab Jūs norādāt, kura ierīce jāizmanto pirmā. Parasti augsta prioritāte (piemēram, 100) tiek piešķirta zram un zemāka prioritāte (10) diska mijmaiņas atmiņai, lai kodols pilnībā izmantotu saspiesto mijmaiņas vietu RAM atmiņā pirms piekļuves diskam.
Serveriem piemērotā atmiņas pārvaldība: mijmaiņas, pakalpojumi un drošība
Tīmekļa serveros (Apache, Nginx), datubāzēs (MySQL, MariaDB, MongoDB) vai resursu ietilpīgās lietojumprogrammās atmiņa ir kritiski svarīgs resurss. RAM un mijmaiņas konfigurācija tieši nosaka, cik vienlaicīgu pieprasījumu var apstrādāt, pirms sistēma sāk darboties ar grūtībām.
Tādu datubāzu dzinēju kā MongoDB gadījumā ir ļoti svarīgi, lai fiziskā RAM pārsniegtu datubāzes prasības ; pretējā gadījumā tā sāks izmantot mijmaiņas vietu, un veiktspēja strauji samazināsies ievērojamās atšķirības dēļ starp piekļuvi RAM un piekļuvi diskam. Tas pats attiecas uz MySQL/MariaDB, kur tādi rīki kā MySQLTuner iesaka atmiņas parametrus, pamatojoties uz pieejamo RAM.
Lai netērētu daudz atmiņas, ieteicams apturēt neizmantotos pakalpojumus un iztīrīt konteinerus, attēlus un Docker sējumus, kas vairs nav nepieciešami. Izstrādes un kvalitātes nodrošināšanas vidēs ir ļoti viegli uzkrāt aizmirstus resursus, kas, nevienam nepamanot, zog gigabaitus RAM un diska vietas.
Arī drošībai ir sava loma: nevajadzīgas ostas atvērtas Tie palielina uzbrukuma virsmu. Ļaunprogrammatūra, kurai izdodas iekļūt sistēmā, var, piemēram, palaist ieguves procesus, kas patērē centrālo procesoru un atmiņu, ieplānot uzdevumus crontab un izraisīt sistēmas avāriju. Ienākošo un izejošo portu pārbaude, visa nevajadzīgā aizvēršana un aizdomīgu cron uzdevumu tīrīšana ir daļa no pamata sistēmas higiēnas, kas arī aizsargā atmiņas resursus.
Atmiņas un failu sistēmas: ext4, XFS, Btrfs un žurnāli
Lai gan tas var šķist atsevišķs jautājums, failu sistēmas izvēle un tās konfigurācija ietekmē arī atmiņas darbību un I/O slodzi. Piemēram, Ext4 izmanto žurnālu, kas atkarībā no slodzes var radīt papildu slodzi diskam un līdz ar to arī kešatmiņas pārvaldībai.
Prasīgās serveru vidēs daudzi administratori izvēlas XFS vai pat Btrfs . XFS parasti ļoti labi darbojas ar lieliem failiem un augstas veiktspējas sistēmām. Btrfs piedāvā uzlabotas funkcijas, piemēram, momentuzņēmumus, caurspīdīgu saspiešanu un apakšsējumus, taču tas ir nedaudz sarežģīts un atkarībā no versijas un izplatīšanas var sasniegt brieduma līmeni, par kuru joprojām notiek diskusijas attiecībā uz visām darba slodzēm.
Kodols pielāgo savu kešatmiņas un norakstīšanas politiku failu sistēmas raksturlielumiem, tāpēc pāreja no ext4 uz XFS vai Btrfs ietekmē ne tikai neapstrādāto I/O, bet arī to, kā RAM un lapas kešatmiņa tiek izmantota lasīšanas un rakstīšanas operāciju buferēšanai.
Būtiski grafiskie rīki un utilītas administratoriem
Lai gan terminālis joprojām ir jebkura administratora Šveices armijas nazis, ir rīki, kas ievērojami atvieglo atmiņas un resursu pārvaldību . Viens no tiem ir Glances — reāllaika monitors, kas vienā ekrānā parāda procesora, atmiņas, diska, tīkla un procesu datus, ar papildu tīmekļa saskarni vairāku serveru uzraudzībai no pārlūkprogrammas.
Lai ātri instalētu Debian, vienkārši... sudo apt install glancesSkatieni ļoti labi papildina htop, vmstat y sar, sniedzot vizuālāku pārskatu par to, kā sistēma darbojas slodzes apstākļos.
Grafiskās serveru administrēšanas jomā Cockpit piedāvā lietotājam draudzīgu tīmekļa saskarni atmiņas, procesu un pakalpojumu uzraudzībai . Tas ļauj pārvaldīt vairākus serverus no vienas konsoles, startēt un apturēt systemd vienības, uzraudzīt mijmaiņas un zram izmantošanu un pārskatīt žurnālus, neizejot no pārlūkprogrammas.
Darbvirsmu sistēmās daudzi distribūcijas integrē savu resursu monitoru, taču vidēs bez GUI vai kur vēlaties kaut ko vieglu, šo konsoles rīku apvienošana ar pielāgotiem skriptiem sniedz lielisku pārskatu par to, kas notiek ar atmiņu jebkurā laikā.
Pareiza atmiņas pārvaldība operētājsistēmā Linux ietver izpratni par to, kā kodols izmanto RAM, swap, zram un zswap lomas, kā cgroup v2 un dažādie OOM reaģē uz spiedienu, un kādi rīki ir pieejami sistēmas uzraudzībai un precīzai noregulēšanai. Apvienojot visas šīs daļas — sākot no free, vmstat, PSS un memory.pressure līdz zram, swappiness un systemd-oomd —, jūs pārstājat cīnīties ar "Linux patērējošo RAM" un sākat iegūt precīzi noregulētu, stabilu sistēmu, kas spēj maksimāli palielināt aparatūras veiktspēju jebkurā lomā: serverī, darbvirsmā vai augstas noslodzes vidē.
Indekss
- 1 Pamatjēdzieni un mīti par atmiņu Linux sistēmā
- 2 Virtuālā atmiņa, lapas un iekšējās kodola struktūras
- 3 Atmiņas veidi: failu dublētā, anonīmā un kā tie ir saistīti ar mijmaiņas atmiņu
- 4 Atmiņas spiediens, sagrābšana un OOM slepkava
- 5 Apmaiņa: kas tas ir, cik daudz jāiegulda un kāpēc tas nav "velns"
- 6 Atmiņas metrika: bezmaksas, vmstat, ps, RSS, PSS un citi
- 7 Atmiņas fragmentācija, kaudze, kaudze un ulimit
- 8 Uzlabota uzraudzība un diagnostika: top, htop, vmstat, sar un citas
- 9 Praktiska atmiņas pārvaldība: mijmaiņa, mijmaiņas funkcija un kešatmiņas tīrīšana
- 10 Uzlaboti vadības rīki: cgroup v2, memory.pressure un OOM lietotāja telpā
- 11 Modern Swap: zram, zswap un ierīču prioritātes
- 12 Serveriem piemērotā atmiņas pārvaldība: mijmaiņas, pakalpojumi un drošība
- 13 Atmiņas un failu sistēmas: ext4, XFS, Btrfs un žurnāli
- 14 Būtiski grafiskie rīki un utilītas administratoriem