Re: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3

Zach Brown
2007-02-22T21:45:33Z

> direct-io.c is evil. Ridiculously.

You will have a hard time finding someone to defend it, I predict :).

There is good news on that front, too. Chris (Mason) is making
progress on getting rid of the worst of the Magical Locking that
makes buffered races with O_DIRECT ops so awful.

I'm not holding my breath for a page cache so fine grained that it
could pin and reference 512B granular user regions and build bios
from them, though that sure would be nice :).

>> As an experiment, I'm working on backing the sys_io_*() calls with
>> syslets. It's looking very promising so far.
>
> Great, I'd love to see the comparisons.

I'm out for data. If it sucks, well, we'll know just how much. I'm
pretty hopeful that it won't :).

> One other implementation to consider is actually using kernel threads
> compared to how syslets perform. Direct IO for one always blocks, so
> there shouldn't be much of a performance difference compared to
> syslets,
> with the bonus that no arch specific code is needed.

Yeah, I'm starting with raw kernel threads so we can get some numbers
before moving to syslets.

One of the benefits syslets bring is the ability to start processing
the next pending request the moment current request processing
blocks. In the concurrent O_DIRECT write case that avoids releasing
a ton of kernel threads which all just run to serialize on i_mutex
(potentially bouncing it around cache domains) as the O_DIRECT ops
are built and sent.

-z