Advanced Linux Memory Management: Isang Kumpleto at Praktikal na Gabay

Huling pag-update: 19 Abril 2026
May-akda: TecnoDigital
  • Ginagamit ng Linux ang lahat ng magagamit na RAM para sa mga cache at page cache, kaya ang kaunting libreng memorya ay hindi nangangahulugang may problema.
  • Ang kombinasyon ng swap, zram/zswap at wastong setting ng vm.swappiness ay nagbibigay-daan sa iyong balansehin ang performance at stability.
  • Ang cgroup v2, systemd-oomd at mga tool tulad ng earlyoom o nohang ay nagbibigay ng mahusay na kontrol sa memory pressure at mga OOM event.
  • Ang pagsubaybay gamit ang free, vmstat, htop, sar o Glances ay susi sa pagtuklas ng mga bottleneck at pag-optimize ng pamamahala ng memorya.

Mas mataas na pamamahala ng memorya ng Linux

Kung namamahala ka ng mga sistema, gumagamit ng mga container, o nagpapanatili ng mga production server, hindi na opsyonal ang masusing pag-unawa sa pamamahala ng memorya sa Linux . Ito ang pagkakaiba sa pagitan ng isang server na humahawak ng mga pagtaas ng load nang hindi natitinag at isa na nahihirapan, pumapasok sa thrashing mode, o nauuwi sa pagtawag sa kinatatakutang OOM killer sa pinakamasamang posibleng sandali.

Dinisenyo ang Linux upang gamitin ang RAM nang mahusay hangga't maaari: nag-cache ito ng mga file, nagko-compress ng mga pahina, naglilipat ng data sa swap, at inuuna ang mga proseso ayon sa mga napaka-tumpak na patakaran. Mula sa labas, maaaring mukhang "kumukonsumo ito ng maraming memorya" o "wala talagang libreng RAM," ngunit sa katotohanan, sinusubukan nitong maghatid ng pinakamataas na pagganap at katatagan . Tingnan natin, hakbang-hakbang at may kaunting "mababang-teknolohiya" na paliwanag, kung paano gumagana ang lahat ng ito at kung paano mo ito mapapaganda sa mga advanced na paraan.

Mga pangunahing konsepto at mito tungkol sa memorya sa Linux

Mga konsepto ng memorya sa Linux

Bago ka mag-alala tungkol sa mga parameter ng kernel o mag-mount ng zram na parang wala nang bukas, mainam na magkaroon muna ng ilang malinaw na ideya tungkol sa mga uri ng memorya, arkitektura, at kung paano nakikita ng sistema ang RAM.

Ang pinakamataas na dami ng pisikal na memorya na kayang hawakan ng isang computer ay natutukoy ng arkitektura ng operating system at processor. Ang isang 32-bit system ay karaniwang limitado sa 4 GB ng RAM, habang ang isang 64-bit system ay madaling kayang humawak ng sampu o daan-daang gigabytes (sa teorya, mas marami pa, bagaman ang aktwal na limitasyon ay ipinapataw ng hardware).

Sa Linux, lahat ng memorya ay pinamamahalaan bilang virtual memory . Kabilang dito ang parehong pisikal na RAM at swap space. Ang RAM ay hindi maaaring "mapalawak" maliban sa pamamagitan ng pagdaragdag ng mga pisikal na module, ngunit ang virtual memory ay maaaring palawakin gamit ang disk (mga partisyon o swap file) at mga advanced na mekanismo tulad ng zram o zswap.

La pisikal na memorya (RAM) Ito ang mabilis at magastos na mapagkukunan: doon nilo-load ang mga proseso, library, file cache, I/O buffer, shared memory, atbp.. Ang Linux ay may napakalinaw na pilosopiya: kung mayroong libreng RAM, mas mainam na gamitin ito bilang cache at pabilisin ang mga access kaysa iwan itong walang laman. Kaya naman kakaunti ang "libreng" memorya na nakikita sa mga tool tulad ng free Hindi ibig sabihin na may problema ka.

