Hi all,
So I'm setting up a new server for myself at home. I tend to overbuild things, and in this case I'm using this as an exercise to brush up my FreeBSD skills which are several years out of date. I have no data on the machine at all right now, so this is the perfect time to play around.
I've got a nice Intel motherboard with an i5 and 16GB of ram, though for the time being I'm testing with two old 160GB drives in a zpool mirror (given how harddrive prices are retarded right now).
I've only learned about ZFS in the last two weeks. I like what I've read. I like it a lot. I don't expect it to perform equivalent to UFS, as it does and stores so much more, but these performance impacts are unacceptable. I've got two issues, one of which I've defeated but the other has me stumped.
Under heavy write loads, the system became seriously unresponsive. bonnie++ showed latency in excess of 8,500 msec on some operations. By tuning vfs.zfs.write_limit_override down to 128 - 192 MB (still haven't decided exactly where I want it) I've brought that down to just over 1,000 msec. That's still a lot, but I recognize these are old, small slow disks in a worst-case workload scenario.
Writing to the drives themselves tells me they're capable of performing somewhere in the 60 MB/sec range. And indeed sequential read performance on the ZFS mirror is about 90 MB/sec. The thing that's killing me is sequential writes - I can't get it over 25 MB/sec, and during a sequential write
I can hear the drives thrashing around. I tried giving ZFS a 4 GB md(4) ZIL, and that made no difference. Sequential writes are impacted by the write_limit_override tuning above - small limits mean lower latency (to a point) but also reduced speed. Higher numbers improve speed but also increase latency. 25 MB/sec gives me about 1,500msec latency in bonnie++.
Can anyone suggest how to improve ZFS' sequential writes? Also do these numbers seem reasonable given the hardware involved? Detailed configuration follows
FreeBSD 9.0-RELEASE
Fresh install
gpt partitioning
p1 256k freebsd-boot (aligned to 4k on disk)
p2 2g freebsd-ufs (gmirrored /boot)
p3 freebsd-zfs (zfs mirrored zpool (/) on geli)
geli is using 4k blocks, and hardware aesni crypto on the i5. CPU usage does not appear to be an issue. zfs is not using dedup or compression.
If anyone wants more details, ask and I'll provide as soon as I get home from the office.
So I'm setting up a new server for myself at home. I tend to overbuild things, and in this case I'm using this as an exercise to brush up my FreeBSD skills which are several years out of date. I have no data on the machine at all right now, so this is the perfect time to play around.
I've got a nice Intel motherboard with an i5 and 16GB of ram, though for the time being I'm testing with two old 160GB drives in a zpool mirror (given how harddrive prices are retarded right now).
I've only learned about ZFS in the last two weeks. I like what I've read. I like it a lot. I don't expect it to perform equivalent to UFS, as it does and stores so much more, but these performance impacts are unacceptable. I've got two issues, one of which I've defeated but the other has me stumped.
Under heavy write loads, the system became seriously unresponsive. bonnie++ showed latency in excess of 8,500 msec on some operations. By tuning vfs.zfs.write_limit_override down to 128 - 192 MB (still haven't decided exactly where I want it) I've brought that down to just over 1,000 msec. That's still a lot, but I recognize these are old, small slow disks in a worst-case workload scenario.
Writing to the drives themselves tells me they're capable of performing somewhere in the 60 MB/sec range. And indeed sequential read performance on the ZFS mirror is about 90 MB/sec. The thing that's killing me is sequential writes - I can't get it over 25 MB/sec, and during a sequential write
# dd if=/dev/zero of=/some/file
I can hear the drives thrashing around. I tried giving ZFS a 4 GB md(4) ZIL, and that made no difference. Sequential writes are impacted by the write_limit_override tuning above - small limits mean lower latency (to a point) but also reduced speed. Higher numbers improve speed but also increase latency. 25 MB/sec gives me about 1,500msec latency in bonnie++.
Can anyone suggest how to improve ZFS' sequential writes? Also do these numbers seem reasonable given the hardware involved? Detailed configuration follows
FreeBSD 9.0-RELEASE
Fresh install
gpt partitioning
p1 256k freebsd-boot (aligned to 4k on disk)
p2 2g freebsd-ufs (gmirrored /boot)
p3 freebsd-zfs (zfs mirrored zpool (/) on geli)
geli is using 4k blocks, and hardware aesni crypto on the i5. CPU usage does not appear to be an issue. zfs is not using dedup or compression.
If anyone wants more details, ask and I'll provide as soon as I get home from the office.