Re: reiserfs blocks long on getdents64() during concurrent write

Chris Mason
2002-08-06T00:43:12Z

On Mon, 2002-08-05 at 18:46, Roland Kuhn wrote:
> >
> Ahh, thanks! This sounds like a good idea to me, hopefully your patch will
> be accepted despite the fact that Alan is busy doing other things ;-)
>
> Coming back to the issue: applying these patches increased the throughput
> by about 20% :-) Now it takes about 100sec instead of 120sec to write a
> 2GB file. Tomorrow I will try it without the write_times part, to see how
> much that does.

The write_times patch fixes a lot of latency problems, but all 5 of my
patches kind of build on each other to solve problems in different
workloads.

>
> But more important: the hiccups are more seldom and sometimes shorter than
> before. With plain 2.4.19 I would hit it about twice per minute (I have
> not measured it), now it happens only after two minutes when writing 1M
> chunks at 20MB/s. The longest seen so far was also about 4 seconds,
> though.

This is harder to guess at ;-) But I'll try 2 things I know I've fixed.

#1 I've made the metadata writeback code much more efficient, especially
for smaller transactions. A dd to a large file won't generate lots of
log traffic, writing 700M only changes about 160 blocks in 30 seconds.
Anyway, 03-data-logging-24 might make a big difference.

#2 During an ls, the current code ends up reading the directory more or
less one block at a time. Try 05-search_reada-4.diff, which will read
more tree nodes at once.

If that still doesn't work, I'm porting forward some reiserfs
low-latency work that andrew morton did, we can give it a try.

-chris