Re: [Ext2-devel] Re: [Bug 417] New: htree much slower than regular ext3

Daniel Phillips
2003-03-08T22:39:21Z

On Sat 08 Mar 03 09:04, Andreas Dilger wrote:
> I was testing this in UML-over-loop in 2.4, and the difference in speed
> for doing file creates vs. directory creates is dramatic. For file
> creates I was running 3s per 10000 files, and for directory creates I
> was running 12s per 10000 files.

And on a 10K scsi disk I'm running 35s per 10,000 directories, which is way,
way slower than it ought to be. There are two analysis tools we're hurting
for badly here:

- We need to see the physical allocation maps for directories, preferably
in a running kernel. I think the best way to do this is a little
map-dumper hooked into ext3/dir.c and exported through /proc.

- We need block-access traces in a nicer form than printks (or nobody
will ever use them). IOW, we need LTT or something very much like
it.

> Depending on the size of the journal vs. how many block/inode bitmaps and
> directory blocks are dirtied, you will likely wrap the journal before you
> return to the first block group, so you might write 20kB * 32000 for the
> directory creates instead of 8kB for the file creates. You also have a
> lot of seeking to each block group to write out the directory data, instead
> of nearly sequential IO for the inode create case.

Yes, I think that's exactly what's happening. There are some questions
remaining, such as why doesn't it happen to akpm. Another question: why does
it happen to the directory creates, where the only thing being accessed
randomly is the directory itself - the inode table is supposedly being
allocated/dirtied sequentially.

Regards,

Daniel