Bienvenidos

Todos estos pasos descriptos fueron probados en ambientes productivos

lunes, 28 de marzo de 2016

Zfs consume mucha memoria

En los monitoreos , con herramientas externas al S.O. detectaron que el equipo esta consumiendo un total de 96% de la memoria del equipo.
Los administradores de las aplicaciones, no encuentran con los comandos habituales, que haya un consumo excesivo de memoria y mucho menos que aplicacion es la que la esta utilizando.
El vmstat , prstat  no muestran valores significativos ni preocupantes.
Aca es donde hay que mirar un poco mas a fondo.
Para eso utilizo el comando mdb donde observo que el ZFS esta tomando el 67 % de la memoria del equipo
# mdb -kw
Loading modules: [ unix genunix dtrace specfs zfs ldc ip hook neti sockfs dls sctp arp usba fctl nca lofs md cpc random crypto fcip logindmux ptm ufs sppp nfs ipc ]
> ::memstat
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     821817              6420   10%
ZFS File Data             5611890             43842   67%
Anon                      1633674             12763   19%
Exec and libs                9035                70    0%
Page cache                   2320                18    0%
Free (cachelist)             3400                26    0%
Free (freelist)            306472              2394    4%
Total                    8388608             65536

root #

Aca, la explicacion :

ZFS cache data o ZFS File Data ( como vemos en la salida del mdb) es donde ZFS almacena ( cachea ) todos los storage pools activos. Zfs crece y consume memoria al inicio del equipo.
Cuando una nueva aplicacion se inicia, necesita memoria, ZFS devuelve de la que tomo.
Hasta el momento, no se ve cual es el problema. Pero ....algunas aplicaciones que cuando inician chequean la freemem, como por ejemplo java,  van a ver que hay poca memoria en la freelist y no van a iniciar.

Aca, la solucion :

Existe un parametro a modificar en el /etc/system , que se le indica al zfs que tome
un maximo X de memoria al inicio, este parametro es zfs:zfs_arc_max .
El valor a asignarle varia dependiendo la cantidad de pooles de zfs que tengamos y la cantidad de memoria.
En mi caso, que tengo solo dos pooles, y 65 gb de ram, opte por limitar a 12b de ram
set zfs:zfs_arc_max=12884901888

Luego del reboot.
chequeo con echo ::memstat | mdb -k
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     473869              3702    6%
ZFS File Data             1567085             12242   19%
Anon                      1090066              8516   13%
Exec and libs               10325                80    0%
Page cache                   3339                26    0%
Free (cachelist)             9461                73    0%
Free (freelist)           5234463             40894   62%
Total                    8388608             65536


Nota: Este tunning fue realizado en un solaris 10 1/13 s10s_u11wos_24a SPARC Generic_150400-28
En un T5-2 , con 65 gb de ram

Los parametros y explicaciones estan detallados con nivel de excelencia en la web solarisinternals.com

@diego_qac

No hay comentarios:

Publicar un comentario