Bien administrar y configurar su RAM y su SWAP

[h]Bien administrar y configurar su RAM y su SWAP[/h]

Todo le mundo sabe (o por lo menos ha oído hablar) de la Random Access Memory (memoria de acceso aleatorio)
Es un modulo fundamental en una computadora ya que permite tratar y escribir datos sin escribirlos en el disco (ganando así muchísimo en velocidad de ejecución)
La “partición SWAP” es menos conocida.
Antes de todo porque es propia a los sistemas Linux: No hay partición “área de intercambio” en Windows o MacOS.
La partición SWAP se emplea cuando la RAM está llena y se usa para almacenar algunos de los datos que irían en la RAM.
Hay que tener claro que se trata de una solución temporaria para descongestionar en un momento dado nuestra RAM
No es una solución milagrosa que permite transformar en pura RAM un espacio de nuestro disco duro.
No todos los datos tratados por la RAM son “SWAPeables” y la velocidad de ejecución se entorpece:
Usando la SWAP se reduce de algo el rendimiento de la computadora debido a la velocidad de escritura en disco y por la gestión del swapping in and out .
[h]Partición SWAP[/h]
La instalación de la partición SWAP se hace automáticamente cuando eliges una de las soluciones automatizadas propuesta por tu instalador gráfico (borrar todo el disco para instalar Linux, Usar el espacio continuo libre más grande etc…).
Tener una partición SWAP es muy ventajoso en dispositivos con poca RAM.
En las computadoras de hoy en día que abarcan mucho más RAM la ventaja es menos obvia.
Diría que con 8GB de RAM la SWAP nunca, o a penas, se usará.
No hay realmente reglas para el tamaño de la partición SWAP.
Si vuestro dispositivo tiene 1GB o menos de RAM podéis poner más SWAP que RAM
Luego se recomienda de costumbre poner la misma cantidad de SWAP que de RAM.
Esto es lo que aconsejan por ejemplo en la wiki de ubuntu

[quote] RAM(MB) No hibernation With Hibernation Maximum
256 256 512 512
512 512 1024 1024
1024 1024 2048 2048

    RAM(GB) No hibernation  With Hibernation  Maximum
      1      1                2                   2
      2      1                3                   4
      3      2                5                   6
      4      2                6                   8
      5      2                7                  10
      6      2                8                  12
      8      3               11                  16
     12      3               15                  24
     16      4               20                  32
     24      5               29                  48
     32      6               38                  64
     64      8               72                 128
    128     11              139                 256[/quote]

Personalmente si tendría 128 GB de RAM dejaría una SWAP pequeña en 8-12 para no reducir de 128GB mi tamaño de disco…
Podéis aumentar el tamaño de la partición SWAP en cualquier momento con Gparted o en linea de ordenes.
Si tenéis varios sistemas linux podeís usar una sola partición** SWAP** para todos.
Puede generar dificultades si apaguéis mal uno de los sistemas antes de pasar a otro
(por ejemplo si uno de los sistemas estaba “suspendido” con datos puestos en la SWAP)
La partición SWAP se crea sin punto de montaje y su formato es “espacio de intercambio” (No es EXT_4 como para la(s) particione(s) “sistema” )
[h]lsblk[/h]
Podéis saber cuál es el tamaño de la partición SWAP y su identificador con el comando lsblk

lsblk


[h]free[/h]
Es el comando perfecto para saber lo que hay.

free -l -h


No estoy haciendo nada especial así que mi SWAP no se emplea.
Con la opción** -l** puedo ver las estadísticas con un uso alto o bajo de memoria.
[h]swappiness[/h]
Swappiness es una parámetro del kernel Linux con un valor entre 0 y 100 que sirve para definir el nivel de uso de la RAM para empezar a usar la SWAP.
Si ponemos 0 a nuestra swappiness desactivamos por completo la SWAP, no se usará.
Al contrario si ponemos 100 la SWAP se empleará de forma agressiva, si el proceso RAM lo permite pasará en la SWAP
Para ver su nivel de “Swappiness” abrimos el fichero /proc/sys/vm/swappiness

cat /proc/sys/vm/swappiness


60 es el valor por defecto en muchas distribuciones (Kali Linux en este caso)
Podemos bajar el valor para que se use la SWAP lo menos posible y conservar toda la velocidad hasta que la RAM sea llena del todo.
Si tienes 4GB de **RAM o más puedes bajar el nivel deSwappiness ** sin problemas.
Cambio mi nivel de Swappiness en 10 así:

sudo sysctl -w vm.swappiness=10


Y para cambiar el nivel tras reinicio se debe modificar el nivel en el fichero leafpad /etc/sysctl.conf

sudo leafpad /etc/sysctl.conf

En Kali no tengo un nivel de Swappiness definido en dicho archivo así que añado estas linea:

[code]###################################################################

Nivel de Swappiness añadido

vm.swappiness = 10[/code]
Guardo el archivo y el nivel será el en uso por defecto.
Una puntuación: La gran mayoría de los tutoriales aconsejan bajar el nivel de swapiness incluso muchos aconsejan ponerla al mínimo posible:** 1**.
Es interesante ver que uno de los desarrolladores del kernel linux dice que pone su nivel… a 100.

Su argumento tiene sentido: ¿Para que querer almacenar cienes de MB de archivos temporales que no sirven de nada en su RAM?
Mejor pasarlos en el disco y usar la RAM para algo realmente útil…
[h]swapon y swapoff[/h]
Podemos desactivar la SWAP para vaciarla

sudo swapoff -a

Esto es útil porque puede ocurrir a veces que no se vacía del todo, no significa que este en uso pero se pueden quedar unos datos.
Para volver a activar la swap usaremos el opuesto de swapoff:** swapon**

sudo swapon -a

Para saber más/fuentes

  1. Optimizing your linux desktop - ninja level by Oded Lazar @ thoughts. data. bugs./*]
  2. Understanding page faults and memory swap-in/outs: when should you worry? by Derek @ scoutapp/*]
  3. SwapFaq @ Ubuntu documentation/*]