From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=none (p=none dis=none) header.from=gibson.dropbear.id.au Authentication-Results: passt.top; dkim=pass (2048-bit key; secure) header.d=gibson.dropbear.id.au header.i=@gibson.dropbear.id.au header.a=rsa-sha256 header.s=202510 header.b=b0ThN0Du; dkim-atps=neutral Received: from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76]) by passt.top (Postfix) with ESMTPS id E76865A08B5 for ; Mon, 10 Nov 2025 06:54:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202510; t=1762754059; bh=m9TG9bwjF/InPLfVTDFLV1aQgjx9hnhohT/4VKB4pFY=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=b0ThN0Du1pfW6z6P38Elzmc+/lYszL/xm0OdQ7U7eqwUzmWFVRdGh5yFmmUHK7tyT HXomxz5nDcEa/x/4drD2BK/psJTAEoHbuZICkgbBz5wI82o2v0LPBDL+bbXRSTRhXY 531I/JiaCjJiorCP+EQ5PjRwmdEcCevE0NZV75pqDq1Nlu0BOqUdDs91dr28ZBIEX/ Utrb1DJsKDSxC1eJE9NR8JXUv7F5qVFdIs6euWNfmR+Xt0GayP9Rp2NkIpv0MRNtUV UiHTk+S/lE01sI77Tr956m8fl6ICdcOHRc42GjDWFrK41NugCBD9/aWiBIfHJDD1SH 06tYVU1nfwrAg== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4d4f4W4GvSz4wCy; Mon, 10 Nov 2025 16:54:19 +1100 (AEDT) Date: Mon, 10 Nov 2025 15:40:25 +1100 From: David Gibson To: Laurent Vivier Subject: Re: [PATCH 0/4] vhost-user: Add multiqueue support Message-ID: References: <20251107143901.89955-1-lvivier@redhat.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="LVvYnfHmJ72D4iVe" Content-Disposition: inline In-Reply-To: <20251107143901.89955-1-lvivier@redhat.com> Message-ID-Hash: IEGCOJ46OZ3IOOULXCXQS25DV4IUN6QU X-Message-ID-Hash: IEGCOJ46OZ3IOOULXCXQS25DV4IUN6QU X-MailFrom: dgibson@gandalf.ozlabs.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: passt-dev@passt.top X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --LVvYnfHmJ72D4iVe Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Nov 07, 2025 at 03:38:57PM +0100, Laurent Vivier wrote: > This series implements multiqueue support for vhost-user mode, allowing p= asst > to utilize multiple queue pairs. There is no improved network performance= because > we keep using only one thread. >=20 > The implementation introduces a --max-queues parameter to configure up to= 16 > queue pairs (32 virtqueues) in vhost-user mode. Packets are routed to the > appropriate RX queue based on which TX queue they originated from, enabli= ng the > guest kernel to distribute network traffic across multiple queues > and vCPUs. I find this description a little bit confusing, since at the packet (L2) level things going to an Rx queue don't really have an originating Tx queue. I assume you mean that each flow gets associated to a single queue pair, so both Rx and Tx packets on that flow will use the same queue pair (and, later, thread). Is that correct? If so I think it would be clearer to explicitly describe this in terms of flows. > This series adds: > - configuration support for multiqueue via --max-queues parameter > - queue parameter threading throughout the network stack - a significant > refactoring that propagates queue information through all protocol hand= lers > (TCP, UDP, ICMP, ARP, DHCP, DHCPv6, NDP) > - flow-aware queue routing that matches RX queue selection to the incoming > TX queue, maintaining proper packet affinity > - comprehensive test coverage with VHOST_USER_MQ environment variable to > validate multiqueue functionality across all test scenarios >=20 > Current behavior: TX queue selection is controlled by the guest kernel, w= hile > RX packets are routed to queues based on their associated flows. Host-ini= tiated > flows currently default to queue 0. >=20 > The RX queue of a flow is updated on each new packet from the TX queue to > maintain affinity. >=20 > The changes maintain backward compatibility - without --max-queues, behav= ior > remains unchanged with single-queue operation. >=20 > Laurent Vivier (4): > vhost-user: Enable multiqueue > vhost-user: Add queue parameter throughout the network stack > multiqueue: Add queue-aware flow management for multiqueue support > test: Add multiqueue support to vhost-user test infrastructure >=20 > arp.c | 12 ++--- > arp.h | 4 +- > conf.c | 31 ++++++++++++- > dhcp.c | 5 ++- > dhcp.h | 2 +- > dhcpv6.c | 12 ++--- > dhcpv6.h | 2 +- > flow.c | 32 +++++++++++++ > flow.h | 10 +++++ > fwd.c | 4 +- > icmp.c | 25 ++++++----- > icmp.h | 2 +- > ndp.c | 32 +++++++------ > ndp.h | 5 ++- > passt.h | 2 + > tap.c | 120 +++++++++++++++++++++++++++++-------------------- > tap.h | 18 ++++---- > tcp.c | 82 ++++++++++++++++++--------------- > tcp.h | 11 ++--- > tcp_vu.c | 8 ++-- > test/lib/setup | 60 +++++++++++++++++++------ > test/run | 23 ++++++++++ > udp.c | 40 ++++++++++------- > udp.h | 12 ++--- > udp_flow.c | 8 +++- > udp_flow.h | 2 +- > udp_vu.c | 4 +- > vhost_user.c | 38 +++++++++------- > virtio.h | 2 +- > vu_common.c | 13 +++--- > vu_common.h | 3 +- > 31 files changed, 416 insertions(+), 208 deletions(-) >=20 > --=20 > 2.51.0 >=20 >=20 --=20 David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson --LVvYnfHmJ72D4iVe Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEO+dNsU4E3yXUXRK2zQJF27ox2GcFAmkRbLgACgkQzQJF27ox 2Ge3/xAAkCL3n5pNkBNaC13Z3HXTRxkslI2zlfkmtOdR6hCyFUVkO3sZZrsfoxVe bEMuQd4MLAu9l5SsbcnW1UM+2zZojQM48IhpGAoBwPX8DgZLThCgg3lsA/Jc4xYE Sq2a0Wwn0S79lmxGaHxQoFHE0xWkkNPeFn6EK3TzVo7Ra+cmlGKRubKHvrrnkQz1 tYPtTb9lyhcxUpHB8tOScqGhFKw//hFTojXZIaTQMn+fkxGQqZZ2HoYFgb5cGIaq yM/llpVl8PHI3yw3xWtwmYnBiRK9dCqAzDzH7NTtiJI4fzO9vgkgBLF4ftKWcxeb cWHHDWqXusgz8DFmXq847c8VrKF6v2S91d3o8hM+RW3nrayfIa7Faq3Hyl4o95pw Vpx+2vmoUqvwD5XBUfBS0C98Y7IeXV5XQMS9LYJZiajT5km3OfbX9ic6iS79Ctcb 43k39xsCZbj2x1jzjhqHnbpkNdb+RoMXkqTqfMW4d5jcI/iXs+YzeAkKQD6FiqMy eQ+03/PLsqlKAvD4EsUSPlGuoEHlkdQG254B6XKB6zpkT+Gb/awzD1Z6G67Azjmo c1oyyxf3+2Y9cZi7ap8c7dC7pZc4lXg4YdJErOyKn3aLrBhmZQfDgHV/VyuR+gYS P+g7fQRp3nh33//c+etITezdXaQiP7ZbnXZGOxVM1CnUrAG1Ugg= =ZsjJ -----END PGP SIGNATURE----- --LVvYnfHmJ72D4iVe--