Re: [PATCH net-next v4 0/4] vsock/virtio/vhost: MSG_ZEROCOPY preparations

From: Arseniy Krasnov
Date: Fri Jul 28 2023 - 04:12:04 EST




On 28.07.2023 11:00, Arseniy Krasnov wrote:
>
>
> On 28.07.2023 08:45, Michael S. Tsirkin wrote:
>> On Fri, Jul 28, 2023 at 01:26:23AM +0300, Arseniy Krasnov wrote:
>>> Hello,
>>>
>>> this patchset is first of three parts of another big patchset for
>>> MSG_ZEROCOPY flag support:
>>> https://lore.kernel.org/netdev/20230701063947.3422088-1-AVKrasnov@xxxxxxxxxxxxxx/
>>
>> overall looks good. Two points I'd like to see addressed:
>
> Thanks!
>
>> - what's the performance with all these changes - still same?
>
> Yes, I perform quick tests and seems result are same. This is because last
> implemented logic when I compare size of payload against 'num_max' is
> for "emergency" case and not triggered in default environment. Anyway, I'll
> perform retest at least in nested guest case.

"default environment" is vanilla Qemu where queue size is 128 elements. To test
this logic i rebuild Qemu with for example queue of 8 elements.

Thanks, Arseniy

>
>> - most systems have a copybreak scheme where buffers
>> smaller than a given size are copied directly.
>> This will address regression you see with small buffers -
>> but need to find that value. we know it's between 4k and 32k :)
>
> I see, You suggest to find this value and add this check for decision to
> use zerocopy or copy ?
>
> Thanks, Arseniy
>
>>
>>
>>> During review of this series, Stefano Garzarella <sgarzare@xxxxxxxxxx>
>>> suggested to split it for three parts to simplify review and merging:
>>>
>>> 1) virtio and vhost updates (for fragged skbs) <--- this patchset
>>> 2) AF_VSOCK updates (allows to enable MSG_ZEROCOPY mode and read
>>> tx completions) and update for Documentation/.
>>> 3) Updates for tests and utils.
>>>
>>> This series enables handling of fragged skbs in virtio and vhost parts.
>>> Newly logic won't be triggered, because SO_ZEROCOPY options is still
>>> impossible to enable at this moment (next bunch of patches from big
>>> set above will enable it).
>>>
>>> I've included changelog to some patches anyway, because there were some
>>> comments during review of last big patchset from the link above.
>>>
>>> Head for this patchset is 9d0cd5d25f7d45bce01bbb3193b54ac24b3a60f3
>>>
>>> Link to v1:
>>> https://lore.kernel.org/netdev/20230717210051.856388-1-AVKrasnov@xxxxxxxxxxxxxx/
>>> Link to v2:
>>> https://lore.kernel.org/netdev/20230718180237.3248179-1-AVKrasnov@xxxxxxxxxxxxxx/
>>> Link to v3:
>>> https://lore.kernel.org/netdev/20230720214245.457298-1-AVKrasnov@xxxxxxxxxxxxxx/
>>>
>>> Changelog:
>>> * Patchset rebased and tested on new HEAD of net-next (see hash above).
>>> * See per-patch changelog after ---.
>>>
>>> Arseniy Krasnov (4):
>>> vsock/virtio/vhost: read data from non-linear skb
>>> vsock/virtio: support to send non-linear skb
>>> vsock/virtio: non-linear skb handling for tap
>>> vsock/virtio: MSG_ZEROCOPY flag support
>>>
>>> drivers/vhost/vsock.c | 14 +-
>>> include/linux/virtio_vsock.h | 6 +
>>> net/vmw_vsock/virtio_transport.c | 79 +++++-
>>> net/vmw_vsock/virtio_transport_common.c | 312 ++++++++++++++++++------
>>> 4 files changed, 330 insertions(+), 81 deletions(-)
>>>
>>> --
>>> 2.25.1
>>