From: Paolo Bonzini <pbonzini@redhat.com>
To: Eric Blake <eblake@redhat.com>, qemu-devel@nongnu.org
Cc: Florian Westphal <fw@strlen.de>,
Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
"open list:Network Block Dev..." <qemu-block@nongnu.org>
Subject: Re: [PATCH v2 for 8.0?] nbd/server: Request TCP_NODELAY
Date: Tue, 4 Apr 2023 15:49:05 +0200 [thread overview]
Message-ID: <2d2d0705-b5eb-b3b6-f558-3d460db58729@redhat.com> (raw)
In-Reply-To: <20230404004047.142086-1-eblake@redhat.com>
On 4/4/23 02:40, Eric Blake wrote:
> Nagle's algorithm adds latency in order to reduce network packet
> overhead on small packets. But when we are already using corking to
> merge smaller packets into transactional requests, the extra delay
> from TCP defaults just gets in the way (see recent commit bd2cd4a4).
>
> For reference, qemu as an NBD client already requests TCP_NODELAY (see
> nbd_connect() in nbd/client-connection.c); as does libnbd as a client
> [1], and nbdkit as a server [2]. Furthermore, the NBD spec recommends
> the use of TCP_NODELAY [3].
>
> [1] https://gitlab.com/nbdkit/libnbd/-/blob/a48a1142/generator/states-connect.c#L39
> [2] https://gitlab.com/nbdkit/nbdkit/-/blob/45b72f5b/server/sockets.c#L430
> [3] https://github.com/NetworkBlockDevice/nbd/blob/master/doc/proto.md#protocol-phases
>
> CC: Florian Westphal <fw@strlen.de>
> Signed-off-by: Eric Blake <eblake@redhat.com>
> Message-Id: <20230327192947.1324372-1-eblake@redhat.com>
> ---
>
> v2 fix typo, enhance commit message
>
> Given that corking made it in through Kevin's tree for 8.0-rc2 but
> this one did not, but I didn't get any R-b, is there any objection to
> me doing a pull request to get this into 8.0-rc3?
>
> nbd/server.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/nbd/server.c b/nbd/server.c
> index 848836d4140..3d8d0d81df2 100644
> --- a/nbd/server.c
> +++ b/nbd/server.c
> @@ -2758,6 +2758,7 @@ void nbd_client_new(QIOChannelSocket *sioc,
> }
> client->tlsauthz = g_strdup(tlsauthz);
> client->sioc = sioc;
> + qio_channel_set_delay(QIO_CHANNEL(sioc), false);
> object_ref(OBJECT(client->sioc));
> client->ioc = QIO_CHANNEL(sioc);
> object_ref(OBJECT(client->ioc));
>
> base-commit: efcd0ec14b0fe9ee0ee70277763b2d538d19238d
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
prev parent reply other threads:[~2023-04-04 13:49 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-04 0:40 [PATCH v2 for 8.0?] nbd/server: Request TCP_NODELAY Eric Blake
2023-04-04 8:11 ` Philippe Mathieu-Daudé
2023-04-04 13:49 ` Paolo Bonzini [this message]
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=2d2d0705-b5eb-b3b6-f558-3d460db58729@redhat.com \
--to=pbonzini@redhat.com \
--cc=eblake@redhat.com \
--cc=fw@strlen.de \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=vsementsov@yandex-team.ru \
/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).