Articles

jak vymazat mezipaměť v systému Linux

mezipaměť systému souborů linux (mezipaměť stránky) se používá k urychlení operací IO. Za určitých okolností může správce nebo vývojář chtít mezipaměť ručně vymazat. V tomto článku vysvětlíme, jak funguje mezipaměť souborového systému Linux. Poté si ukážeme, jak sledovat využití mezipaměti a jak vymazat mezipaměť. Provedeme několik jednoduchých výkonnostních experimentů, abychom ověřili, že mezipaměť funguje podle očekávání a že postup pro vyprázdnění a vymazání mezipaměti funguje také podle očekávání.

Jak Linux File System Cache Funguje

jádro si vyhrazuje určité množství systémové paměti pro ukládání do mezipaměti systému souborů disku přistupuje tak, aby celkový výkon rychleji. Mezipaměť v Linuxu se nazývá mezipaměť stránky. Velikost stránky v mezipaměti je konfigurovatelný s velkorysým výchozí nastavení povoleno do mezipaměti velké množství diskové bloky. Maximální velikost mezipaměti a zásady, kdy vystěhovat data z mezipaměti jsou nastavitelné s parametry jádra. Přístup k mezipaměti Linuxu se nazývá mezipaměť zpětného zápisu. To znamená, že pokud jsou data zapsána na disk, jsou zapsána do paměti do mezipaměti a označena jako špinavá v mezipaměti, dokud nejsou synchronizována s diskem. Jádro udržuje vnitřní datové struktury, aby optimalizovalo, která data se mají vystěhovat z mezipaměti, když je v mezipaměti potřeba více místa.

V Linuxu číst systémová volání, jádro zkontroluje, zda požadované údaje jsou uloženy v blocích dat ve vyrovnávací paměti, to by bylo úspěšné cache hit a data budou vrácena z mezipaměti, aniž by dělali nějaké IO systému disku. Pro mezipaměť chybět data budou načteny z IO systému a cache aktualizován na základě zásad ukládání do mezipaměti, protože tato stejná data je pravděpodobné, že bude znovu požadováno.

když jsou dosaženy určité prahové hodnoty využití paměti, úkoly na pozadí začnou zapisovat špinavá data na disk, aby se zajistilo vymazání mezipaměti paměti. Ty mohou mít vliv na výkon aplikací náročných na paměť a CPU a vyžadují ladění administrátory nebo vývojáři.

pomocí příkazu Free pro zobrazení využití mezipaměti

můžeme použít příkaz free z příkazového řádku, abychom analyzovali systémovou paměť a množství paměti přidělené do mezipaměti. Viz příkaz níže:

# free -m

to, Co vidíme z volného příkaz výše, je, že tam je 7,5 GB RAM na tento systém. Z toho se používá pouze 209 MB a 6,5 MB je zdarma. V vyrovnávací paměti se používá 667 MB. Nyní se pokusíme toto číslo zvýšit spuštěním příkazu pro vygenerování souboru 1 gigabajt a přečtením souboru. Příkaz níže vygeneruje přibližně 100 MB náhodných dat a poté připojí 10 kopií souboru do jednoho velkého souboru.

# dd if=/dev/random of=/root/data_file count=1400000
# for i in `seq 1 10`; do echo $i; cat data_file >> large_file; udělal

Teď jsme se ujistěte se, že číst to 1 Koncert souboru a potom zkontrolujte volné příkaz znovu:

# cat large_file > /dev/null
# free -m

Můžeme vidět, vyrovnávací paměti cache využití zvýšil z 667 na 1735 Mb zhruba 1 Gigabyte zvýšení využití vyrovnávací paměti cache.

proc Sys VM Drop cache příkaz

linuxové jádro poskytuje rozhraní pro vypuštění mezipaměti vyzkoušejte tyto příkazy a podívejte se na dopad na volné nastavení.

# echo 1 > /proc/sys/vm/drop_caches
# free -m

můžeme vidět výše, že většina z buffer cache rozdělení byl propuštěn s tímto příkazem.

experimentální ověření, že Drop cache funguje

můžeme provést ověření výkonu pomocí mezipaměti ke čtení souboru? Pojďme si přečíst soubor a zapsat jej zpět do /dev / null, abychom otestovali, jak dlouho trvá čtení souboru z disku. Budeme to načasovat příkazem time. Tento příkaz provedeme ihned po vymazání mezipaměti pomocí výše uvedených příkazů.

čtení souboru trvalo 8,4 sekundy. Pojďme si to přečíst znovu, když by měl být soubor v mezipaměti souborového systému a uvidíme, jak dlouho to teď trvá.

Boom! Trvalo to jen .2 sekundy ve srovnání s 8.4 sekund číst, když soubor nebyl uložen do mezipaměti. Chcete-li ověřit, zopakujme to znovu tím, že nejprve vymažeme mezipaměť a poté přečteme soubor 2krát.

fungovalo to perfektně podle očekávání. 8.5 sekund pro čtení bez mezipaměti a .2 sekundy pro čtení v mezipaměti.

závěr

mezipaměť stránky je automaticky povolena v systémech Linux a transparentně urychlí IO ukládáním nedávno použitých dat do mezipaměti. Pokud chcete ručně vymazat mezipaměť, které lze snadno provést zasláním e echo příkaz do /proc souborový systém uvede do jádra k poklesu cache a volné paměti používané pro ukládání do mezipaměti. Pokyny pro spuštění příkazu byly uvedeny výše v tomto článku a experimentální validace chování mezipaměti před a po proplachování byly také zobrazeny.