linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dean <seattleplus@gmail.com>
To: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Andy Adamson <andros@netapp.com>,
	Jeff Layton <jlayton@redhat.com>,
	Badari Pulavarty <pbadari@us.ibm.com>,
	Chuck Lever <chuck.lever@oracle.com>,
	linux-nfs@vger.kernel.org, khoa@us.ibm.com
Subject: Re: [RFC][PATCH] Vector read/write support for NFS (DIO) client
Date: Wed, 13 Apr 2011 23:39:42 -0700	[thread overview]
Message-ID: <4DA696AE.3060002@gmail.com> (raw)
In-Reply-To: <1302741769.4789.7.camel@lade.trondhjem.org>



On 4/13/11 5:42 PM, Trond Myklebust wrote:
> On Wed, 2011-04-13 at 17:21 -0700, Dean wrote:
>>>>> This issue has come up several times recently. My preference would be to
>>>>> tie the availability of slots to the TCP window size, and basically say
>>>>> that if the SOCK_ASYNC_NOSPACE flag is set on the socket, then we hold
>>>>> off allocating more slots until we get a ->write_space() callback which
>>>>> clears that flag.
>>>>>
>>>>> For the RDMA case, we can continue to use the current system of a fixed
>>>>> number of preallocated slots.
>>>>>
>>>> I take it then that we'd want a similar scheme for UDP as well? I guess
>>>> I'm just not sure what the slot table is supposed to be for.
>>> [andros] I look at the rpc_slot table as a representation of the amount of data the connection to the server
>>> can handle - basically the #slots should = double the bandwidth-delay product divided by the max(rsize/wsize).
>>> For TCP, this is the window size. (ping of max MTU packet * interface bandwidth).
>>> There is no reason to allocate more rpc_rqsts that can fit on the wire.
>> I agree with checking for space on the link.
>>
>> The above formula is a good lower bound on the maximum number of slots,
>> but there are many times when a client could use more slots than the
>> above formula.  For example, we don't want to punish writes if rsize>
>> wsize.  Also, you have to account for the server memory, which can
>> sometimes hold several write requests while waiting for them to  be
>> sync'd to disk, leaving the TCP buffers less than full.
> Err... No... On the contrary, it is a good _upper_ bound on the number
> of slots. There is no point in allocating a slot for an RPC request
> which you know you have no ability to transmit. That has nothing to do
> with rsize or wsize values: if the socket is backed up, it won't take
> more data.

Absolutely, I'm just trying to point out that checking the 
SOCK_ASYNC_NOSPACE flag seems to be the only way to guarantee it won't 
take more data.
Dean
> Trond
>

  reply	other threads:[~2011-04-14  6:39 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-12 15:32 [RFC][PATCH] Vector read/write support for NFS (DIO) client Badari Pulavarty
2011-04-12 15:36 ` Chuck Lever
2011-04-12 16:15   ` Badari Pulavarty
2011-04-12 16:42     ` Chuck Lever
2011-04-12 17:46       ` Badari Pulavarty
2011-04-13 12:36         ` Jeff Layton
2011-04-13 13:43           ` Badari Pulavarty
2011-04-13 14:02             ` Jeff Layton
2011-04-13 14:22               ` Trond Myklebust
2011-04-13 14:27                 ` Andy Adamson
2011-04-13 17:20                 ` Jeff Layton
2011-04-13 17:35                   ` Trond Myklebust
2011-04-13 17:56                   ` Andy Adamson
2011-04-13 18:14                     ` Trond Myklebust
2011-04-13 18:47                       ` Chuck Lever
2011-04-13 19:04                         ` Jeff Layton
2011-04-14  0:21                     ` Dean
2011-04-14  0:42                       ` Trond Myklebust
2011-04-14  6:39                         ` Dean [this message]
2011-04-12 15:49 ` Trond Myklebust
     [not found]   ` <1302623369.4801.28.camel-SyLVLa/KEI9HwK5hSS5vWB2eb7JE58TQ@public.gmane.org>
2011-04-12 16:17     ` Badari Pulavarty
2011-04-12 16:26       ` Trond Myklebust
2011-04-15 17:33   ` Christoph Hellwig
2011-04-15 18:00     ` Trond Myklebust

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DA696AE.3060002@gmail.com \
    --to=seattleplus@gmail.com \
    --cc=Trond.Myklebust@netapp.com \
    --cc=andros@netapp.com \
    --cc=chuck.lever@oracle.com \
    --cc=jlayton@redhat.com \
    --cc=khoa@us.ibm.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=pbadari@us.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).