Post

Memoria y swap en libra_scripts

Memoria y swap en libra_scripts

Memoria y swap en libra_scripts

Este bloque agrupa mantenimiento basico de memoria: liberar caches cuando queda poca RAM, apagar swap concreta y revisar consumo por proceso.

Uso en la infraestructura

Se usa como mantenimiento puntual en hosts pequenos que ejecutan servicios web, Nextcloud, Jitsi o tareas de backup.

RolServicioImpacto si falla
Alivio temporalKernel/LinuxEl host puede seguir con presion de memoria
SwapSistema baseUn swapoff mal aplicado puede dejar procesos sin memoria
DiagnosticoProcesosNo se identifica el consumidor real

No sustituye ampliar RAM, corregir fugas o ajustar servicios; solo ayuda a operaciones puntuales.

Script original de memoria

1
2
3
4
5
6
7
8
9
#!/bin/bash
MEMORIA=$(free -m|grep Mem|awk '{print $4}')
LIBERAMEMORIA=sh /usr/bin/echo 3 > /proc/sys/vm/drop_caches
if [[ $MEMORIA -le 512 ]]
then
        $LIBERAMEMORIA
else
        exit 0
fi

Script original de swap

1
2
3
4
5
6
#!/bin/bash
#listo la swap y parseo la columna y la linea
szKK=`cat /proc/swaps |awk '{print $1}'|awk 'NR==3'`
echo "libero" $szKK
swapoff $szKK
exit 0

Version revisada de liberar caches

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env bash
set -euo pipefail

UMBRAL_MB="${UMBRAL_MB:-512}"
MEMORIA_LIBRE="$(free -m | awk '/^Mem:/ {print $4}')"

if [[ "$MEMORIA_LIBRE" -le "$UMBRAL_MB" ]]; then
  sync
  echo 3 > /proc/sys/vm/drop_caches
fi

Version revisada de apagar swap concreta

1
2
3
4
5
6
7
8
#!/usr/bin/env bash
set -euo pipefail

SWAP_DEVICE="$(awk 'NR==3 {print $1}' /proc/swaps)"

if [[ -n "$SWAP_DEVICE" ]]; then
  swapoff "$SWAP_DEVICE"
fi

Recomendaciones

  • No usar drop_caches como solucion a fugas de memoria.
  • Revisar procesos con consumo alto antes de liberar caches.
  • Confirmar espacio libre en RAM antes de ejecutar swapoff.
  • Evitar depender de una linea fija de /proc/swaps si hay varias swaps.

Cambios y motivo

CambioMotivo
ejecutar sync y echo directamentela redireccion no queda bien guardada dentro de una variable
umbral parametrizablepermite usar 512 MB o 2048 MB segun host
comillas en $SWAP_DEVICEevita errores si la variable queda vacia
no depender de NR==3la swap activa puede no estar siempre en esa linea
This post is licensed under CC BY 4.0 by the author.