Mas mabagal ang memorya ng disk ( permanent storage). Bagama't tumutugon ang RAM sa loob ng nanoseconds, kahit ang SSD ay tumutugon sa loob ng microseconds o milliseconds. Kaya naman sinusubukan ng system na panatilihin ang madalas gamiting data sa RAM at bumabaling lamang sa disk kung talagang kinakailangan: paglo-load ng mga executable file, pagbabasa ng cold data, o pagpapalit ng mga pahina.

Virtual memory, mga pahina, at mga panloob na istruktura ng kernel

Ang virtual memory ay ang mekanismo kung saan ang Linux ay nagbibigay sa bawat proseso ng sarili nitong nakahiwalay at protektadong espasyo ng address . Isinasalin ng hardware at kernel ang mga virtual address sa mga pisikal na address sa pamamagitan ng mga istrukturang tinatawag na mga page table.

Ang pinakamaliit na yunit na ginagamit upang pamahalaan ang memorya ay ang pahina , karaniwang 4 KB. Ang buong sistema ng virtual memory ay umiikot sa mga pahina: ang mga ito ay inilalaan, pinapalaya, pinapalitan, ini-cache, at minarkahan ng iba't ibang mga pahintulot (read-only, execute, atbp.).

Ang mga page table ay mga hierarchical na istruktura na pinapanatili ng kernel. Iniimbak nila, para sa bawat virtual na pahina ng bawat proseso, ang lokasyon ng aktwal na pisikal na pahina (kung mayroon man), ang mga pahintulot nito, at ang kasalukuyang estado nito. Ang pagsasaling ito ay nagbibigay-daan sa mga proseso na ihiwalay, ang mga pahina ay maibahagi sa pagitan nila, at ang mga file ay direktang maimapa sa memorya.

Kapag ang isang proseso ay nag-access sa isang wastong address, ngunit ang pahina ay hindi pa handa para sa pag-access, nangyayari ang isang page fault . Maaari itong maging magaan (ang pahina ay nasa RAM ngunit nasa isang estado na nangangailangan ng pag-update) o mahal (ang pahina ay nasa disk, nasa swap, o nasa isang file, at dapat dalhin sa RAM). Kung ang mga page fault ay nagiging madalas, ang sistema ay bumabagal dahil gumugugol ito ng masyadong maraming oras sa pagbabasa mula sa disk.

Ang page cache ay ang cache ng mga pahina ng file na pinapanatili ng kernel. Nag-iimbak ito ng data at metadata para sa mga file at direktoryo upang mabawasan ang pag-access sa disk. Ito ang isa sa mga dahilan kung bakit "tila" ginagamit ng Linux ang lahat ng RAM: sa katotohanan, ginagamit nito ang memorya na hindi aktibong ginagamit ng mga application upang mapabilis ang pag-access sa disk.

Mga uri ng memorya: file-backed, anonymous, at kung paano ito nauugnay sa swap

Sa Linux, karaniwang may pagkakaiba sa pagitan ng file memory at anonymous memory . Parehong nasa RAM ang mga ito, ngunit magkaiba ang kanilang pinagmulan at posibleng pag-backup sa disk.

Ang tawag memorya ng file Ito ang bina-backup ng mga system file: mga executable binary, shared libraries, mapped data gamit ang mmap mula sa isang file, atbp. Ang memoryang iyon ay maaaring itapon at i-reload mula sa orihinal na file kung kinakailangan ng espasyo.

La hindi nagpapakilalang memorya Ito ang lahat ng inilalaan ng proseso na hindi nakatali sa isang file: ang dynamic heap, ang stack, mga pribadong rehiyon na may MAP_ANONYMOUSat ang mga bahaging kinopya ng copy-on-write kapag ginagawa fork()Ang memoryang ito ay umiiral lamang sa RAM (o sa swap, kung ito ay inilipat) at ang tanging posibleng backup nito ay ang swap space na iyon mismo.

Kapag kailangang magbakante ng RAM ang kernel, susubukan muna nitong maglabas ng mga pahina na maaari nitong muling buuin: kadalasan, mga pahina mula sa cache ng pahina o mga rehiyon na naka-back up sa file. Kapag wala nang espasyo o napakataas ng pressure ng memorya, saka lamang nito sisimulang itulak ang anonymous memory sa swap , na mas mahal ngunit nagbibigay ng pahinga sa sistema.

  Pag-optimize ng pagganap sa mga multiplatform system

