1. Home
  2. Servery pokročilé
  3. Jak promazat swap nebo cache u RAM a Bufferu

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 vymazat mezipaměť bez přerušení procesů nebo služeb.

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

1. Vymaže pouze PageCache.

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

2. Vymaže dentries i inodes (dentry a inody)

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

3. Vymaže PageCache, dentries a inodes.

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

Vysvětlení příkazu

Sync promázne 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 uvedeno 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ěť.

Updated on 27.3.2023

Was this article helpful?

Related Articles