GNU/Linux >> Znalost Linux >  >> Linux

Pochopení souboru /proc/meminfo (Analýza využití paměti v Linuxu)

/proc souborový systém je pseudo souborový systém. Na disku neexistuje. Místo toho jej jádro vytvoří v paměti. Používá se k poskytování informací o systému (původně o procesech, odtud název).
– The ‘/proc/meminfo ' se používá k hlášení množství volné a použité paměti (fyzické i odkládací) v systému a také sdílené paměti a vyrovnávacích pamětí používaných jádrem.
– Souborový systém /proc je podrobněji popsán v manuálová stránka proc (man proc).

Příklad „cat /proc/meminfo“

Výstup příkazu „cat /proc/meminfo“ by se lišil v závislosti na OS a architektuře serveru. Níže uvedená pole se mohou mírně lišit nebo se ve vašem systému nemusí vyskytovat.

# cat /proc/meminfo 
MemTotal:        1882064 kB
MemFree:         1376380 kB
MemAvailable:    1535676 kB
Buffers:            2088 kB
Cached:           292324 kB
SwapCached:            0 kB
Active:           152944 kB
Inactive:         252628 kB
Active(anon):     111328 kB
Inactive(anon):    16508 kB
Active(file):      41616 kB
Inactive(file):   236120 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Dirty:                40 kB
Writeback:             0 kB
AnonPages:        111180 kB
Mapped:            56396 kB
Shmem:             16676 kB
Slab:              54508 kB
SReclaimable:      25456 kB
SUnreclaim:        29052 kB
KernelStack:        2608 kB
PageTables:         5056 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3038180 kB
Committed_AS:     577664 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       14664 kB
VmallocChunk:   34359717628 kB
HardwareCorrupted:     0 kB
AnonHugePages:     24576 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       69632 kB
DirectMap2M:     2027520 kB

Pole

Informace přicházejí ve formě vysokých i nízkých statistik. Nahoře vidíte souhrn nejběžnějších hodnot, na které by se lidé rádi podívali. Níže naleznete jednotlivé hodnoty, které probereme. Nejprve probereme vysoké statistiky.

Statistiky na vysoké úrovni

  • MemTotal :Celková použitelná paměť RAM (tj. fyzická paměť mínus několik vyhrazených bitů a binární kód jádra)
  • MemFree :Je součet LowFree+HighFree (celková statistika)
  • MemShared :0; je zde z důvodů kompatibility, ale vždy nula.
  • Vyrovnávací paměti :Paměť ve vyrovnávací paměti. jako metrika je v dnešní době většinou k ničemu. Relativně dočasné úložiště pro nezpracované diskové bloky by nemělo být extrémně velké (20 MB nebo tak)
  • Uloženo do mezipaměti :Paměť v mezipaměti stránek (diskcache) mínus SwapCache, Nezahrnuje SwapCached
  • SwapCache :Paměť, která byla jednou odložena, je zaměněna zpět, ale stále je také ve swapfile (pokud je paměť potřeba, není nutné ji ZNOVU vyměňovat, protože je již ve swafilu. To šetří I/O )

Podrobné statistiky

1. VM Statistics
VM rozděluje stránky mezipaměti na „aktivní“ a „neaktivní“ paměť. Myšlenka je taková, že pokud potřebujete paměť a je třeba pro to obětovat nějakou mezipaměť, vezmete ji z neaktivní, protože se očekává, že se nebude používat. Vm pravidelně kontroluje, co se používá, a přesouvá věci.

