Re: Approaches to making io_submit not block

Jens Axboe
2011-08-30T22:32:16Z

On 2011-08-30 16:19, Daniel Ehrenberg wrote:
> On Tue, Aug 30, 2011 at 2:37 PM, Jens Axboe <axboe@kernel.dk> wrote:
>> On 2011-08-30 15:30, Jeff Moyer wrote:
>>> Daniel Ehrenberg <dehrenberg@google.com> writes:
>>>
>>>> Hi Jens, Jeff,
>>>>
>>>> I just sent a letter to LKML wondering about changes to io_submit that
>>>> I'm thinking of working on. Based on your past contributions to this
>>>> area, I'd really like to know what you think of this plan--how well it
>>>> matches with the existing design, the potential for inclusion in
>>>> upstream Linux, if you see problems.
>>>
>>> Hi, Dan,
>>>
>>> Thanks for taking the time to make AIO better! There is a mailing list
>>> for aio discussions: linux-aio@kvack.org, so please CC that in the
>>> future (I don't read lkml anymore).
>>>
>>> Right now I'm a bit inundated, so I can't give this a proper review.
>>> I should be able to free up some time in the next two weeks, though.
>>>
>>> In the mean time, you can google for suparna's retry-based aio patches.
>>> Specifically, take a look at how she used prepare_to_wait/finish_wait.
>>> If you haven't done any empirical tests to see where io_submit blocks,
>>> there is a sample systemtap script for that:
>>> http://sourceware.org/systemtap/examples/io/io_submit.stp
>>> Other attempts at non-blocking aio were off the deep end: fibrils and
>>> syslets. Fibrils didn't go anywhere because Ingo didn't like them (for
>>> good reason, they essentially introduced another scheduling layer).
>>> Syslets didn't go anywhere b/c they were insane (returned to the
>>> user-space process with a different PID, among other things!).
>>>
>>> If you do go forward in the meantime, you can likely use EIOCBRETRY
>>> instead of EAGAIN.
>>>
>>> I hope that helps!
>>
>> FWIW, I updated the buffered AIO retry patches some time after Suparna
>> droped them. By the date stamp in my branch, they are now 23 months
>> old... Anyway, at least it's more recent, you can find them here:
>>
>> http://git.kernel.dk/?p=linux-block.git;a=shortlog;h=refs/heads/aio-buffered
>>
>> --
>> Jens Axboe
>>
>>
> Thanks! Do you know why the patches weren't merged? I can't find much
> discussion about them.

Not quite sure, and after working on them and fixing thing up, I don't
even think they are that complex or intrusive (which I think otherwise
would've been the main objection). Andrew may know/remember.

--
Jens Axboe