Aumentar el tamaño de la SWAP

Sección Unicamente para Tutoriales y Guías
Responder
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

Hace unos días, gracias a herramientas de monitorización, descubrí que mi Swap estaba siendo usada al 100%
Y comprobé que, por defecto, raspbian genera una swap de 100M
Así que , antes de nada, amplié la swap para qeu su falta no afectase negativamente al rendimiento de mi raspi.
Para ello, edito el archivo /etc/dphys-swapfile y cambio el parámetro CONF_SWAPSIZE

Código: Seleccionar todo

cat /etc/dphys-swapfile
[...]
CONF_SWAPSIZE=300
Después de reiniciar, compruebo que los cambios están aplicados:

Código: Seleccionar todo

pi@rpi4:~ $ free -h
              total        used        free      shared  buff/cache   available
Mem:          1.7Gi       484Mi       340Mi        35Mi       872Mi       1.1Gi
Swap:         299Mi       115Mi       184Mi
Bien, ya tengo mis 300M de swap
Ahora me toca investigar quién está devorando swap. Para eso tengo varias opciones.

1. Leer el directorio /proc

Código: Seleccionar todo

grep VmSwap /proc/*/status
2. Listado de procesos ordenados por uso de swap

Código: Seleccionar todo

for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less
3. Con el comando smem

Código: Seleccionar todo

sudo apt-get install smem
Al final con los comandos 'free' y 'smem' tengo la visibilidad que necesitaba:

Aquí veo que estoy usando 115M de swap:

Código: Seleccionar todo

pi@rpi4:~ $ free -h
              total        used        free      shared  buff/cache   available
Mem:          1.7Gi       485Mi       337Mi        35Mi       874Mi       1.1Gi
Swap:         299Mi       115Mi       184Mi
Y aquí veo cuáles de mis procesos están usando más swap
(ojo, sólo los procesos del usuario actual, porque no ejecuto con sudo)

Código: Seleccionar todo

pi@rpi4:~ $ smem -t -s swap     
  PID User     Command                         Swap      USS      PSS      RSS 
 3222 pi       /lib/systemd/systemd --user        0     1368     2582     6624 
 3247 pi       -bash                              0     2176     2301     3880 
 7515 pi       /usr/bin/python /usr/bin/sm        0     8532     9396    11780 
21104 pi       /bin/sh /opt/Jackett/jacket       12      144      165     1140 
  458 pi       /bin/sh /usr/bin/kodi-stand       68        4       22      968 
  470 pi       /bin/sh /usr/bin/kodi --sta      104        4       22      968 
  957 pi       /usr/bin/python2.7 /opt/sic     4528   107708   109611   114404 
 1005 pi       /usr/bin/transmission-daemo     6864    34128    34737    38320 
21107 pi       /opt/Jackett/jackett --NoRe    19568    79436    80195    83692 
  520 pi       /usr/lib/arm-linux-gnueabih    38568   191596   194632   203656 
-------------------------------------------------------------------------------
   10 1                                       69712   425096   433663   465432 
Bien, ya sé que los grandes consumidores son Kodi y Jackett
Ahora me toca averiguar por qué ocurre, si es normal y si se puede optimizar :-)

P.D. Se nota la ampliación de la swap
swap.png
Avatar de Usuario
klingsor
Pi Master
Pi Master
Mensajes: 460
Registrado: 14 Jul 2017, 12:16
Agradecido: 69 veces
Agradecimiento recibido: 86 veces

La mía también está ahora así, al 100%. Voy a aumentarla como has hecho tu y sigo el hilo por si se puede mejorar. :guiño2

Imagen

Por cierto, se le puede añadir algo más ester rpi-monitor para que me de más datos o con eso que tengo ya vale. 8-)

Saludos.
Avatar de Usuario
klingsor
Pi Master
Pi Master
Mensajes: 460
Registrado: 14 Jul 2017, 12:16
Agradecido: 69 veces
Agradecimiento recibido: 86 veces

Estoy dando vueltas a esto de la memoria SWAP y he visto un posible solución por aquí: https://www.raspberrypi.org/forums/view ... 2#p1360310 donde indican colocar la SWAP en el disco duro en vez de en la SD.

Actualmente estos son mis valores:

Código: Seleccionar todo

smem -t -s swap
  PID User     Command                         Swap      USS      PSS      RSS 
15358 pi       -bash                              0     2032     2160     3672 
15395 pi       /usr/bin/python /usr/bin/sm        0     6924     7460     9848 
  924 pi       /bin/sh /etc/vnc/xstartup         84        4       15      904 
 1171 pi       /usr/lib/gvfs/gvfsd-metadat      224      520      806     3344 
  923 pi       /usr/bin/dbus-daemon --sess      232      208      317     1924 
  903 pi       vncserver :1                     456        4       29     1332 
 1089 pi       /usr/lib/menu-cache/menu-ca      504        4       26     1468 
 1114 pi       /usr/lib/gvfs/gvfs-goa-volu      504        4       30     1572 
 1126 pi       /usr/lib/gvfs/gvfs-mtp-volu      540        4       36     1756 
 1107 pi       /usr/lib/gvfs/gvfs-gphoto2-      652        4       38     1832 
 1010 pi       /usr/lib/gvfs/gvfsd              656        4       38     1748 
 1015 pi       /usr/lib/gvfs/gvfsd-fuse /r      676        4       39     1672 
 1023 pi       lxpolkit                         764      440      691     3332 
 1119 pi       /usr/lib/gvfs/gvfs-afc-volu      764       80      116     1876 
  700 pi       /lib/systemd/systemd --user      840      132      274     2252 
 1148 pi       /usr/lib/gvfs/gvfsd-trash -      848        4       75     2172 
  782 pi       -bash                            900       52       70     1316 
  941 pi       /usr/bin/lxsession -s LXDE-     1028      288      339     2208 
  957 pi       /usr/bin/vncserverui -statu     1244      440     1038     4084 
 1079 pi       /usr/lib/gvfs/gvfs-udisks2-     1524        4       91     2308 
 1019 pi       openbox --config-file /home     1544     2448     2881     5664 
  932 pi       /usr/bin/vncserverui virtua     1628     1744     1967     4124 
 1253 pi       /usr/bin/python3 /opt/bazar     3596        4      636     2732 
 1025 pi       lxpanel --profile LXDE-pi       4120     2520     5378    11520 
 1032 pi       pcmanfm --desktop --profile     4228    10008    13422    20372 
  905 pi       /usr/bin/Xvnc-core :1 -auth     4960    16292    17025    19548 
27503 pi       /usr/bin/python3 -u /opt/ba    13820    58396    59523    63572 
  557 pi       /usr/bin/python /usr/bin/de    15952    86072    86751    89884 
  559 pi       /usr/bin/python /usr/bin/de    19620     7308     7905    10624 
  535 pi       /usr/bin/mono /opt/NzbDrone    24908    96396    99170   104192 
  543 pi       /opt/Jackett/jackett --NoRe    31812    47820    48102    50520 
  545 pi       /usr/bin/mono --debug /opt/    55532   249200   251953   256948 
-------------------------------------------------------------------------------
   32 1                                      194160   589364   608401   690320 
¿Crees que es buena solución o no está mal en la SD?, no creo que por estar en esos niveles se corrompa la misma; al fin y al cabo la memoria SWAP es de intercambio y con el paso del tiempo se va descargando ella sola. Cuando sube es cuando paso algún archivo vía ftp al disco duro externo donde copio cosas descargadas, y hasta que no he visto este mensaje tuyo no lo he dado la mayor importancia. :xd

Saludos.
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

La ventaja de tenerla en disco es que evitas ciclos de escritura a la SD, y eso alarga su vida.
Si además el acceso a disco es más rápido que a SD, ganas en rendimiento.

P.D. Y ya si usas ZRAM para tener swap en memoria, ni te cuento, jejeje
Avatar de Usuario
klingsor
Pi Master
Pi Master
Mensajes: 460
Registrado: 14 Jul 2017, 12:16
Agradecido: 69 veces
Agradecimiento recibido: 86 veces

¿Entonces me recomiendas cambiarlo?
Tendría que hacer una partición en el disco duro que uso para las descargas que en la actualidad está en EXT4, le formateo para SWAP (¿500 Mb?), como sistema de archivos le pongo ZRAM y lo añado al fstab.

El disco duro de descargas tiene 2 TB de tamaño. También he pensado que puedo usar un USB viejo que tengo por aquí con 1 GB y así no toco el disco duro. 8-)

¿Donde puedo encontrar un manual para hacerlo y no cagarla? :apurado

Saludos.
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

jejeje, yo ni pongo ni quito la recomendación :-)
Simplemente haz la prueba, cambialo para ver si ganas en rendimiento, o si no lo notas.

Recuerda que desde el archivo /etc/dphys-swapfile puedes indicar en qué partición te crea el *archivo* swap.
No hablamos de crear una partición swap, sino de crear un archivo swap en una partición.

Y respecto al tema de zram, es otro tema distinto.
Con zram lo que haces es que mueves la swap a ram, en lugar de usar un almacenamiento en disco.
De esa forma, la ram y la swap irán casi a la misma velocidad, porque ambas son ram :-D

Hay mucha info de zram, no es algo precisamente nuevo, jejeje
Te recomiendo echar un vistazo a los artículos que lo explican:
https://www.softzone.es/2013/12/22/zram ... -en-linux/

Después encontrarás muchos tutoriales de cómo implementarlo en raspberry, aunque todos hacen lo mismo:
- se ejecuta un script durante el arranque
- se ceran tantos "discos ram" como CPUs existan
- se activa cada disco como swap
- se desactiva el swap existente por defecto
Avatar de Usuario
klingsor
Pi Master
Pi Master
Mensajes: 460
Registrado: 14 Jul 2017, 12:16
Agradecido: 69 veces
Agradecimiento recibido: 86 veces

Creo que me voy a decantar por ZRAM, he encontrado un script que lo configura y como tengo el otro lío de la instalación fallida de Netstat si explota la Raspi cargo la imagen de respaldo previa y empiezo otra vez. :xd

He encontrado esto:
https://www.novaspirit.com/2016/12/24/i ... pberry-pi/

Voy a probar cuando tenga un rato y comento la jugada.

Si funciona luego miro a ver si es posible incluir ZRAM en Rpi-monitor.

Esto de la Raspberry es peor que un bebé, todo el día con atenciones y cuidados. :xd :xd

Saludos.
koper
Pi Newbie
Pi Newbie
Mensajes: 8
Registrado: 11 Jun 2018, 08:59
Agradecido: 0
Agradecimiento recibido: 0

Responder