[Trucos de Primavera] Optimizando el uso de la memoria cache en tu ordenador

Hace ya buen tiempo publicamos en GUTL un post donde explicamos como optimizar el uso de memoria SWAP o memoria de intercambio, principalmente en ordenadores con buenas prestaciones que no necesariamente necesitan usar constantemente esta zona de intercambio. Casi dos años más tarde regresamos con un tema similar: Controlar la tendencia con la que el núcleo reclama la memoria utilizada para el cache de directorios e inodos de objetos.

chef-gutlMemoria caché o RAM caché

La unidad caché es un sistema especial de almacenamiento de alta velocidad. Puede ser tanto un área reservada de la memoria principal como un dispositivo de almacenamiento de alta velocidad independiente. Hay dos tipos de caché frecuentemente usados en las computadoras personales: memoria caché y caché de disco. Una memoria caché, llamada también a veces almacenamiento caché o RAM caché, es una parte de memoria RAM estática de alta velocidad (SRAM) más rápida que la RAM dinámica (DRAM) usada como memoria principal. La memoria caché es efectiva dado que los programas acceden una y otra vez a los mismos datos o instrucciones. Guardando esta información en SRAM, la computadora evita acceder a la lenta DRAM.

Cuando se encuentra un dato en el caché, se dice que se ha producido un acierto, siendo un caché juzgado por su tasa de aciertos (hit rate). Los sistemas de memoria caché usan una tecnología conocida por caché inteligente en la cual el sistema puede reconocer cierto tipo de datos usados frecuentemente. Las estrategias para determinar qué información debe ser puesta en el caché constituyen uno de los problemas más interesantes en la ciencia de las computadoras. Algunas memorias caché están construidas en la arquitectura de los microprocesadores. Por ejemplo, el procesador Pentium II tiene un caché L2 de 512 KiB.

El caché de disco trabaja sobre los mismos principios que la memoria caché, pero en lugar de usar SRAM de alta velocidad, usa la convencional memoria principal. Los datos más recientes del disco duro a los que se ha accedido (así como los sectores adyacentes) se almacenan en un buffer de memoria. Cuando el programa necesita acceder a datos del disco, lo primero que comprueba es el caché del disco para ver si los datos ya están ahí. El caché de disco puede mejorar drásticamente el rendimiento de las aplicaciones, dado que acceder a un byte de datos en RAM puede ser miles de veces más rápido que acceder a un byte del disco duro.

Optimizando el uso de la memoria caché

Podemos optimizar el empleo de memoria caché añadiendo un valor al parámetro vm.vfs_cache_pressure en el archivo /etc/sysctl.conf, la cual permitirá liberar parte de la memoria cache. Ésta controla la tendencia con la que el núcleo reclama la memoria utilizada para el cache de directorios e inodos de objetos. Su valor predeterminado es 100 y especifica se intente reclamar las estradas de directorios (dentries) e inodos a una tasa más o menos justa con respecto del reclamo de paginación de memoria cache y la paginación de memoria de intercambio. Disminuir el valor ocasiona que el núcleo prefiera retener las entradas de directorios e inodos en el cache. Incrementar el valor ocasiona que el núcleo prefiera reclamar la memoria utilizada por las entradas de directorios e inodos.

  • Aumentar el valor puede mejorar algunos escenarios donde se hace poco uso del sistema de archivos como el caso de escritorios. Puede empeorar el desempeño de escenarios donde se utiliza activamente el sistema de archivos (generalmente servidores) pero habrá más memoria libre disponible y una menor probabilidad de utilizar la lenta memoria de intercambio.
  • Disminuir el valor puede empeorar algunos escenarios donde se hace poco uso del sistema de archivos como el caso de escritorios. Puede mejorar el desempeño de escenarios donde se utiliza activamente el sistema de archivos (generalmente servidores) donde quizá convenga destinar más memoria cache para las entradas de directorio e inodos más utilizados a costa de un mayor consumo de memoria.

En el siguiente ejemplo establecemos un valor igual a 1000 para vm.vfs_cache_pressure:

sysctl -w vm.vfs_cache_pressure=1000

Para hacer que el cambio sea permanente edite el archivo /etc/sysctl.conf.

sudo nano /etc/sysctl.conf

Añada la siguiente línea al final del archivo:

vm.vfs_cache_pressure = 1000
Fuente:
Barrios Dueñas, Joel: Configuración De Servidores Con GNU/Linux. Edición Diciembre 2015

¿Te resultó interesante? Compártelo ...



Maikel Llamaret Heredia

Publicado por Maikel Llamaret Heredia

https://swlx.info » Facebook » Twitter » Google+ » Linkedin » Forma parte de GUTL desde el 6 diciembre, 2011. Parte de la familia GUTL. Usuario de Tecnologías Libres desde hace varios años. Fiel a GNU/Linux y las filosofías del Software Libre y el Código Abierto. Linux User # 587451. Creador y actual mantenedor del Proyecto SWL-X. Freelancer dedicado al Desarrollo / Diseño Web y Marketing Online. Creador de Web & Media Integrated Solutions

Este artículo tiene 2 comentarios

Los comentarios están cerrados.