Política hasta en Squid: LRU, LFUDA, GDSF

Hace varios años, tomé un equipo que ya no soportaba ni el windows 98, le instalé IPCop y lo puse a trabajar como un servidor de internet (Firewall, DNS caché, DHCP, VPN, etc.) y ha funcionado de maravilla, prácticamente no tiene problemas y si los llega a presentar basta con un reinicio para volver al trabajo.

Después le instalé el add-on Advanced Proxy que permite configurar de una manera mucho más fina el servicio de proxy Squid. Noté que en la sección Administración de la caché hay un apartado para elegir las políticas de reutilización de la memoria y del caché.

Políticas de reutilización de la memoria y el caché.

Squid guarda algunos archivos que se usan con frecuentemente, funciona de manera similar a los archivos temporales que usa nuestro navegador. El objetivo es, si un elemento de una página web ya lo descargaste para mostrar una página y en el caso de volverlo a solicitar,no sea necesario pedirla nuevamente a internet. En su lugar te muestra el archivo local que ya tienes almacenado, claro que con eso obtienes una importante ganancia de tiempo y la página se muestra mucho más rápido en la pantalla.

Pero ¿Qué elementos se deben de conservar y cuales desechar? sobre todo cuando Squid esta solicitando espacio en el disco. Se necesita un método, una política, un criterio y es ahí donde entran las políticas de reutilización.

En squid existen 4 opciones:

  • LRU Es la política original de squid y mantiene los objetos usados más recientemente.
  • heap LFUDA (Least Frequently Used with Dynamic Aging).
  • heap GDSF (Greedy-Dual Size Frequency).
  • heap LRU LRU pero utilizando un montículo.

Políticas de reutilización en IPCop

No estoy muy seguro de cuales son las ventajas y desventajas de cada uno, no me he tomado el tiempo de analizar cada uno, pero en mi búsqueda de elegir cual sería el mejor me encontré con un documento muy detallado de los HP Laboratories llamado: Enhancement and Validation of Squid’s Cache Replacement Policy, en el que hacen un análisis muy detallado de las políticas de reutilización y como afectan el rendimiento. Por lo tanto decidí darle una oportunidad a GDSF.

CPU más activo.

Han pasado un par de días desde que hice el cambio y pude notar que el CPU esta más activo, no tanto como para ocasionar un problema, de hecho el impacto es mínimo en el CPU pero si hay un aumento minimamente notable y eso es bueno, quiere decir que aún con mi hardware límitado (Pentium, 256MB RAM) no había problemas con el cambio.

Menor consumo de memoria RAM.

Este cambio fue mucho más notorio, el consumo de memoria RAM bajó notablemente, incluso por un momento el equipo dejó de utilizar la memoria swap, así que no tuve problemas para aumentar el parámetro Tamaño en memoria para la caché (MB): de un valor de 8 a 100. Pero como pueden ver en la gráfica ha estado aumentando con el uso. Aún con este cambio sigue sin hacer uso de la memoria swap (hasta ahora).

Gráficos del sistema usando heap GDSF - IPCop

Conclusiones

Realmente no era tan necesario hacer estos cambios, el pequeño servidorcito funciona como el primer día que lo instalé y dejará de hacerlo hasta que alguna descarga eléctrica lo deje inutilizable.

Pero siempre es interesante hacer algunos ajustes, bit ahorrado bit ganado. Supongo que ahora le puedo exigir un poco más a este equipo y aprovecharlo mejor. Las páginas se están descargando, los correos siguen llegando, es un bonito día de verano.

Actualización: la memoria swap por las nubes !!!

Recuerdan que les había comentado que moví el valor de Tamaño en memoria para la caché (MB) cache_mem de 8 a 100, bueno, pues creo que es mejor que no lo hagan, esto fue lo que provocó 🙂

swap por las nubes cache_mem

Como pueden ver, el consumo de la swap se elevó por las nubes y finalmente el proceso de squid dejó de funcionar. Así que regresa a su conservador valor de 8 MB 🙂 . Aquí la explicación de porque no deben de mover mucho ese valor My Squid process grows without bounds.

Referencias.

3 comentarios en “Política hasta en Squid: LRU, LFUDA, GDSF”

  1. Yo tengo squid instalado bajo una distro llamada ipfire, no he tenido el problemas que mencionas con respecto a la configuración del Tamaño en memoria para la caché, siempre lo he subido y lo máximo que lo he puesto ha sido en 64MB, actualmente lo tengo en 50MB, nunca he tenido problemas.

    Mi PC cortafuegos es un Pentium 3 de 1Ghz con 384MB de RAM con un Disco Duro de 40 GB el cual ya tiene sus síntomas de desgaste. Uso heap GDSF para la memoria cache en RAM y heap LFUDA para la memoria cache en Disco por que para el uso que le doy es lo más apropiado además de ser un equipo que prácticamente solo hace de cortafuegos-proxy-cache.

    Tengo ya más de 2 años usando IpFire y casi siempre ha tenido la misma configuración, adicionalmente quiero comentar que el tamaño de caché en disco siempre lo he usado entre 1.5GB a 2GB sin aumentar la cantidad de descriptores de archivos. Además de asignarle 32MB al tamaño del archivo más grande en caché.

    Recientemente decidí aumentar el tamaño del caché en disco a 5GB y el tamaño máximo de archivo en cache a 100MB espero no tener que aumentar al tamaño de los descriptores en caso de que este al llenarse, empiece a tener síntomas de lentitud.

    Espero que ese problema que tuviste lo puedas solventar con una simple actualización a IPCOP…. saludos!

    Responder

¡Me encantaría saber que opinas!

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.