I wanted to do a quick comparison between snv_117 and snv_122 on my workstation to see what kind of improvement there is. I wrote a small C program which does a stat() N times in a loop. This is of course a micro-benchmark. Additionally it doesn't cover a case if doing stat() on not cached entries in DNLC has been improved too.
So I run the program several times on each build after a fresh restart. These were the numbers I was getting on average:
This is over 40% improvement in performance of stat() on ZFS - nice.
snv_117/ZFS# ptime ./stat_loop test 1000000
real 1.941163151
user 0.219955617
sys 1.707997800
snv_122/ZFS# ptime ./stat_loop test 1000000
real 1.089193770
user 0.199055005
sys 0.889680683
snv_122/UFS# ptime ./stat_loop test 1000000
real 0.905696133
user 0.187513753
sys 0.716955921
Still stat() on UFS is faster by about 17%.
The fix could also help some very busy NFS servers :)
AFAIK it has not been backported to Solaris 10 so if you think you need it either go for Open Solaris or open a case with Sun's support and ask for a fix for S10.
How does this compare with a similarly configured UFS filesystem?
ReplyDeleteAdded result for UFS
ReplyDeleteSince most zfs features / fixes are reported in snv_XXX terms. Is there some sort of way to figure out which versions of Solaris 10 have the equivalent features / fixes?
ReplyDeleteSolaris 10 update 9 includes a fix for bug #6775100, specifically Patch 142909-17: SunOS 5.10: kernel patch
ReplyDelete