Presyon ng memorya, pag-thrash, at OOM killer

Nangyayari ang pressure sa memorya kapag ang bilang ng mga libreng pahina ay bumaba sa ilang partikular na panloob na limitasyon. Ang kernel ay napipilitang patuloy na magtrabaho upang magbakante ng memorya: paglilinis ng mga cache, pagsusulat ng mga maruruming pahina sa disk, pag-alis ng mga pahinang hindi madalang gamitin, at iba pa.

Ang mataas na presyon ng memorya ay maaaring magdulot ng napakalinaw na mga sintomas: mataas na latency sa mga serbisyo sa web , mabagal na mga graphical interface, naantalang mga tugon mula sa mga malayuang sesyon (SSH, VNC, RDP), putol-putol na mouse, mga bintana na inaabot ng ilang segundo bago mag-react, atbp. Sa puntong iyon, ang sistema ay mas nakatuon sa kaligtasan kaysa sa paggawa ng kapaki-pakinabang na trabaho.

Nangyayari ang thrashing kapag ang RAM ay hindi sapat upang hawakan ang mga pahinang patuloy na ginagamit ng mga proseso. Ang kernel ay nagsisimulang magpalitan ng mga pahina nang tuluy-tuloy: inaalis nito ang isa upang maglagay ng isa pa, ngunit pagkatapos ay agad na kailangan ang isa na kakaalis lang nito. Ang resulta ay isang siklo ng mga pagkakamali sa pahina at mga pag-access sa disk na nagpapababa sa pagganap.

Kapag naka-enable ang swap, ang thrashing ay nangangahulugan na ang mga anonymous na pahina ay gumagalaw pabalik-balik sa pagitan ng RAM at swap space, na siyang pumupuno sa disk. Kung walang swap, ang problema ay lilipat sa mga pahina ng file: ang mga ito ay itinatapon at paulit-ulit na nire-reload mula sa file system, na maaari ring maging dahilan upang halos hindi magamit ang makina.

