GNU/Linux >> Znalost Linux >  >> Linux

Význam řádku buffery/cache ve výstupu free

Řešení 1:

Význam hodnot

První řádek znamená:

  • total :Vaše celková (fyzická) RAM (kromě malé části, kterou si jádro trvale rezervuje pro sebe při spuštění); proto ukazuje cca. 11,7 GiB a ne 12 GiB, které pravděpodobně máte.
  • used :paměť používaná operačním systémem.
  • free :paměť se nepoužívá.

total =used + free

  • shared / buffers / cached :Toto ukazuje využití paměti pro specifické účely, tyto hodnoty jsou zahrnuty v hodnotě used .

Druhý řádek uvádí upravené hodnoty prvního řádku. Poskytuje původní hodnotu used mínus součet buffers+cached a původní hodnotu pro free plus součet buffers+cached , odtud jeho název. Tyto nové hodnoty jsou často smysluplnější než hodnoty v prvním řádku.

Poslední řádek (Swap: ) poskytuje informace o využití odkládacího prostoru (tj. obsahu paměti, který byl dočasně přesunut na disk).

Pozadí

Abyste skutečně pochopili, co čísla znamenají, potřebujete trochu pozadí o subsystému virtuální paměti (VM) v Linuxu. Jen krátká verze:Linux (stejně jako většina moderních OS) se bude vždy snažit použít volnou RAM pro ukládání věcí do mezipaměti, takže Mem: free bude téměř vždy velmi nízká. Proto řádek -/+ buffers/cache: je zobrazeno, protože ukazuje, kolik paměti je volné při ignorování mezipaměti; mezipaměti se uvolní automaticky, pokud dojde k nedostatku paměti, takže na nich vlastně nezáleží.

Systém Linux má opravdu málo paměti, pokud je free hodnotu v -/+ buffers/cache: linka klesá.

Podrobněji o významu čísel viz např. otázky:

  • Jaký je v Linuxu rozdíl mezi „buffery“ a „cache“ hlášenými příkazem free?
  • Proč Red Hat Linux hlásí méně volné paměti v systému, než je skutečně dostupné?

Změny v procps 3.3.10

Všimněte si, že výstup free byl změněn v procps 3.3.10 (vydáno v roce 2014). Nahlášené sloupce jsou nyní "celkem", "použité", "zdarma", "sdílené", "buff/mezipaměť", "dostupné" a význam některých hodnot se změnil, hlavně kvůli lepšímu zohlednění slab cache linuxového jádra.

Viz Debian Bug report #565518 pro motivaci a co dělají změny v free výstup od 14.04 do 16.04 znamená? pro více podrobných informací.

Řešení 2:

Aktuálně přijímaná odpověď z roku 2009 je zastaralá. Je důležité se ujistit, že informace, které dostáváte, jsou správné a odpovídají verzi free (distribuováno v balíčku Debian procps nebo ekvivalent ve vaší distribuci). Je také užitečné podívat se na výstup man free a také man 5 proc , který obsahuje informace o /proc/meminfo , soubor, kde je free získává svá data z Linuxu.

Ve výchozím nastavení free výstup je v kibibajtech (1 kibibajt =1024 bajtů), jak můžete vidět v manuálové stránce. Dávám přednost použití -h argument, který zobrazuje přípony, jako je tento:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       6.1Gi       1.9Gi       301Mi       7.5Gi       8.8Gi
Swap:         979Mi          0B       979Mi

První řádek Mem znamená:

  • total (Mem):celková instalovaná paměť (tj. MemTotal z /proc/meminfo ), to je veškerá paměť v RAM
  • used (Mem):použitá paměť, rovná se total - free - buffers - cache
  • free (Mem):nevyužitá paměť (tj. MemFree ), to je veškerá paměť, která není pro nic využita (dokonce i mezipaměti) v RAM
  • shared (Mem):toto je množství paměti používané hlavně pro tmpfs (Shmem )
  • buff/cache (Mem), součet buffers a cache :
    • buffers :paměť používaná vyrovnávací paměti jádra (Buffers ), což je paměť, kterou může jádro využít
    • cache :paměť používaná mezipamětí stránek a slaby (Cached a SReclaimable ). Mezipaměť stránek obsahuje obsah souborů v souborovém systému uložených v mezipaměti RAM a obecně je dobré, když je toto vysoké číslo. Předpokládám, že „slabs“ jsou podobnou funkcí ukládání do mezipaměti.
  • available (Mem):toto je odhad toho, kolik paměti je k dispozici pro spouštění nových aplikací, bez swapování. Zahrnuje většinu paměti počítané v cache pole (protože mezipaměť stránky lze zahodit za účelem spouštění nových aplikací), ale nepočítá swap (protože je obecně lepší nepoužívat pomalý odkládací prostor).

Druhý řádek je Swap . Toto je moje vysvětlení:

  • total (Swap):toto je celkové množství místa na disku vyhrazené pro swap (SwapTotal v proc/meminfo ). Můžete zkontrolovat, zda se toto shoduje s výstupem swapon -s .
  • used (Swap):množství místa na odkládacím disku, které je aktuálně využíváno. Opět to můžete zkontrolovat porovnáním s výstupem swapon -s
  • free (Swap):množství místa na odkládacím disku, které se aktuálně nevyužívá (SwapFree v /proc/meminfo ). Je roven total (Swap) - used (Swap)

Linux
  1. Jak odstranit vyrovnávací paměti a mezipaměť v Linuxu

  2. Jak zjistit, jakou verzi OS X používám z příkazového řádku?

  3. Linux – sloupec Buffers ve výstupu zdarma?

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

  2. Jak tisknout víceřádkový výstup na stejném řádku?

  3. význam výstupu ps aux

  1. Linux – Jak vyprázdnit vyrovnávací paměti a mezipaměť v systému Linux?

  2. Jaký je v Linuxu rozdíl mezi vyrovnávacími pamětmi a mezipamětí hlášenými příkazem free?

  3. Mohu vytvořit výstup rsync pouze souhrn?