Ako vymazať vyrovnávaciu pamäť v systéme Linux

How Clear Cache Linux



Na urýchlenie operácií IO sa používa vyrovnávacia pamäť systému Linux (Page Cache). Za určitých okolností môže správca alebo vývojár chcieť vymazať vyrovnávaciu pamäť ručne. V tomto článku vysvetlíme, ako funguje vyrovnávacia pamäť systému súborov Linux. Potom ukážeme, ako monitorovať využitie vyrovnávacej pamäte a ako vymazať vyrovnávaciu pamäť. Vykonáme niekoľko jednoduchých experimentov výkonu, aby sme overili, či vyrovnávacia pamäť funguje podľa očakávania a či postup vyprázdnenia a vymazania vyrovnávacej pamäte tiež funguje podľa očakávania.

Ako funguje vyrovnávacia pamäť systému súborov Linux

Jadro si rezervuje určité množstvo systémovej pamäte na ukladanie do pamäte cache prístupov na disk systému, aby bol celkový výkon rýchlejší. Cache v linuxe sa nazýva Cache stránok . Veľkosť vyrovnávacej pamäte stránky je možné konfigurovať pomocou veľkorysých predvolených nastavení, ktoré umožňujú ukladať do vyrovnávacej pamäte veľké množstvo diskových blokov. Maximálna veľkosť vyrovnávacej pamäte a pravidlá, kedy je potrebné z pamäte vysťahovať údaje, je možné nastaviť pomocou parametrov jadra. Prístup k vyrovnávacej pamäti linuxu sa nazýva vyrovnávacia pamäť so spätným zápisom. To znamená, že ak sú údaje zapísané na disk, sú zapísané do pamäte do vyrovnávacej pamäte a označené ako špinavé v medzipamäte, kým nie sú synchronizované s diskom. Jadro udržiava interné dátové štruktúry, aby optimalizovalo, ktoré údaje sa majú z vyrovnávacej pamäte vypudiť, keď je v pamäti potrebné viac miesta.







Počas systémových hovorov na čítanie v systéme Linux jadro skontroluje, či sú požadované údaje uložené v blokoch údajov vo vyrovnávacej pamäti, čo by bol úspešný prístup do vyrovnávacej pamäte, a údaje sa z vyrovnávacej pamäte vrátia bez vykonania akýchkoľvek vstupných a výstupných operácií s diskovým systémom. V prípade zmeškania vyrovnávacej pamäte sa údaje načítajú zo systému IO a vyrovnávacia pamäť sa aktualizuje na základe politík ukladania do vyrovnávacej pamäte, pretože pravdepodobne sa znova vyžiadajú rovnaké údaje.



Keď sa dosiahnu určité prahy využitia pamäte, úlohy na pozadí začnú zapisovať špinavé údaje na disk, aby sa zabezpečilo vymazanie vyrovnávacej pamäte. Tieto môžu mať vplyv na výkon aplikácií náročných na pamäť a CPU a vyžadujú si doladenie správcom alebo vývojárom.



Použitie príkazu Free na zobrazenie použitia vyrovnávacej pamäte

Na analýzu systémovej pamäte a množstva pamäte vyhradenej na ukladanie do vyrovnávacej pamäte môžeme použiť bezplatný príkaz z príkazového riadka. Pozrite si príkaz nižšie:





#zadarmo -m

To, čo vidíme z zadarmo príkaz vyššie je, že v tomto systéme je 7,5 GB RAM. Z toho sa využije iba 209 MB a 6,5 ​​MB je bezplatných. 667 MB sa používa vo vyrovnávacej pamäti cache. Teraz sa pokúsime zvýšiť toto číslo spustením príkazu na vygenerovanie súboru 1 Gigabyte a prečítaním súboru. Nasledujúci príkaz vygeneruje približne 100 MB náhodných údajov a potom spojí 10 kópií súboru do jedného veľký_súbor .



# dd if =/dev/random of =/root/data_file count = 1400000
# pre i v `seq 1 10`; do echo $ i; dátový súbor mačky >> veľký_súbor; hotový

Teraz si prečítame tento 1gig súbor a potom znova skontrolujeme bezplatný príkaz:

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

Vidíme, že využitie vyrovnávacej pamäte medzipamäte sa zvýšilo zo 667 na 1735 megabajtov, čo je zhruba 1 gigabajtový nárast používania vyrovnávacej pamäte.

Príkaz Sys VM Cache Cache

Linuxové jadro poskytuje rozhranie na vyprázdnenie vyrovnávacej pamäte, vyskúšajme tieto príkazy a zistíme, ako to ovplyvní bezplatné nastavenie.

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

Vyššie vidíme, že väčšina alokácie vyrovnávacej pamäte cache bola uvoľnená týmto príkazom.

Experimentálne overenie, že Drop Cache funguje

Môžeme vykonať validáciu výkonu pomocou pamäte cache na čítanie súboru? Prečítajte si súbor a zapíšte ho späť do /dev /null, aby sme otestovali, ako dlho trvá čítanie súboru z disku. Načasujeme to s čas príkaz. Tento príkaz vykonáme ihneď po vymazaní vyrovnávacej pamäte pomocou vyššie uvedených príkazov.

Čítanie súboru trvalo 8,4 sekundy. Prečítajme si to teraz znova, že súbor by mal byť vo vyrovnávacej pamäti súborového systému, a uvidíme, ako dlho to teraz trvá.

Bum! V prípade, že sa súbor neuložil do vyrovnávacej pamäte, trvalo prečítanie súboru iba 0,2 sekundy v porovnaní s 8,4 s. Ak to chcete overiť, zopakujte to znova tak, že najskôr vymažete vyrovnávaciu pamäť a potom súbor dvakrát prečítate.

Fungovalo to perfektne podľa očakávania. 8,5 sekundy pre čítanie z pamäte cache a 0,2 sekundy pre čítanie z pamäte cache.

Záver

Vyrovnávacia pamäť stránok je v systémoch Linux automaticky povolená a transparentne urýchli vstupno -výstupné operácie uložením nedávno použitých údajov do vyrovnávacej pamäte. Ak chcete manuálne vymazať vyrovnávaciu pamäť, môžete to ľahko vykonať odoslaním príkazu echo do súborového systému /proc, ktorý jadru naznačí, že má vymazať vyrovnávaciu pamäť a uvoľniť pamäť použitú pre vyrovnávaciu pamäť. Pokyny na spustenie príkazu boli uvedené vyššie v tomto článku a bolo tiež ukázané experimentálne overenie správania vyrovnávacej pamäte pred a po vyprázdnení.