Kung ang kernel ay hindi pa rin makakuha ng libreng memorya, ang mga sumusunod ay papasok sa proseso: Mekanismo ng Out-of-Memory (OOM)Kapag naubos na ang lahat ng maaaring ihulog, isiksik, o ipalit, kinakalkula ng kernel ang isang marka para sa bawat proseso (oom_scoreat nagpapasya kung alin ang isasakripisyo. Ang prosesong iyon ay kinukumpleto ng Mamamatay-tao sa OOM para magbakante ng malaking halaga ng RAM at maiwasan ang ganap na pag-crash.

Pagpalit: ano ito, gaano karami ang ilalagay at bakit hindi ito "ang diyablo"

May masamang reputasyon ang swap memory, bahagyang dahil sa mga lumang payo at labis na pagpapasimple tulad ng "kung marami kang RAM, hindi mo na kailangan ng swap." Sa katotohanan, ang swap space ay isang mahalagang bahagi ng disenyo ng memorya ng Linux, kahit na sa mga system na may maraming RAM.

Ang swap ay isang lugar sa disk (partition o file) na ginagamit ng kernel upang mag-imbak ng mga hindi aktibong pahina ng memorya . Pinapayagan nito itong magbakante ng RAM para sa mga prosesong talagang nangangailangan nito. Hindi ito mismo ang virtual memory, kundi isa sa mga mekanismo na nagpapangyari nito.

Kung walang swap, walang patutunguhan ang mga anonymous na pahina kapag tumataas ang pressure ng memorya. Maaari pa ring umasa ang kernel sa mga cache at mga file-backed na pahina, ngunit sa sandaling maging kritikal ang taas ng anonymous na memorya, halos mapipilitan itong gamitin ang OOM killer nang mas maaga. Sa teknikal na aspeto, maaaring gumana ang Linux nang walang swap, ngunit sa pagsasagawa, ito ay isang hindi kinakailangang panganib sa karamihan ng mga sitwasyon.

Pagdating sa pagsukat ng espasyo para sa pagpapalit, walang iisang paraan, ngunit may ilang makatwirang modernong pamantayan depende sa tungkulin ng makina:

  • Mga server na walang hibernationKaraniwang sapat na ang 4-8 GB na swap space bilang buffer, kahit na may maraming RAM. Para sa mga serbisyong masinsinang gumagamit ng memorya (mga database, virtualization), maaari mo itong dagdagan sa 1,5 beses na mas malaki kaysa sa RAM, ngunit ang dapat na prayoridad ay ang pagpapataas ng pisikal na RAM.
  • Mga desktop na walang hibernationSa 16 GB o higit pang RAM, ang 2-4 GB na swap ay higit pa sa sapat bilang panlaban.
  • Mga device na pinapagana ng hibernationAng espasyo ng swap ay dapat na katumbas o bahagyang mas malaki kaysa sa RAM, dahil itinatapon ng system ang lahat ng nilalaman ng memorya dito kapag nag-hibernate.

Napaka-flexible ng paggawa ng swap space. Maaari kang gumamit ng nakalaang partition o swap file . Mainam ang swap file kapag naka-partition na ang iyong disk o gusto mong isaayos ang laki nang hindi nire-configure ang buong system.

Mga sukatan ng memorya: libre, vmstat, ps, RSS, PSS at marami pang iba

Ang mga klasikong tool sa pamamahala ng memorya ng Linux ay maaaring humantong sa mga maling interpretasyon kung hindi mo alam ang ibig sabihin ng bawat kolum. Ang utos free -h Ito ang pinakasimpleng paraan upang makita sa isang sulyap ang kabuuang memorya, nagamit na memorya, libreng memorya, cache at swap.

Sa labasan ng free Mahalagang tingnan ang linyang nagbabawas ng mga buffer at cache, dahil ang kolum na iyon ay nagpapahiwatig ng memorya na aktwal na sinasakop ng mga proseso, hindi kasama ang ginagamit ng kernel bilang cache at kung saan maaari nitong mabilis na ilabas kung kinakailangan.

may vmstat -s -S M Makakakuha ka ng mas detalyadong buod: kabuuang memorya, ginamit na memorya, libreng memorya, aktibong memorya, idle memory, swap cache, atbp. Maaari mo ring konsultahin ang /proc/meminfo para makita nang detalyado ang bawat sukatan, bagama't ang output ay mas tuyo at hindi gaanong madaling gamitin.

Para malaman kung aling mga proseso ang higit na nakakaapekto sa RAM, ps aux nagpapakita ng mga kolum tulad ng VSZ (kabuuang virtual memory na magagamit ng proseso kung ilo-load nito ang lahat) at RSS (Laki ng Itinakda ng Residente, aktwal na memorya na kasalukuyang nasa RAM). Paalala: Kasama rin sa RSS ang memorya ng shared library, na binibilang nang maraming beses kung ginagamit ng maraming proseso.

Narito ang pag-play PSS (Proporsyonal na Laki ng Set)na namamahagi ng halaga ng mga shared library sa mga prosesong gumagamit ng mga ito. Para madaling makuha ang PSS, may mga kagamitan tulad ng smem, lubhang kapaki-pakinabang para makita kung aling mga application ang talagang "mga gumagamit ng datos" nang hindi binabago ang data dahil sa mga shared library.

Pagkapira-piraso ng memorya, stack, heap, at ulimit

Ang isa pang hindi gaanong nakikitang aspeto ng pamamahala ng memorya ay ang fragmentation . Maaari nating pag-usapan ang tungkol sa internal fragmentation (kapag ang mga bilugan na bloke ay inilalaan sa multiple na 4, 8, o 16 na byte, na nag-iiwan ng walang silbing piraso) at external fragmentation (kapag mayroong libreng memorya ngunit nahahati sa maliliit na piraso na pumipigil sa paggamit ng isang malaking magkakasunod na alokasyon).

Sa mga application tulad ng Redis, minsan ay makakakita ka ng mga pagkakaiba sa pagitan ng memory na iniulat ng system (RSS) at ng memory na itinuturing mismo ng app na kapaki-pakinabang (used_memoryAng distansyang ito ay kadalasang dahil sa panlabas na pagkapira-piraso, mga puwang na itinuturing ng sistema na okupado ngunit hindi talaga ginagamit ng proseso.

Ang memorya ng isang proseso ay konseptwal na nahahati sa salansan at buntonAng stack ay ginagamit para sa mga lokal na variable at mga tawag sa function, habang ang heap ay ginagamit para sa mga dynamic na alokasyon. malloc() at mga katulad nito. Kapag ang mga istruktura ng datos ay lumaki nang higit sa kayang hawakan ng stack, ang mga ito ay kinukuha mula sa heap at hinahawakan gamit ang mga pointer.

  Advanced NixOS Linux: Ang deklaratibong distro para sa mga mapanghamong gumagamit

Maaaring isaayos ang pinakamataas na laki ng stack bawat proseso gamit ang ulimit -a at mga konpigurasyon ng sistema. Ang pagbabawas nito ay naglilimita sa bilang ng malalaking lokal na baryabol, habang ang pagtaas nito ay nagbibigay-daan para sa mas maraming baryabol o malalim na recursion. Ang pagsasaayos ng parameter na ito ay makakatulong na mas mahusay na makontrol ang paggamit ng memorya at mabawasan ang ilang uri ng fragmentation, bagaman hindi ito isang panlunas sa lahat.

Advanced na pagsubaybay at mga diagnostic: top, htop, vmstat, sar at higit pa

Para mahanap ang mga prosesong kumukunsumo ng RAM, maaari kang magsimula sa top At kung gusto mo ng mas madaling gamitin, kasama ang htopIpinapakita ng huli ang mga bar ng paggamit ng CPU, memorya, at swap, at nagbibigay-daan para sa interactive na pag-uuri at pag-filter ng mga proseso.

Sa Debian at mga derivatives, i-install ang htop sa sudo apt install htopSa AlmaLinux at iba pang mga sistemang parang Red Hat, kasama ang sudo dnf install htopKapag nasa loob na, maaari kang mag-uri-uri ayon sa memorya, maghanap ng mga partikular na proseso, at patayin ang mga problematikong gawain nang direkta mula sa interface.

Para sa mas malalim na pagsusuri at batch mode, vmstat 5 Nagbibigay ito ng regular na impormasyon tungkol sa mga proseso, memorya, paging, block I/O, mga interrupt, at pag-iiskedyul ng CPU. Ito ay mainam para makita kung paano nagbabago ang presyon ng memorya sa paglipas ng panahon.

Ang pagpapatuloy sysstat Isinasama nito ang mga kagamitan tulad ng sarna nagbibigay-daan sa iyong itala at suriin ang paggamit ng memorya at iba pang mga mapagkukunan. Halimbawa, sar -r 1 5 Ipinapakita nito ang paggamit ng memorya at pagpapalit kada segundo, limang beses. Sa Debian, naka-install ito gamit ang sudo apt install sysstatat sa AlmaLinux kasama ang sudo dnf install sysstat.

Kung kailangan mo ng malalim na pag-debug sa antas ng kernel, bpftrace Ito ay isang makapangyarihang kagamitan batay sa eBPF. Pinapayagan ka nitong i-instrument ang mga system call, obserbahan ang memory access, at tuklasin ang mga bottleneck nang hindi na kailangang i-recompile o i-restart. Karaniwan itong naka-install gamit ang sudo apt install bpftrace sa mga sistemang parang Debian.

Praktikal na pamamahala ng memorya: pagpapalit, pagpapalit, at paglilinis ng cache

Ang isang pangunahing gawain sa maraming server ay ang pagsuri sa kasalukuyang estado ng palitan. May swapon --show Mayroon kang listahan ng mga aktibong swap device at file, ang kanilang laki, uri, at prayoridad. Kung kailangan mong magdagdag ng swap nang mabilisan, maaari kang lumikha ng isang file gamit ang fallocate, kumuha ng mga permit na may chmod 600, i-format ito gamit ang mkswap at i-activate ito gamit ang swaponPara maging persistent ito, idagdag lang ang kaukulang entry sa /etc/fstab.

Parameter vm.swappiness Kinokontrol nito kung gaano kadali inuuna ng kernel ang paggamit ng swap kaysa sa patuloy na pagpuno ng RAM. Ito ay mula 0 hanggang 100. Ang mababang halaga (10-20) ay nagiging sanhi ng pag-iwas ng sistema sa swap hanggang sa talagang kinakailangan, habang ang matataas na halaga (60 o higit pa) ay hinihikayat ang sistema na mas madaling ilipat ang mga pahina sa swap upang mapanatili ang libreng RAM.

Sa mga server na may mabagal na disk o malalaking database, kadalasan itong nakakaakit bawasan ang pagpapalitHalimbawa, hanggang 10 o 20, kasama ang sudo sysctl vm.swappiness=10Para sa mga desktop na may mabilis na zram o SSD, ang mga intermediate na halaga tulad ng 30-60 ay maaaring magbigay ng mahusay na balanse sa pagitan ng latency at paggamit ng memorya.

Sa mga sitwasyon ng maayos na memorya, minsan kinakailangan na pilitin ang paglabas ng cache sa sudo sync && sudo sysctl -w vm.drop_caches=3Nababakante nito ang malaking bahagi ng cache at mga dentry ng pahina. Paminsan-minsan ay kapaki-pakinabang ito para sa pagsubok o pagpapalaya ng memorya sa mga limitadong sistema, ngunit hindi ito dapat gamitin nang palagian dahil nawawala rin ang pagpapabuti ng pagganap na ibinibigay ng caching.

Mga advanced na tool sa pagkontrol: cgroup v2, memory.pressure at OOM sa espasyo ng gumagamit

Sa mga modernong sistemang gumagamit ng systemd at cgroup v2 , ang pamamahala ng memorya ay maaaring pinuhin ng mga grupo ng proseso. Inaayos ng cgroup v2 ang mga gawain sa mga hierarchy at inilalapat ang mga limitasyon at prayoridad ng mapagkukunan (CPU, memorya, I/O) sa antas ng grupo, hindi lamang sa indibidwal na antas ng proseso.

Sa loob ng hirarkiya ng memorya, ang mga parameter tulad ng memory.low Pinapayagan ka ng mga ito na ipahiwatig na ang memorya ng ilang partikular na cgroup ay dapat na mas protektado laban sa pandaigdigang presyur, habang ang iba ay maaaring mas maubos kung kailangang palayain ang RAM.

Ang file memory.pressure Inilalantad nito ang mga kapaki-pakinabang na sukatan: kung gaano katagal na-block ang mga gawain sa cgroup na iyon dahil sa kakulangan ng memorya, sa pagitan ng 10, 60, at 300 segundo. Ang variant ilan Ipinapahiwatig nito kung kahit isang gawain ay naantala, at ganap Sinasalamin nito ang mga sandali kung kailan sabay-sabay na naapektuhan ang lahat ng gawain ng grupo.

Bukod sa OOM killer ng kernel, lumitaw din ang mga solusyon sa user-space tulad ng maaga pa, nohang o systemd-oomdSinusubaybayan ng EarlyOOM ang RAM at swap, at kapag bumaba ang mga ito sa ilang partikular na limitasyon, maagap nitong pinapatay ang mga proseso. oom_score mas mataas, na nagpapanumbalik ng kakayahang magamit bago mag-freeze ang makina.

Mas mataas pa ang hakbang ng NoHang: sinusuportahan nito ang mas maraming pamantayan sa pagpili , kayang isaalang-alang ang pressure ng memorya, at mahusay na nakikisama sa mga advanced na configuration, bagama't nagkaroon ng mga pagtaas at pagbaba ang pag-unlad nito. Samantala, ang systemd-oomd ay direktang nakikisama sa systemd at cgroup v2, at kasalukuyang ang ginustong opsyon sa maraming distribusyon para sa mas matalino at detalyadong pamamahala ng mga sitwasyon na mababa ang memorya.

Modernong Pagpalit: mga prayoridad sa zram, zswap, at device

Bukod sa "klasikong" pagpapalit ng disk, nag-aalok ang Linux ng mga modernong mekanismo na lubos na nagpapabuti sa pagganap sa pamamagitan ng pagsasama ng RAM compression at selective disk usage.

Ang zram ay isang kernel module na lumilikha ng mga block device sa RAM mismo, kung saan ang mga pahina ay nakaimbak sa isang naka-compress na estado. Karaniwang ginagamit ang mga ito bilang mga ultra-fast swap device: ang compression at decompression ay kumokonsumo ng ilang CPU, ngunit nakakakuha ka ng kapasidad ng lohikal na memorya at lubhang binabawasan ang paggamit ng disk.

Sa maraming distribusyon, sapat na ang pag-install mga kagamitang zram o zram-generator at paganahin ang serbisyo nito. Halimbawa, sa Debian maaari mong gamitin ang sudo apt install zram-tools at buhayin zramswap gamit ang systemd. Sa AlmaLinux, gamit ang sudo dnf install zram-generator at ang kaukulang serbisyo nito.

Sa kabilang banda, ang zswap ay gumagana bilang isang naka-compress na cache sa harap ng disk swap . Sinusubukan muna nitong iimbak ang mga napalitang pahina sa naka-compress na RAM; saka lamang ito magsusulat sa aktwal na swap area kapag puno na ang cache na ito o naging hindi aktibo ang mga pahina. Binabawasan nito ang disk I/O at pinapahaba ang habang-buhay ng mga SSD, kapalit ng ilang paggamit ng CPU.

  Mga utos para sa CMD: Ang tiyak na gabay na may mga tip, syntax, at mga halimbawa

Kapag pinagsasama ang maraming swap device (hal., zram at isang disk file), mahalagang isaayos ang prayoridad. May swapon -p o ang pagpipilian pri= en /etc/fstab Ikaw ang magtatakda kung aling device ang dapat unang gamitin. Ang karaniwang gawain ay bigyan ng mataas na prayoridad (halimbawa, 100) ang zram at mas mababang prayoridad (10) ang disk swap, upang lubos na mapakinabangan ng kernel ang naka-compress na swap space sa RAM bago i-access ang disk.

Pamamahala ng memorya na inilapat sa mga server: swap, mga serbisyo at seguridad

Sa mga web server (Apache, Nginx), mga database (MySQL, MariaDB, MongoDB), o mga application na nangangailangan ng maraming resources, ang memorya ang kritikal na resource. Direktang tinutukoy ng RAM at swap configuration kung gaano karaming sabay-sabay na request ang kaya mong hawakan bago pa man magsimulang maghirap ang system.

Sa kaso ng mga database engine tulad ng MongoDB, mahalaga na ang pisikal na RAM ay lumampas sa mga kinakailangan ng database ; kung hindi, magsisimula itong gumamit ng swap space, at ang performance ay bababa dahil sa malaking pagkakaiba sa pagitan ng RAM access at disk access. Ganito rin ang naaangkop sa MySQL/MariaDB, kung saan ang mga tool tulad ng MySQLTuner ay nagrerekomenda ng mga parameter ng memory batay sa available na RAM.

Para maiwasan ang pag-aaksaya ng memorya, ipinapayong ihinto ang mga hindi nagamit na serbisyo at linisin ang mga container, imahe, at mga volume ng Docker na hindi na kailangan. Sa mga kapaligiran ng pag-develop at QA, napakadaling makaipon ng mga nakalimutang resources na nagnanakaw ng mga gigabyte ng RAM at disk space nang hindi napapansin ng sinuman.

Ang seguridad ay gumaganap din ng isang papel: bukas ang mga hindi kinakailangang port Pinapataas nila ang saklaw ng pag-atake. Ang malware na nakakalusot sa isang sistema ay maaaring, halimbawa, maglunsad ng mga proseso ng pagmimina na kumokonsumo ng CPU at memorya, mag-iskedyul ng mga gawain sa crontab at pag-crash ng sistema. Ang pagsuri sa mga papasok at papalabas na port, pagsasara ng lahat ng hindi mahalaga, at paglilinis ng mga kahina-hinalang cron job ay bahagi ng pangunahing kalinisan ng sistema na nagpoprotekta rin sa mga mapagkukunan ng memorya.

Mga sistema ng memorya at file: ext4, XFS, Btrfs at journaling

Bagama't maaaring mukhang hiwalay na isyu ito, ang pagpili ng file system at ang configuration nito ay nakakaimpluwensya rin sa pag-uugali ng memorya at I/O load. Halimbawa, ang Ext4 ay gumagamit ng isang journal na, depende sa load, ay maaaring maglagay ng karagdagang presyon sa disk at, dahil dito, sa pamamahala ng cache.

Sa mga mapanghamong kapaligiran ng server, maraming administrator ang pumipili ng XFS o kahit na Btrfs . Karaniwang mahusay ang pagganap ng XFS sa malalaking file at mga sistemang may mataas na pagganap. Nag-aalok ang Btrfs ng mga advanced na tampok tulad ng mga snapshot, transparent compression, at mga subvolume, sa kapalit ng ilang pagiging kumplikado at, depende sa bersyon at distribusyon, isang antas ng kapanahunan na pinagdedebatihan pa rin para sa lahat ng workload.

Inaangkop ng kernel ang patakaran nito sa caching at write-off sa mga katangian ng file system, kaya ang paglipat mula sa ext4 patungo sa XFS o Btrfs ay hindi lamang nakakaapekto sa raw I/O, kundi pati na rin kung paano ginagamit ang RAM at page cache upang i-buffer ang mga operasyon sa pagbasa at pagsulat.

Mga mahahalagang graphical na tool at utility para sa mga admin

Bagama't nananatiling Swiss Army knife ng sinumang admin ang terminal, may mga tool na nagpapadali sa pamamahala ng memorya at mga mapagkukunan . Isa na rito ang Glances , isang real-time monitor na nagpapakita ng CPU, memorya, disk, network, at mga proseso sa iisang screen, na may opsyonal na web interface para sa pagsubaybay sa maraming server mula sa isang browser.

Para sa mabilis na pag-install sa Debian, kailangan lang... sudo apt install glancesAng mga sulyap ay lubos na tumutugma sa htop, vmstat y sar, na nagbibigay ng mas biswal na pangkalahatang-ideya kung paano kumikilos ang sistema sa ilalim ng load.

Sa larangan ng graphical server administration, nag-aalok ang Cockpit ng user-friendly na web interface para sa pagsubaybay sa memory, mga proseso, at mga serbisyo . Pinapayagan ka nitong pamahalaan ang maraming server mula sa iisang console, simulan at ihinto ang mga systemd unit, subaybayan ang swap at paggamit ng zram, at suriin ang mga log nang hindi umaalis sa iyong browser.

Sa mga desktop system, maraming distro ang nagsasama ng sarili nilang resource monitor, ngunit para sa mga environment na walang GUI o kung saan mo gustong maging magaan ang isang bagay, ang pagsasama-sama ng mga console tool na ito gamit ang mga custom script ay nagbibigay sa iyo ng mahusay na visibility sa kung ano ang nangyayari sa memory sa anumang oras.

Ang wastong pamamahala ng memorya sa Linux ay kinabibilangan ng pag-unawa kung paano ginagamit ng kernel ang RAM, ang mga tungkulin ng swap, zram, at zswap, kung paano tumutugon ang cgroup v2 at ang iba't ibang OOM sa pressure, at kung anong mga tool ang mayroon ka upang masubaybayan at pinuhin ang sistema. Kapag pinagsama-sama mo ang lahat ng mga piraso na ito—mula sa free, vmstat, PSS, at memory.pressure hanggang sa zram, swappiness, at systemd-oomd —hindi ka na mahihirapan sa "Linux consuming RAM" at magsisimula kang magkaroon ng isang mahusay na naka-tune at matatag na sistema na may kakayahang i-maximize ang pagganap ng hardware sa anumang tungkulin: server, desktop, o high-load na kapaligiran.

Mga advanced na diagnostic ng memorya ng RAM
Kaugnay na artikulo:
Mga advanced na diagnostic ng RAM: isang kumpletong gabay sa pagtuklas ng mga totoong pagkabigo