Below you will find a script which I created for a customer, due to the fact we needed to have an overview of the flash cache usage after enable write back mode. In a table the storage cell, allocated flash cache, used and dirty is provide.

Very useful to see in one run the current usage of your flash cache.

Example output:

Mon Jan 04 11:48:52 CET 2016
Host                Cache size          Allocated           Used                Dirty
exsc10000000:       5957.5G             5,311,382           5,232,540           4,435,458
exsc20000000:       5957.5G             4,580,368           4,504,112           3,820,839
exsc30000000:       5957.5G             5,074,112           4,606,022           4,318,125
exsc40000000:       5957.5G             6,015,707           5,947,408           4,964,418
exsc50000000:       5957.5G             4,500,983           4,449,573           2,832,322


dcli -g /root/cell_group -l root "cellcli -e 'list flashcache detail' | grep effect" >/tmp/log1
dcli -g /root/cell_group -l root "cellcli -e 'list metriccurrent fc_by_dirty,fc_by_used,fc_by_allocated'" > /tmp/log2

printf '%-20s'  "Host" "Cache size" "Allocated" "Used" "Dirty" ;printf '\n'
echo "--------------------------------------------------------------------------------------"

for i in `cat /tmp/log1 | grep adm | awk '{ print $1} '`

CACHE=`cat /tmp/log1 | grep $i | awk '{ print $3}'`
ALLOCATED=`cat /tmp/log2 | grep $i | grep FC_BY_ALLOCATED | awk '{ print $4}'`
USED=`cat /tmp/log2 | grep $i | grep FC_BY_USED | awk '{ print $4}'`
DIRTY=`cat /tmp/log2 | grep $i | grep FC_BY_DIRTY | awk '{ print $4}'`

printf '%-20s' $HOST $CACHE $ALLOCATED $USED $DIRTY; printf '\n'

rm /tmp/log1
rm /tmp/log2

The script was executed against X4-2 and X5-2. But as always, test it in your own environment. Execute the script as root user on a compute node.


Remark: FC_BY_USED can be larger than FC_BY_ALLOCATED when using release on the storage servers. This is due to bug 20638779.