Various Benchmarks I've done
Click on the image for the full size graph.
The benchmark spawn N threads. Each one creates, writes 200k to, reads 200k from, or deletes files. The measurement is the total number of operations (create, read, write, unlink) per second spread out among all the threads.
To force disk io, fsync() is called after create and write.
If a run uses extended attributes, 4 extended attributes are set on the file via one syscall. They are never read. Looking at the more detailed timings, using exteded attributes makes open() and unlink() slower. It's not just the time required to call attr_multif(). On Solaris, I'm just using one extended attribute and putting all 4 values in it. Extended attributes on Solaris are way over-engineered.