Analisis de memoria con MDB

Page last edited hace 2181 días 2 horas
De Solaris-ES
Saltar a: navegación, buscar

Analisis de la memoria con MDB[editar]

  • Les comento el problema y la solucion....
Estamos trabajando en una demo de VDI y el equipo tiene poca memoria
física 4GB.
Al instalar y configurar la solucion completa (Solaris + VDI3.1) el
server nos quedaba con 1.4GB de memoria libre y esto solo con el
solaris activo! en cuanto arrancamos una máquina virtual... bueno el
CAOSSSSS! nos quedan 200MB libres! Donde esta la memoriaaaaaaa....
Bueno aquí la respuesta al misterio!
Con el siguiente comando vemos donde esta la memoria:
root@vboxvdi # echo  ::memstat | mdb -k
Loading modules: [ unix krtld genunix specfs dtrace cpu.generic
cpu_ms.AuthenticAMD.15 uppc pcplusmp ufs ip hook neti sctp arp usba
fcp fctl nca lofs zfs md cpc random crypto fcip logindmux ptm sppp nfs
ipc ]
        > ::memstat
        Page Summary                Pages                MB  %Tot
        ------------     ----------------  ----------------  ----
        Kernel                     572067              2234   55%
        Anon                        32230               125    3%
        Exec and libs                3798                14    0%
        Page cache                  66363               259    6%
        Free (cachelist)            61121               238    6%
        Free (freelist)            310835              1214   30%

        Total                     1046414              4087

El 55% de la memoria la tiene el Kernel, unos 2.1GB.... Porque? La
respuesta es simple, el ZFS tiene un cache definido en el kernel y
esto hace que nuestro equipo reserve memoria para el.

Para ver las estadísticas de la cache ARC (Adaptive replacement cache)
en solaris utilizaremos el comando kstat

root@vboxvdi # kstat -p -m zfs |egrep -i "arcstats.(size|c_max)"
zfs:0:arcstats:c_max    3214583808
zfs:0:arcstats:size     1799621552

Otra forma de ver la memoria asignada a la cache del ARC es mediante
el comando mdb
root@vboxvdi # echo  ::arc | mdb -k

Como podemos ver esta configurada para en 1.6GB (1799621552) con lo
cual de los 2.1GB que utiliza el Kernel, 1.7 son del cache ARC. La
memoria a utilizar por esta cache se puede configurar con un parámetro
del kernel zfs_arc_max de la siguiente manera

root@vboxvdi # vi /etc/system
set zfs:zfs_arc_max=0x20000000 -> 512MB

root@vboxvdi # init 6

  • Nota: Bajamos la cache a 512MB que en mi caso es suficiente para las pruebas que tengo que realizar.
Luego del reboot el equipo nos queda de la siguiente manera:

root@vboxvdi # kstat -p -m zfs |egrep -i "arcstats.(size|c_max)"
zfs:0:arcstats:c_max    536870912
zfs:0:arcstats:size     536742048

root@vboxvdi # echo  ::arc | mdb -k
c_max                     =       512 MB
size                      =       511 MB

root@vboxvdi # echo  ::memstat | mdb -k
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     249272               973   24%
Anon                       224495               876   21%
Exec and libs               11576                45    1%
Page cache                  10257                40    1%
Free (cachelist)           409975              1601   39%
Free (freelist)            140839               550   13%

Total                     1046414              4087

  • Para mas información ver los siguiente enlaces:
 A donde va toda mi memoria?
 ZFS ARC
 Memory Leaks