Re: getdents - ext4 vs btrfs performance
From: Jacek Luczak <hidden>
Date: 2012-02-29 14:55:07
Also in:
linux-ext4, linux-fsdevel, lkml
2012/2/29 Chris Mason [off-list ref]:
On Wed, Feb 29, 2012 at 03:07:45PM +0100, Jacek Luczak wrote: [ btrfs faster than ext for find and cp -a ]quoted
2012/2/29 Jacek Luczak [off-list ref]: I will try to answer the question from the broken email I've sent. @Lukas, it was always a fresh FS on top of LVM logical volume. I've been cleaning cache/remounting to sync all data before (re)doing tests.The next step is to get cp -a out of the picture, in this case you're benchmarking both the read speed and the write speed (what are you copying to btw?).
It's simple cp -a Jenkins{,.bak} so dir to dir copy on same volume.
Using tar cf /dev/zero <some_dir> is one way to get a consistent picture of the read speed.
IMO the problem is not - only - in read speed. The directory order hit here. There's a difference in the sequential tests that place btrfs as the winner but still this should not have that huge influence on getdents. I know a bit on the difference between ext4 and btrfs directory handling and I would not expect that huge difference. On the production system where the issue has been observed doing some real work in the background copy takes up to 4h. For me btrfs looks perfect here, what could be worth checking is the change of timing in syscall between 39.4 and 3.2.7. Before getdents was not that high on the list while now it jumps to second position but without huge impact on the timings.
You can confirm the theory that it is directory order causing problems by using acp to read the data. http://oss.oracle.com/~mason/acp/acp-0.6.tar.bz2
Will check this still today and report back. -jacek