• Aquí vive el Software Libre, coje lo que quieras, da lo que puedas
  • Rápido, seguro, libre e increíblemente fácil de usar
  • Ubuntu: Linux para seres humanos
  • Linux es Educación. Linux es Ciencia
  • Ubuntu es diseño, Ubuntu es innovación
  • Keep calm and enjoy Ubuntu
  • Trata tu teclado como se merece con Ubuntu
  • pf-kernel para Ubuntu
  • Convierte tu iMac en un ordenador de verdad
  • La libertad no es poder elegir entre unas pocas opciones impuestas
  • Software libre, para una sociedad libre

Aprovechamiento máximo de memoria de la máquina.

Entrada escrita por: Francisco Javier Teruelo de Luis
Saludos.


Sólo por curiosidad... ¿alguno sabe de verdad cuándo empieza vuestro ordenador a descargar cosas en la swap y -automáticamente- a reducir su velocidad?


Por cuestiones de trabajo me he encontrado con el tema y me he dado cuenta de que, en la mayoría de sistemas en el momento en que la memoria llega al sesenta por ciento de su capacidad, independientemente del tamaño de ésta.

Igualmente, hasta que la memoria no está completa no se empieza a eliminar lo que no se necesita.

Para medir el consumo de memoria en tiempo real (1 seg.) lo podemos hacer con el siguiente comando:

watch -n 1 free -m

Seguro que todos tenemos maquinones Cray y cosas parecidas, pero como he de lidiar con algunas que no... Os ofrezco una forma de ajustar el sistema sin daños y comprobada en todas las máquinas de mi centro.

  • Accedemos como root.
  • Editamos el fichero /etc/sysctl.conf
  • Añadimos al final las siguientes líneas:
vm.swappiness=1
vm.drop_caches=3 
  • Guardamos la modificación.
  • Ejecutamos directamente:
sysctl -p


En las dos últimas líneas nos han de aparecer los campos que hemos introducido antes.


Con ésto hemos programado el sistema para que no utilice la swap a menos que la memoria esté ocupada en un noventa por ciento -aumento sensible de velocidad- y para que vacíe todo el espacio ocupado por un programa así que lo cerramos, sin esperar, con la subsiguiente descarga del equipo.


A ésto podemos añadirle otra modificación:

sysctl -w vm.drop_caches=3

Tras el cual, si volvemos a realizar la comprobación anterior, veremos el cambio notable para bien en la memoria libre:

watch -n 1 free -m

Ahora bien, la forma de automaticar todo este proceso lo haremos de la siguiente forma; El lugar donde ha de instalarse depende del sistema pero lo he probado en el trabajo (OpenSUSE modificada) y el mi máquina (Ubuntu) y funciona sin problemas. El proceso es sencillo.
  • Como seguimos en la consola, editamos el /etc/crontab:
sudo nano /etc/crontab
  • añadimos al final:
00 * * * * root echo 3 > /proc/sys/vm/drop_caches
15 * * * * root echo 3 > /proc/sys/vm/drop_caches
30 * * * * root echo 3 > /proc/sys/vm/drop_caches
45 * * * * root echo 3 > /proc/sys/vm/drop_caches

  • Guardamos.
  • Creamos un fichero (con el mismo editor en que estamos) en /etc/cron.d al cual llamamos, por ejemplo, dropcaches, (sí, lo sé; poco original).
  • Insertamos el mismo código anterior.
  • Guardamos.
Et voilà. Cada quince minutos el sistema hará un barrido por la memoria y eliminará lo que no sea necesario sin dañar ningún proceso. Ponerlo en los dos sitios es porque no sé en cada sistema dónde lo reconocerá, y así me aseguro la jugada. Los tiempos, evidentemente son optativos y ésta es la fórmula que me va bien a mí.

Espero que os sirva para algo. Hasta luego.

5 comentarios:

Ricardo Chao Prieto dijo...

Feitu! Ya te cuntaréi.

Fernando Lanero Barbero dijo...

Probándolo por aquí a ver que tal el resultado. Lo he configurado en mi Sony VAIO VGN que ya le van pesando los años, a ver si lo rejuvenece un poco :)

Bernardo Leon dijo...

Gracias por tus articulos, se parende mucho.. tengo instalado preload y zram gracias a otro de tus posts. Deje mi swappiness en 1 ya que al igual que tu en mi trabajo me di cuenta de que mi maquina se ponía lenta por las tardes ya que empezaba a usar el espacio de swap antes de lo que me hubiera gustado.

Con respecto a realizar el drop_caches parece no ser una buena idea según esto:

http://askubuntu.com/questions/155768/how-do-i-clean-or-disable-the-memory-cache/155771#155771



Como aporte jeje

ale dijo...

gracias lo voy a probar a ver que tal va

Antonio Salvado dijo...

Gracias, va mejor el ordenador ahora.