[pyar] Caches - Uso y desperdicio de RAM vs. CPU

Roberto Alsina ralsina en netmanagers.com.ar
Lun Mar 23 11:16:51 ART 2015


Siempre que leo a alguien pensar en estimar el tamaño de un cache, me 
acuerdo de esto:

https://www.varnish-cache.org/trac/wiki/ArchitectNotes

On 23/03/15 10:50, Andres Riancho wrote:
> Lista,
>
>      Ayer pensaba un rato sobre caches, uso de memoria y CPU, y más que
> nada en el potencial desperdicio de los mismos. Me gustaria saber su
> opinion sobre este tema.
>
>      Supongamos que tengo un LRU cache en el cual almaceno en memoria
> resultados de operaciones que llevan mucho esfuerzo de CPU en
> calcular. Entonces lo que obtengo es una reducción de uso de CPU en mi
> software a costa de un uso incrementado de memoria.
>
>      En todos los casos que vi estos caches tienen un maximo numero de
> elementos a recordar, removiendo en base a algun algoritmo uno de los
> elementos cuando se quiere guardar el proximo. Además si tengo 10 como
> numero maximo de items en el cache la mejora en mi software estará
> limitada a lo que pueda proveer ese "pequeño" cache, mientras que si
> lo incremento a 100 la mejora en CPU será incrementada (*).
>
>      Determinar cual es el numero maximo de items en el cache parece
> ser una decision importante que afecta performance de manera directa.
> Un numero elevado y puede ser que consuma tanta RAM que el OS empiece
> a utilizar swap y todo pase a ser mas lento, un numero reducido y el
> cache puede ser totalmente inutil. O si se setea un numero intermedio,
> pero el software se ejecuta en un servidor con 16GB de RAM, entonces
> el cache esta desaprovechando recursos que bien podría consumir.
>
>      Despues de tanta introducción mis preguntas son:
>
>          - Tiene sentido controlar el tamaño del cache en base a los
> recursos disponibles en el sistema? Como medirían los mismos? Medirían
> % RAM libre? Quizás con el modulo psutil?
>
>          - Reducir el tamaño del cache puede prevenir el uso de swap,
> lo que sería beneficioso en casos donde el software se ejecuta en
> entornos con recursos reducidos, correcto?
>
>          - Incrementar el tamaño del cache cuando existen recursos
> disponibles hara que el software utilice más memoria. Un usuario que
> monitoree el proceso podría facilmente creer que tiene un memory leak,
> o que es muy "agresivo" en cuanto al uso de RAM. Quizás en este caso
> deberia haber documentación/configuración por parte del usuario del
> máximo hasta donde puede crecer?
>
>      Gracias!
>
> (*) No siempre, depende de que se guarda, como se usa lo que se guarda, etc.
>
> PD: Como seguramente saben esta pregunta esta relacionada con w3af ,
> pero la hago de manera generica porque aplica a muchos otros casos
> tambien. En w3af el codigo relacionado con la pregunta esta en
> parser_cache.py [0]
>
> [0] https://github.com/andresriancho/w3af/blob/master/w3af/core/data/parsers/parser_cache.py
>
> Saludos,



More information about the pyar mailing list