On Fri, 2008-08-08 at 14:48 -0400, Chris Mason wrote:[ ... ] I spent a bunch of time hammering on different ways to fix this without increasing nr_requests, and it was a mixture of needing better tuning in btrfs and needing to init mapping->writeback_index on inode allocation. So, today's numbers for creating 30 kernel trees in sequence: Btrfs defaults 57.41 MB/s Btrfs dup no csum 74.59 MB/s Btrfs no duplication 76.83 MB/s Btrfs no dup no csum no inline 76.85 MB/s Ext4 data=writeback, delalloc 60.50 MB/s I may be able to get the duplication numbers higher by tuning metadata writeback. My current code doesn't push metadata throughput as high in order to give some spindle time to data writes. This graph may give you an idea of how the duplication goes to disk: http://oss.oracle.com/~mason/seekwatcher/btrfs-dup/btrfs-default.png Compared with the result of mkfs.btrfs -m single (no duplication): http://oss.oracle.com/~mason/seekwatcher/btrfs-dup/btrfs-single.png Both on one graph is a little hard to read: http://oss.oracle.com/~mason/seekwatcher/btrfs-dup/btrfs-dup-compare.png Here is btrfs with duplication on, but without checksumming. Even with inline extents on, the checksums seem to cause most of the metadata related syncing (they are stored in the btree): http://oss.oracle.com/~mason/seekwatcher/btrfs-dup/btrfs-dup-nosum.png It is worth noting that with checksumming on, I go through async kthreads to do the checksumming and they may be reordering the IO a bit as they submit things. So, I'm not 100% sure the extra seeks aren't coming from my async code. And Ext4: http://oss.oracle.com/~mason/seekwatcher/btrfs-dup/ext4-writeback.png This benchmark has questionable real world value, but since it includes a number of smallish files it is a good place to look at the cost of metadata and metadata dup I'll push the btrfs related changes for this out tonight after some stress testing. -chris --
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| Hiten Pandya | Re: up? (emacs docbook xml ide) |
| Jan Engelhardt | intel iommu (Re: -mm merge plans for 2.6.23) |
| Tarkan Erimer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
git: | |
| Jarek Poplawski | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| David Miller | [GIT]: Networking |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Daniel Eischen | Re: error with thread |
