I've already replied on the zfs-discuss group that this is most likely a
ZIL issue and pointed to the Evil ZFS tuning guide for details on
how to test this. It is not a cluster issue at all.
http://www.solarisinternals.com/wiki/index.php/ZFS_Evil_Tuning_Guide#ZIL
-- richard
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.
>
> 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
>
> _______________________________________________
> ha-clusters-discuss mailing list
> ha-clusters-discuss at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/ha-clusters-discuss
>