ZFS with L2ARC (SSD) slower for random seeks than without L2ARC

Not sure why you're seeing the behavior you're seeing, but I can tell you why they don't necessarily signal terrible real world ZFS performance. Bonnie is designed to measure performance of the actual disks and intentionally tries to not leverage disk/memory cache. You're trying to use it to measure disk cache.

It can take hours for an L2ARC device to get hot. Depending on how much main memory you have for ARC and the disk performance with your workload, a 100GB SSD for L2ARC will take 1-2hrs to get hot and perhaps even longer (Source). Secondly L2Arc is designed to cache random reads and not streaming read workloads. "If you use the L2ARC for a streaming or sequential workload, then the L2ARC will mostly ignore it and not cache it" (Source). I would be really surprised if much of your bonnie workload ever made it into L2ARC. Instead of using bonnie++, try to generate load which resembles your real use of the system.

Although unlikely, running the latest development versions of Bonnie++ (1.96 vs 1.03d) may produce something closer to your expected results. You may also want to check out this sun blogs post about bonnie++ with the Sun 7000 Series, though they run over NFS and not locally.


You can also enable streaming data cache in the L2ARC in your SSD.

The l2arc_noprefetch parameter is useful for that.

This tunable determines whether streaming data is cached or not. The default is not to cache streaming data (the default value is true). If you set it to false, you will probably see your L2ARC cache hit ratio increase significantly.