Hi,

Bug ID: 6775100 stat() performance on files on zfs should be improved was fixed 
in snv_119.
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:


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

This is over 40% improvement in performance of stat() on ZFS - nice.
Still stat() on UFS is faster by about 17%.

Why stat() on the same file in a loop would be faster if file is on UFS 
compared to ZFS? 


# cat stat_loop.c 


#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>


int main(int argc, char **argv)
{
  int i;
  int N;
  struct stat buf;

  if (argc != 3)
  {
    printf("usage: %s filename N\n", argv[0]);
    exit(5);
  }

  N=atoi(argv[2]);
  i=0;
  while (i++ < N)
  {
    if (stat(argv[1], &buf))
    {
      printf("stat(%s,) failed.\n", argv[1]);
      exit(6);
    }
  }

  exit(0);
}


-- 
Robert Milkowski
http://milek.blogspot.com
-- 
This message posted from opensolaris.org
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to