[Libguestfs] [libnbd PATCH 2/2] states: Another use for MSG_MORE

Richard W.M. Jones rjones at redhat.com
Fri Jun 14 07:57:56 UTC 2019


On Wed, Jun 12, 2019 at 05:04:05PM -0500, Eric Blake wrote:
> Following up to cf1a3045, if we know that we have more requests to
> transmit (because the user was queueing up requests while we were busy
> elsewhere), and our current request is short (a non-write, or a write
> with a small payload), then our current command can be batched with
> the next command.
> 
> The numbers here were not as dramatic and may be merely in the noise;
> over three runs of:
> 
>  $ time ~/nbdkit/nbdkit memory 100M --run 'examples/threaded-reads-and-writes localhost 10809'
> 
> my machine improved runtime from 12.68s to 12.59s.
> ---
>  generator/states-issue-command.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/generator/states-issue-command.c b/generator/states-issue-command.c
> index cce43d7..5d2a7e6 100644
> --- a/generator/states-issue-command.c
> +++ b/generator/states-issue-command.c
> @@ -42,7 +42,7 @@
>    h->request.count = htobe32 ((uint32_t) cmd->count);
>    h->wbuf = &h->request;
>    h->wlen = sizeof (h->request);
> -  if (cmd->type == NBD_CMD_WRITE)
> +  if (cmd->type == NBD_CMD_WRITE || cmd->next)
>      h->wflags = MSG_MORE;
>    SET_NEXT_STATE (%SEND_REQUEST);
>    return 0;
> @@ -70,6 +70,8 @@
>    if (cmd->type == NBD_CMD_WRITE) {
>      h->wbuf = cmd->data;
>      h->wlen = cmd->count;
> +    if (cmd->next && cmd->count < 64 * 1024)
> +      h->wflags = MSG_MORE;
>      SET_NEXT_STATE (%SEND_WRITE_PAYLOAD);
>    }
>    else

We may as well do this, ACK series.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html




More information about the Libguestfs mailing list