GNU/Linux >> Znalost Linux >  >> Cent OS

Jak vymazat buffer/pagecache (disk cache) v Linuxu

Čelíte problému s výkonem a máte podezření, že by mohl souviset s používáním mezipaměti? Vysoké využití mezipaměti by normálně nemělo způsobovat problémy s výkonem, ale v některých vzácných případech může být hlavní příčinou.

Co je mezipaměť

Aby se urychlily operace a snížily se vstupy a výstupy na disku, jádro obvykle ukládá do mezipaměti tolik, kolik má paměti Podle návrhu lze stránky obsahující data uložená v mezipaměti na vyžádání znovu použít pro jiné použití (např. aplikace). způsob není pomalejší než nárokování si nedotčených nedotčených stránek.

Jaký je účel /proc/sys/vm/drop_caches

Zápis do /proc/sys/vm/drop_caches umožňuje požadovat, aby jádro okamžitě odstranilo co nejvíce čistých dat z mezipaměti. To obvykle povede k tomu, že se určitá paměť stane zjevněji dostupnou; za normálních okolností by to však nemělo být nutné.

Jak vymazat mezipaměť pomocí /proc/sys/vm/drop_caches

Zápis příslušné hodnoty do souboru /proc/sys/vm/drop_caches způsobí, že jádro vypustí čisté mezipaměti, dentry a inody z paměti, což způsobí, že se tato paměť uvolní.

1. Chcete-li vymazat PageCache, spusťte pouze:

# sync; echo 1 > /proc/sys/vm/drop_caches

2. Chcete-li vymazat dentry (také nazývané jako Directory Cache) a inody, spusťte:

# sync; echo 2 > /proc/sys/vm/drop_caches

3. Za účelem vymazání PageCache se dentry a inody spustí:

# sync; echo 3 > /proc/sys/vm/drop_caches

Spuštění synchronizace zapisuje špinavé stránky na disky. Normálně špinavé stránky jsou využívanou pamětí, takže je nelze uvolnit. Spuštění synchronizace tedy může pomoci při následných operacích spouštění a uvolnit více paměti.

Mezipaměť stránky je paměť zadržena po načtení souborů. Linuxové jádro upřednostňuje ponechat nevyužitou mezipaměť stránek za předpokladu, že soubory, které se čte jednou, budou s největší pravděpodobností v blízké budoucnosti přečteny znovu, čímž se zabrání dopadu na výkon na IO disku.

dentry a inode_cache jsou paměť po přečtení atributů adresáře/souboru, jako je open() a stat(). dentry je společný pro všechny systémy souborů, ale inode_cache je na bázi systému souborů. Linuxové jádro upřednostňuje uchování těchto informací za předpokladu, že je bude v blízké budoucnosti znovu potřebovat, čímž se vyhýbá IO disku.

Poznámka :Spuštění příkazem synchronizace, jak je znázorněno ve 3 výše uvedených příkazech, je volitelné. Příkaz sync umožňuje jádru zapsat na disk tolik špinavých stránek mezipaměti, kolik jen může (aby se maximalizoval počet stránek mezipaměti dat, které lze zahodit)

Jak vymazat mezipaměť pomocí sysctl

Vynechání mezipaměti můžete spustit také pomocí sysctl -w vm.drop_caches=[číslo] příkaz.

1. Chcete-li uvolnit pagecache, dentry a inody, použijte níže uvedený příkaz.

sysctl -w vm.drop_caches=3

2. Chcete-li uvolnit pouze dentry a inody, použijte níže uvedený příkaz.

sysctl -w vm.drop_caches=2 

3. Chcete-li uvolnit pouze mezipaměť stránek, použijte níže uvedený příkaz.

sysctl -w vm.drop_caches=1
Poznámka :Použití vm.drop_caches může způsobit uváznutí, pokud je systém pod velkou pamětí a I/O zatížení!!!

„Čistá“ data uložená v mezipaměti lze vypustit. „Špinavá“ data uložená v mezipaměti je třeba někam zapsat. Použití vm.drop_caches nikdy nespustí, aby jádro zahodilo špinavou mezipaměť.


Cent OS
  1. Jak zjistit, zda je disk SSD nebo HDD v Linuxu

  2. Linux – Jak dát Ram do mezipaměti souborového systému?

  3. Jak vymazat buffer/pagecache (disk cache) v Linuxu

  1. Jak vymazat mezipaměť webového prohlížeče z příkazového řádku v Linuxu

  2. Jaký je rozdíl mezi vyrovnávací pamětí a mezipamětí v Linuxu?

  3. Jak zjistit velikost vyrovnávací paměti soketu linuxu

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

  2. Jak vymazat mezipaměť v Linuxu

  3. Jak vymažu mezipaměť ve Firefoxu?