[Btrfs-devel] Various optimizations pushed to -unstable
chris.mason at oracle.com
Wed Jan 30 06:42:35 PST 2008
I have pushed out a number of small optimizations (and a few fixes), mostly
tuning cpu usage. The plan is to test these out locally for another few days
and move them over to the stable tree. There are no disk format changes
1) Delalloc accounting via hooks in the extent_state code. This is similar to
how Yan originally did it. I don't love using hooks for all of this but it
is less complex than the alternatives. With this code, the simple enospc
checking is turned back on.
2) Reworked end_bio handlers. The old end_bio handlers did many searches
through the extent tree, resulting in too much lock contention. The new code
walks the state tree instead, starting from a cached value passed down via
3) releasepage call doesn't try to drop extent mappings on small files, and
properly honors the gfp flags of the caller.
4) File creation and deletion take advantage of new multi-item tree
insertion/deletion routines. This cuts down on the amount of shifting
required to get work done.
5) mount -o ssd leaves on tree defragging. Some quick tests from samsung show
the defrag still helps.
6) mount -o max_inline=size added to tune the max tail size.
7) readahead during snapshot deletion no longer uses 100% of the cpu. This
didn't happen often, but if a given snapshot had lots of work to do during
the delete, cpu usage would get out of control.
More information about the Btrfs-devel