Hello,
I have been trying to chase down some ZFS performance issues, and I was hoping
someone with more ZFS experience might be able to comment.
When running a "zfs list" command, it often takes several minutes to
complete. I see similar behavior when running most other ZFS commands, such as
"zfs set", or when creating a snapshot. While it is running, the load
of the server stays approximately the same (0.30), no process goes above 1% CPU
usage, and the server does not utilize swap.
The server I am using for testing is running Solaris Express DE 9/07, based on
B70. It has 15 SATA drives in a RAID-Z2 pool, and the actual I/O performance is
good as far as I can tell. The pool contains 150 filesystems, including
snapshots. It is an active server, and generally has several users writing to
the disk at any one time.
Below is a snippet of output from a "truss -d zfs list":
...
0.0283 open("/dev/zfs", O_RDWR) = 3
...
1.7142 ioctl(3, ZFS_IOC_DATASET_LIST_NEXT, 0x08045D38) = 0
2.6371 ioctl(3, ZFS_IOC_OBJSET_STATS, 0x08043E98) = 0
2.7222 ioctl(3, ZFS_IOC_DATASET_LIST_NEXT, 0x08044D88) = 0
4.6572 ioctl(3, ZFS_IOC_OBJSET_STATS, 0x08042EE8) = 0
...
As you can see, it spends quite a bit of time waiting for the return of ioctl
calls on /dev/zfs. Since the command has to make many of these calls, the
cumulative delays add up to a significant wait.
Any ideas?
This message posted from opensolaris.org