qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 for 8.0?] nbd/server: Request TCP_NODELAY
@ 2023-04-04  0:40 Eric Blake
  2023-04-04  8:11 ` Philippe Mathieu-Daudé
  2023-04-04 13:49 ` Paolo Bonzini
  0 siblings, 2 replies; 3+ messages in thread
From: Eric Blake @ 2023-04-04  0:40 UTC (permalink / raw)
  To: qemu-devel
  Cc: Florian Westphal, Vladimir Sementsov-Ogievskiy,
	open list:Network Block Dev...

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
-- 
2.39.2



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2 for 8.0?] nbd/server: Request TCP_NODELAY
  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
  1 sibling, 0 replies; 3+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-04-04  8:11 UTC (permalink / raw)
  To: Eric Blake, qemu-devel
  Cc: Florian Westphal, Vladimir Sementsov-Ogievskiy,
	open list:Network Block Dev...

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?

FWIW, no objection.

>   nbd/server.c | 1 +
>   1 file changed, 1 insertion(+)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2 for 8.0?] nbd/server: Request TCP_NODELAY
  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
  1 sibling, 0 replies; 3+ messages in thread
From: Paolo Bonzini @ 2023-04-04 13:49 UTC (permalink / raw)
  To: Eric Blake, qemu-devel
  Cc: Florian Westphal, Vladimir Sementsov-Ogievskiy,
	open list:Network Block Dev...

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>



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-04-04 13:49 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 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).