Limpiar memoria SWAP

    Esporádicamente y en función de la carga de nuestro servidor es posible que la memoria SWAP se empiece a usar.
    Si en nuestro caso no se libera la memoria SWAP y lo tenemos controlado, veamos un ejemplo y caso para realizar dicha limpieza:

    [root@node01 ~]# top -c d1
    top - 10:15:56 up 13 days, 29 min,  3 users,  load average: 0.06, 0.03, 0.00
    Tasks: 136 total,   1 running, 134 sleeping,   1 stopped,   0 zombie
    %Cpu(s):  0.0 us,  0.5 sy,  0.0 ni, 99.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    MiB Mem :   3909.7 total,   3012.8 free,    619.1 used,    277.8 buff/cache
    MiB Swap:    512.0 total,    115.0 free,    397.0 used.     31.7 avail Mem

    Vamos a crear y ejecutar el siguiente script que nos va a permitir liberar memoria SWAP siempre que tengamos previamente memoria física:

    #!/bin/bash
    
    free_data="$(free)"
    mem_data="$(echo "$free_data" | grep 'Mem:')"
    free_mem="$(echo "$mem_data" | awk '{print $4}')"
    buffers="$(echo "$mem_data" | awk '{print $6}')"
    cache="$(echo "$mem_data" | awk '{print $7}')"
    total_free=$((free_mem + buffers + cache))
    used_swap="$(echo "$free_data" | grep 'Swap:' | awk '{print $3}')"
    
    CLEAN_CACHE(){
      #Free pagecache, dentries and inodes in cache memory
      sync; echo 3 > /proc/sys/vm/drop_caches
      #Free dentries and inodes
      sync; echo 2 > /proc/sys/vm/drop_caches
      #Free pagecache only
      sync; echo 1 > /proc/sys/vm/drop_caches
    }
    
    if [[ $used_swap -eq 0 ]]; then
        echo "No swap is in use"
    elif [[ $used_swap -lt $total_free ]]; then
        echo "Freeing swap..."
        sudo swapoff -a
        sudo swapon -a
        CLEAN_CACHE
    else
        echo "Not enough free memory"
    fi

    Como se observa, ya no tenemos SWAP utilizada y la memoria física utilizada sigue siendo la misma

    [root@node01 ~]# top -c d1
    top - 10:27:43 up 13 days, 41 min,  3 users,  load average: 0.01, 0.01, 0.00
    Tasks: 136 total,   1 running, 134 sleeping,   1 stopped,   0 zombie
    %Cpu(s):  0.0 us,  5.7 sy,  0.0 ni, 91.4 id,  2.9 wa,  0.0 hi,  0.0 si,  0.0 st
    MiB Mem :   3909.7 total,   2741.5 free,    960.3 used,    207.9 buff/cache
    MiB Swap:    512.0 total,    512.0 free,      0.0 used.    238.3 avail Mem

    Leave a Reply

    Your email address will not be published. Required fields are marked *