The big difference is in the way the memory allocations work. I don't know the specifics on the Solaris side of things, but on the FreeBSD side, the ZFS ARC uses kernel memory (compared to the unified buffer cache that the rest of the OS uses for accessing UFS, FAT, ISO9660, etc, which is non-kernel memory). There's a finite amount of kernel memory on 32-bit systems (25% of RAM up to 1 GB by default, max 2 GB).
So, if you don't tune the kernel memory and ZFS ARC settings on 32-bit systems, then ZFS will try to use all your RAM for the ARC, and cause kernel panics ("kmem_map too small" errors).
Things are better on the 64-bit side of things, as there aren't the same limitations on kernel memory. FreeBSD 7.x still has a 2 GB kmem max size (actually about 1596 MB in practise), but FreeBSD 8.x will have a 512 GB max. There are quite a few updates and fixes for ZFS coming with FreeBSD 7.1. And FreeBSD 8.0 will have ZFS version 11, with a bunch more features, better performance, and more stability.
So give it time. It's not like ZFS appeared in Solaris working perfectly from the get-go. They've had 10+ years to get things to this point. FreeBSD has had less than 2.
|