Statistiky jsou:

  • Aktivní :Paměť, která byla používána nedávno a obvykle není regenerována, pokud to není nezbytně nutné.
  • Inact_dirty :Dirty znamená „může potřebovat zápis na disk nebo swap“. Zabere více práce zdarma. Příkladem mohou být soubory, do kterých ještě nebylo zapsáno. Nejsou zapsány do paměti příliš brzy, aby se I/O udržely mimo provoz. Pokud například zapisujete protokoly, může být lepší počkat, až budete mít hotový úplný protokol, než jej odešlete na disk.
  • Inact_clean :Předpokládá se, že lze snadno uvolnit. Jádro se vždy bude snažit udržovat nějaké čisté věci, aby mělo trochu prostoru na dýchání.
  • Inact_target :Pouze cílová metrika, kterou jádro používá k zajištění dostatečného množství neaktivních stránek. Při překročení nebude jádro pracovat na přesunutí stránek z aktivních na neaktivní. Stránka může být neaktivní i několika dalšími způsoby, např. pokud provedete dlouhý sekvenční I/O, jádro předpokládá, že tuto paměť nebudete používat, a preventivně ji deaktivuje. Takže můžete získat více neaktivních stránek než cíl, protože jádro označí nějakou mezipaměť jako „pravděpodobnější, že nebude nikdy použita“ a nechá ji podvádět v pořadí „naposledy použité“.

2. Statistika paměti

  • HighTotal :je celkové množství paměti ve vysoké oblasti. Highmem je veškerá paměť nad (přibližně) 860 MB fyzické RAM. Jádro používá nepřímé triky pro přístup k oblasti vysoké paměti. V této oblasti paměti může být uložena mezipaměť dat.
  • Nízký celkový :Celkové množství jiné než highmem paměti.
  • LowFree :Množství volné paměti v oblasti s nízkou pamětí. Toto je paměť, kterou může jádro adresovat přímo. Všechny datové struktury jádra musí jít do nedostatku paměti.
  • SwapTotal :Celkové množství fyzické odkládací paměti.
  • SwapFree :Celkové množství volné odkládací paměti. Paměť, která byla vyřazena z paměti RAM a je dočasně na disku
  • Špinavý :Paměť, která čeká na zapsání zpět na disk
  • Zpětný zápis :Paměť, která se aktivně zapisuje zpět na disk
  • Namapováno :soubory, které byly namapovány, jako jsou knihovny
  • Deska :mezipaměť datových struktur v jádře
  • Committed_AS :Odhad, kolik RAM byste potřebovali, abyste zajistili 99,99% záruku, že pro toto pracovní zatížení nikdy nebude OOM (nedostatek paměti). Normálně jádro přetíží paměť. To znamená, že řekněme, že uděláte 1GB malloc, nic se nestane, opravdu. Pouze když začnete tuto malloc paměť POUŽÍVAT, získáte skutečnou paměť na vyžádání a přesně tolik, kolik používáte. Takže si vezmete hypotéku a doufáte, že banka nezkrachuje. Jiné případy mohou zahrnovat případy, kdy mmapujete soubor, který je sdílen, pouze když do něj zapisujete, a získáte soukromou kopii těchto dat. Zatímco normálně je sdílen mezi procesy. Committed_AS je odhad toho, kolik RAM/swapu byste v nejhorším případě potřebovali.
  • PageTables :množství paměti vyhrazené pro nejnižší úroveň tabulek stránek.
  • ReverseMaps :počet provedených zpětných mapování
  • VmallocTotal :celková velikost oblasti paměti vmalloc
  • VmallocUsed :množství použité oblasti vmalloc
  • VmallocChunk :největší souvislý blok oblasti vmalloc, který je volný


Linux
  1. Porozumění systému souborů /proc

  2. Pochopení souboru /etc/inittab v Linuxu

  3. Pochopení konfiguračního souboru /etc/profile v Linuxu

  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Jak zaplnit 90 % volné paměti?

  3. Proč se MemTotal v /proc/meminfo mění?

  1. Linux – sloučení /usr/bin A /usr/sbin do /bin (gnu/linux)?

  2. Pochopení souboru /etc/xinetd.conf v Linuxu

  3. Pochopení souboru /etc/hosts v Linuxu