On Sep 6, 2008, at 11:16 AM, Kaya Bekiroğlu wrote:

> Thanks to Google Shopping I was able to order two of these cards from:
> http://www.printsavings.com/01390371OP-discount-MICRO+MEMORY-MM5425--512MB-NVRAM-battery.aspx
>
> They appear to be in good working order, but unfortunately I am  
> unable to verify the driver.
> "pkgadd -d umem_Sol_Drv_Cust_i386_v01_11.pkg" hangs on "##  
> Installing part 1 of 3." on snv_95.  I do not have other Solaris  
> versions to experiment with; this is really just a hobby for me.

I spoke too soon.  I was able to complete the driver installation using:

# pkgtrans umem_Sol_Drv_Cust_i386_v01_11.pkg . MMnvdisk
# pkgadd -d . MMnvdisk

At least on x86_64 snv-95, the driver works.  The block devices don't  
show up as disks in certain utilities, but that's not surprising.  The  
card, as expected, is about 3.5x faster than the Gigabyte i-RAM and  
allows me to saturate a gigabit Ethernet link with single stream NFSv3  
TCP writes.

Well, that's not quite true.  My NFS write throughput alternates  
between wire speed and a paltry fraction of wire speed.  I don't  
suspect the driver to be the cause, however.  During my investigation  
I noticed that according to 'zpool iostat' ZFS suspends use of the  
slog for new writes while the disks busy writing old data, which is  
always seven seconds after the drives finish the previous write  
batch.  This may be the ZFS flusher waking up, or it may be that that  
my slog is full; it's hard to tell.  'zpool iostat' doesn't show free  
space on the slog decreasing during my test, probably because it's not  
using a proper disk driver.

This behavior might work OK when the ZIL is allocated from the same  
disks as the main pool, but is suboptimal when it resides on a fast  
slog device.  Even though NFS write throughput will be constrained to  
platter speeds once the ZIL fills up anyway, ZFS shouldn't make  
matters worse by unnecessarily increasing NFS latency for small writes  
by bypassing the slog.

Furthermore, I suspect my observed "fast/slow" duty cycle is a  
consequence of this behavior.  If all NFS writes are sync'd to disk  
during "flush mode," then all dirty buffers have been written to disk  
once the flush completes, and the disks sit idle until the next  
flush.  This wastes disk bandwidth.  By the same token, the (empty)  
slog isn't able to accelerate NFS writes during a flush, wasting the  
same amount of bytes in network bandwidth and boosting per-write  
latency over the average.  Because I have enough slog to allow for  
seek-efficient write reordering, I should be able to get platter  
speeds if this behavior were fixed; the disks would always be writing,  
and the slog would always be active.  At least, that's my theory,  
anyway.  I really don't know how ZFS works.

I wonder if my problem is, in fact, that my slog is full.  I imagine  
that the ZIL can become fragmented as writes are retired out of  
order.  Inserting new writes into the holes would be tricky, but I  
wonder if simply using a circular ZIL format and initiating a flush  
when the ZIL is half full would work well enough.

Kaya Bekiroğlu
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to