Matthew C Aycock wrote: > I have a test cluster running HA-NFS that shares both ufs and zfs based file > systems. However, the behavior that I am seeing is a little perplexing. >
Since this is a purely synchronous test, suspect the ZIL. http://www.solarisinternals.com/wiki/index.php/ZFS_Evil_Tuning_Guide#ZIL -- richard > The Setup: I have Sun Cluster 3.2 on a pair of SunBlade 1000's connecting to > two T3B partner groups through a QLogic switch. All four bricks of the T3B > are configured as RAID-5 with a hot spare. One brick from each pair is > mirrored with VxVM 4.1 with a ufs file system on top of the mirror. I have > mirrored the other two bricks via a Zpool. I have configured an HAStoragePlus > resource for the datadg VxVM disk group and another one for the hazfs Zpool. > Both are a part of my single nfs-rg. All machines are connected via 100MB > switches. > > I have a small test program that was created to detect a particular "problem" > that we were having. Its very simple and I will include the c code at the > end. What is does is to time the creation of a file, do an 8k synchronous > write, and close the file. If the time is greater than 1 second, it prints > out the elapsed time. Very simple. > > The Test: I have two identical SunBlade 2500s that each mount a file system, > run a loop of iozone 500 then sleep 10 seconds, run nf (my test program) on > the mounted file system. One does this on the ZFS based file system and the > other on the UFS based one. > > The Results: On the UFS based filesystem, nf reports ZERO output. Thus, it > never took more than a second to do the test. On the ZFS based mount point I > see multiple delays ranging from 2 to 6 seconds. So, I reversed the roles of > the machines and ran the test again with virtually the save results. > > The $1000 Question: Why would this happen? > > The Code: > #include <sys/types.h> > #include <time.h> > #include <sys/stat.h> > #include <fcntl.h> > #include <unistd.h> > #include <stdio.h> > #include <stdlib.h> > > > void main () { > > > char nbuff[32]; > char data [8192]; > int fd; > time_t start,finish; > char date[256]; > > while (1) { > start=time(0); > sprintf(nbuff,"TEMP%d", rand()); > fd=open(nbuff, O_RDWR| O_CREAT |O_SYNC, 0777); > write (fd, data, sizeof (data)); > close (fd); > unlink(nbuff); > finish=time(0); > if ((finish - start) > 1) { > cftime(date, "%c", &start); > fprintf(stderr,"%s elapsed=%d\n",date, finish-start); > } > sleep(1); > } > } > > > This message posted from opensolaris.org > _______________________________________________ > zfs-discuss mailing list > zfs-discuss@opensolaris.org > http://mail.opensolaris.org/mailman/listinfo/zfs-discuss > _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss