ZFS, lies and statistics

Borja Marcos borjam at sarenet.es
Wed Feb 20 11:16:59 UTC 2013


Hi :)

Still working on polishing devilator to graph some meaningul ZFS statistics.

I have been peeking at the ZFS statistics. In RELENG-9.2 it´s a bit confusing, as there are two different sets of statistics:

Some are under vfs.zfs (I think the following ones are relevant):

vfs.zfs.l2c_only_size: 36603866112
vfs.zfs.mfu_ghost_data_lsize: 730375168
vfs.zfs.mfu_ghost_metadata_lsize: 1075240960
vfs.zfs.mfu_ghost_size: 1805616128
vfs.zfs.mfu_data_lsize: 1785933312
vfs.zfs.mfu_metadata_lsize: 373835264
vfs.zfs.mfu_size: 2198305792
vfs.zfs.mru_ghost_data_lsize: 550150656
vfs.zfs.mru_ghost_metadata_lsize: 1859320320
vfs.zfs.mru_ghost_size: 2409470976
vfs.zfs.mru_data_lsize: 503643648
vfs.zfs.mru_metadata_lsize: 105602560
vfs.zfs.mru_size: 800031744
vfs.zfs.anon_data_lsize: 0
vfs.zfs.anon_metadata_lsize: 0
vfs.zfs.anon_size: 673792

vfs.zfs.arc_meta_used: 2087455400

and of course the new kstat tree.


But there is a discrepancy between the information provided by both, or I am missing something.

Having a look at these samples (this is updated from my test system, so anyone interested can have a look at the progress), I have tried to obtain a good graph of the ARC breakdown using two different approaches (one borrowed from the Solaris version of arcstats.pl, which makes this calculation, 

    mru_size = ARCSTATS_P;
    if ( ARCSTATS_SIZE > ARCSTATS_C )
        mfu_size = ARCSTATS_SIZE - mru_size;
    else
        mfu_size = ARCSTATS_C - mru_size;
    add_output_u64("zfs_mfu_size", mfu_size);
    add_output_u64("zfs_mru_size", mru_size);


and, on the other hand, I'm using the sized directly provided by vfs.zfs, which turn out to be different.

Which one would be the best?

Thanks,






Borja.



More information about the freebsd-fs mailing list