[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Nbd] performance



Wouter Verhelst <w@...112...> writes:

> On Fri, May 06, 2011 at 11:10:29AM +0200, Folkert van Heusden wrote:
>> Hi,
>>  
>> I have a suggestion for performance enhancement of NBD.
>> The idea is that between each request the client and server exchange a
>> message.  Since networks are slow, this takes a while.
>
> The current implementation works that way, because nbd-server is not
> doing asynchronous reads, and therefore can only handle one request at a
> time. But the protocol doesn't require it, and changing the
> implementation so that it can handle one request while preparing to
> handle another is what I meant with the performance improvements that I
> mailed about earlier.

Does the kernel already pipeline requests?

>> Maybe we can, at least for write requests, send a couple of write
>> commands with their data without immediately waiting for the reply and
>> then if, say, 32 of them are send, wait for the acknowledgments.  If I
>> remember correctly that's also how iSCSI does it.
>
> There's no reason to limit them to write requests only. However read and
> write requests do need to remain somewhat ordered, otherwise there are
> going to be some issues.

Two cases: read after write and write after read.

While I see that some bad implementation could read a block that is
still writing I wonder if that could ever happen with linux? Wouldn't
the data remain in cache as long as the NBD server hasn't acked the
write?

I guess one always has to protect read requests from later comming write
requests.

MfG
        Goswin



Reply to: