Jak promazat swap nebo cache u RAM a Bufferu

Stejně jako každý jiný operační systém má GNU/Linux efektivně implementovanou správu paměti, a to dokonce více než efektivně. Pokud vám však nějaký proces ubírá paměť a vy ho chcete vymazat, Linux nabízí způsob, jak propláchnout nebo úplně vymazat mezipaměť RAM.

Jak vymazat vyrovnávací paměť (cache) v Linuxu?

Každý systém Linuxu má tři možnosti, jak mezipaměť vymazat, aniž by se přerušily procesy nebo služby.

Příkazy pouštějte vždy přes SSH.

1. Způsob: Vymazat pouze PageCache.

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

2. Způsob: Vymazat dentries i inodes (dentry a inody)

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

3. Způsob: Vymazat PageCache, dentries a inodes.

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

Vysvětlení příkazu:

Sync promaže vyrovnávací paměť souborového systému. Příkazy oddělené znakem „;“ se spouštějí postupně. Shell počká na ukončení každého příkazu, než provede další příkaz v sekvenci. Jak je uvedené v dokumentaci jádra, zápis do drop_cache vyčistí mezipaměť, aniž by došlo k zabití nějaké aplikace/služby, a příkaz echo provádí zápis do souboru.

Pokud je třeba vyčistit diskovou mezipaměť, je nejbezpečnější první příkaz, protože „…echo 1 > ….“ vyčistí pouze mezipaměť PageCache.

Třetí výše uvedenou možnost „…echo 3 >“ nedoporučujeme v produkčním prostředí používat, pokud nevíte co děláte, protože vymaže mezipaměť stránek, dentry a inody.

Uvolnění vyrovnávací paměti a mezipaměti v Linuxu

Vyrovnávací paměť můžete také uvolnit bez restartování systému a výpadku.

Linux je navržen tak, že se před pohledem na disk podívá do vyrovnávací paměti. Pokud najde prostředek v mezipaměti, pak se požadavek na disk nedostane. Pokud vyčistíte mezipaměť, tak bude operační systém pomalejší, protože bude hledat prostředek na disku.

Podrobněji jsme o tom psali v našem článku RAM na Linuxu.

Můžete si vytvořit shellový skript pro automatické čištění mezipaměti RAM denně ve 2 hodiny ráno prostřednictvím systémového cronu. Případně si ho nechat pouze na manuální spuštění a nemusíte si pamatovat celý řádek příkazu.

Vytvořte shellový skript ramclear.sh

touch ramclear.sh

A přidejte následující řádky:

#!/bin/bash

echo "echo 1 > /proc/sys/vm/drop_caches"

Nastavte oprávnění ke spuštění souboru ramclear.sh.

chmod 755 ramclear.sh

Po spuštění skriptu se RAM promaže nebo ve vámi určený čas pomocí systémového cronu.

Jak vymazat SWAP v Linuxu?

Pokud chcete vyčistit prostor swapu, můžete použít příkaz:

swapoff -a && swapon -a

Výše uvedený příkaz můžete také přidat do skriptu ramclear.sh, poté, co pochopíte všechna související rizika.

Nyní budeme oba výše uvedené příkazy kombinovat do jediného příkazu, abychom vytvořili správný skript pro vymazání mezipaměti RAM a odkládacího prostoru.

#!/bin/bash

echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache a swap vymazány'

Po vyzkoušení obou výše uvedených příkazů spustíme příkaz „free -h“ před a po spuštění skriptu zkontrolujeme mezipaměť.

Pomohl vám tento článek?

Podobné články