Identificar e monitorar todo consumo de memória é essencial para evitar problemas futuros e garantir o funcionamento e performance correto de um servidor. Embora o Solaris 10 seja um sistema da família Unix, ele possui suas particularidades.

Como verificar o consumo de memória cache.

Especificações de servidor usado no exemplo:

10GB = Swap memory 28GB = Physical memory

Esse comando mostra as informações de consumo da memória virtual incluindo a memória RAM:

-bash-3.2# swap -s

total: 87832k bytes allocated + 3952k reserved = 91784k used, 33816648k available

Mostra as informações da area de swap no disco:

-bash-3.2# swap -l

swapfile             dev  swaplo blocks   free
/dev/dsk/c0d0s1     100,1      16 20496368 20496368

Exibindo estatísticas de memória virtual

-bash-3.2# vmstat 2 2

 kthr      memory            page            disk          faults      cpu
 r b w   swap  free  re  mf pi po fr de sr vc -- -- --   in   sy   cs us sy id
 0 0 0 33859920 26366728 46 411 9 1 1 0  0  0  0  0  0 1157  954 1030  0  0 100
 1 0 0 33815328 25780520 30 332 28 0 0 0 0  0  0  0  0 1168 1232 1033  0  0 100

Esse comando mostra as estatísticas de consumo de memória de forma mais simples de analisar, infelizmente só funciona em sistema que estão utilizando UFS como filesystem:

-bash-3.2# echo "::memstat" | mdb -k

Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     221753              1732    6%
Anon                        14263               111    0%
Exec and libs                2866                22    0%
Page cache                 212380              1659    6%
Free (cachelist)          3210840             25084   87%
Free (freelist)              7914                61    0%
Total                     3670016             28672

Uma alternativa que pode ajudar bastante na analise do consumo de memória é utilizar um script pronto para isso.

O script abaixo feito por lingeshwaran.rangasamy@gmail.com e está publicado no site www.unixarena.com, foram realizadas poucas alterações para não comprometer o funcionamento nem a ideia original do autor.

#!/usr/bin/bash
swap -l | awk '{ print $4 }'| grep -v blocks > temp.swapl
swap -l | awk '{ print $5}'| grep -v free > free.swap1

MEM=$(echo `echo '::memstat' | mdb -k |tail -1|awk '{ print $3 }'` "*" "1024"|bc)
SWP=$(echo $(tr -s '\n' '+' < temp.swapl)0 | bc)
TSWP=$(echo "$SWP" "/" "2" |bc)
TOTALVS=$(echo "$MEM" "+" "$TSWP" |bc)
echo "Total Physical Memory = $(echo "$MEM" "/" "1024" "/" "1024" |bc) GB"
echo "Total Swap Space = $(echo "$TSWP" "/" "1024" "/" "1024" |bc) GB"
echo "Total Virtual storage space(Physical + Swap) = $(echo "$TOTALVS" "/" "1024" "/" "1024" |bc) GB"

FREEVS=$(echo `vmstat 1 2 |tail -1|awk ' { print $4 } '` "+" `vmstat 1 2 |tail -1|awk ' { print $5 } '` |bc)
echo "Free Physical Memory = $(echo "scale=2;`vmstat 1 2 |tail -1|awk ' { print $5 } '` "/" "1024" "/" "1024" "|bc) GB"
echo "Free Swap = $(echo "scale=2;`awk '{total += $NF} END { print total }' free.swap1` "/" "2" "/" "1024" "/" "1024" "|bc) GB"
echo "Free Virtual storage space(Free Physical + Free Swap) = $(echo "$FREEVS" "/" "1024" "/" "1024" |bc) GB"

FREEVSP=$(echo "scale=2;$FREEVS*100/$TOTALVS" |bc)
echo "Free Virtual storage Percentage = $FREEVSP % "

FREEVSPR=$(echo $FREEVSP|cut -c 1-2)
rm temp.swapl
rm free.swap1

if [[ "$FREEVSPR" -gt 15 ]]
then
echo "System is running with enough virtual storage space(Free virtual storage space $FREEVSP %)"
exit 0
else
echo "The percentage of available storage space is low ($FREEVSP percent)"
exit 1
fi

Referências

Site Unix Arena
Artigo com o script original