On May 30, 2010, at 3:04 PM, Sandon Van Ness wrote: > Basically for a few seconds at a time I can get very nice speeds through > rsync (saturating a 1 gig link) which is around 112-113 megabytes/sec > which is about as good as I can expect after overhead. The problem is > that every 5 seconds when data is actually written to disks (physically > looking at the disk LEDs I see the activity on the one sending data > stall as the ZFS machine is showing disk activity (writes). > > Basically this problem is bringing down the average write speed from > around 112-113 megabytes/sec to around 100 megabytes/sec (sometimes > lower) and thus lowering speeds by 10% (or a bit more). I only really > care as 10% can make a difference when you are copying terrabytes of > data to the machine. Anyway here is what I am seeing on the linux > machine that is sending to the ZFS machine: > > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s > avgrq-sz avgqu-sz await svctm %util > sdc3 17.00 0.00 496.00 0.00 112.00 0.00 > 462.45 0.42 0.84 0.16 7.90 > > avg-cpu: %user %nice %system %iowait %steal %idle > 6.34 0.00 3.80 0.00 0.00 89.86 > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s > avgrq-sz avgqu-sz await svctm %util > sdc3 1.00 0.00 584.00 0.00 111.75 0.00 > 391.88 0.43 0.74 0.12 7.10 > > avg-cpu: %user %nice %system %iowait %steal %idle > 6.84 0.00 5.44 0.00 0.00 87.72 > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s > avgrq-sz avgqu-sz await svctm %util > sdc3 4.00 0.00 557.00 0.00 112.00 0.00 > 411.81 0.43 0.77 0.13 7.10 > > avg-cpu: %user %nice %system %iowait %steal %idle > 4.64 0.00 2.51 0.00 0.00 92.86 > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s > avgrq-sz avgqu-sz await svctm %util > sdc3 1.98 0.00 104.95 0.00 23.76 0.00 > 463.70 0.09 0.84 0.17 1.78 > > avg-cpu: %user %nice %system %iowait %steal %idle > 7.11 0.00 5.08 0.00 0.00 87.82 > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s > avgrq-sz avgqu-sz await svctm %util > sdc3 9.00 0.00 538.00 0.00 112.69 0.00 > 428.97 0.39 0.72 0.14 7.50 > > avg-cpu: %user %nice %system %iowait %steal %idle > 7.46 0.00 5.56 0.00 0.00 86.98 > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s > avgrq-sz avgqu-sz await svctm %util > sdc3 8.00 0.00 524.00 0.00 112.00 0.00 > 437.74 0.38 0.72 0.13 6.90 > > avg-cpu: %user %nice %system %iowait %steal %idle > 7.98 0.00 5.96 0.00 0.00 86.06 > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s > avgrq-sz avgqu-sz await svctm %util > sdc3 1.00 0.00 493.00 0.00 111.29 0.00 > 462.31 0.39 0.80 0.16 7.90 > > > This is iostat -xm 1 sdc3 > > Basically you can see its reading at around full gig speed and then > reads drop down due to writes being stalled on the ZFS machine. These > are 1 second averages. > > On the ZFS end with 10 second averages I see approximately 100 MB/sec: > > > data 25.1G 18.1T 0 834 0 100M > data 26.2G 18.1T 0 833 0 100M > data 27.3G 18.1T 0 833 0 100M > > > Change this to 1 second and I see: > data 32.7G 18.1T 0 0 0 0 > data 32.7G 18.1T 0 2.86K 0 360M > data 33.3G 18.1T 0 264 0 21.8M > data 33.3G 18.1T 0 0 0 0 > data 33.3G 18.1T 0 0 0 0 > data 33.3G 18.1T 0 0 0 0 > data 33.3G 18.1T 0 2.94K 0 369M > data 33.8G 18.1T 0 375 0 35.1M > data 33.8G 18.1T 0 0 0 0 > data 33.8G 18.1T 0 0 0 0 > data 33.8G 18.1T 0 0 0 0 > data 33.8G 18.1T 0 2.90K 0 365M > data 34.4G 18.1T 0 599 0 62.6M > data 34.4G 18.1T 0 0 0 0 > data 34.4G 18.1T 0 0 0 0 > data 34.4G 18.1T 0 0 0 0 > data 34.4G 18.1T 0 2.10K 0 265M > data 34.9G 18.1T 0 1.77K 0 211M > > > I tried changing the txg sync time from 30 to 1 and that did make things > more smooth but in general lowered speeds (down to 90 megabytes/sec or > so). Actually writing files to the array I see well excess of 112 > megabytes/sec so I would think I should be able to get this to go at > full gig speeds without the small stalls:
I have better luck tuning the zfs_txg_synctime_ms from 5000 to 1000 or less. > > r...@opensolaris: 11:36 AM :/data# dd bs=1M count=100000 if=/dev/zero > of=./100gb.bin > 100000+0 records in > 100000+0 records out > 104857600000 bytes (105 GB) copied, 233.257 s, 450 MB/s If you want to decouple the txg commit completely, then you might consider using a buffer of some sort. I use mbuffer for pipes, but that may be tricky to use in an rsync environment. -- richard -- Richard Elling rich...@nexenta.com +1-760-896-4422 ZFS and NexentaStor training, Rotterdam, July 13-15, 2010 http://nexenta-rotterdam.eventbrite.com/ _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss