I manage several systems with near a billion objects (largest is currently 800M) on each and also discovered slowness over time. This is on X4540 systems with average file sizes being ~5KB. In our environment the following readily sped up performance significantly:

Do not use RAID-Z. Use as many mirrored disks as you can. This has been discussed before.
Nest data in directories as deeply as possible.
Although ZFS doesn't really care, client utilities certainly do and operations in large directories causes needless overhead. Make sure you do not use the filesystem past 80% capacity. As available space decreases so does overhead for allocating new files. Do not keep snapshots around forever, (although we keep them around for months now without issue.)
Use ZFS compression (gzip worked best for us.)
Record size did not make a significant change with our data, so we left it at 128K.
You need lots of memory for a big ARC.
Do not use the system for anything else other than serving files. Don't put pressure on system memory and let ARC do its thing. We now use the F20 cache cards as a huge L2ARC in each server which makes a large impact. one the cache is primed. Caching all that file metadata really helps I found using SSD's over iSCSI as a L2ARC was just as effective, so you don't necessarily need expensive PCIe flash.

After these tweaks the systems are blazingly quick, able to do many 1000's of ops/second and deliver full gigE line speed even on fully random workloads. Your mileage may very but for now I am very happy with the systems finally (and rightfully so given their performance potential!)

--
Adam Serediuk
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to