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=QFYvS3Uh; dkim-atps=neutral Received: from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3]) by passt.top (Postfix) with ESMTPS id 707785A08B5 for ; Mon, 10 Nov 2025 07:00:57 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202510; t=1762754454; bh=SK1MYntWAm156cxbL0XHb4wnKnIUCObqwuIT7AdLINo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=QFYvS3UhkiCDasxcWDZ9kQKwfbe84ZEbUFQMDQZD+tpvMLAVlsWjxY6hGGkeNNyA7 YEIJndg/FJsIiAX4THaQXvBogacFEHbPnIqCoaq0r3Zrq1rML6vQyU9i+kbcYEP4e3 dslvKyKu8bsbMsZrSXOnQEUOSI7wUat7zI+0HI+ngv++aMV0jAHEnqSq/q+DZNWXNG /MlO2BLohDi+IpanvEd8MVI2kD65566SJlqiO55qjZvpqUWQGgWIweYgELcoc2ZWsw 9Hi7Ghjnc80KRtQYOZwthAZA5LNb8dKfWBswVxVuoOSh4yBAtUpLKOmSc1kw92X1+c azFrToEwvadug== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4d4fD62Wqnz4wDR; Mon, 10 Nov 2025 17:00:54 +1100 (AEDT) Date: Mon, 10 Nov 2025 17:00:50 +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="c3/uVKb/5eu4BtvP" Content-Disposition: inline In-Reply-To: Message-ID-Hash: P4Q2M54HIRR3EXN5E2EEPPDYYGCXJFBU X-Message-ID-Hash: P4Q2M54HIRR3EXN5E2EEPPDYYGCXJFBU 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: --c3/uVKb/5eu4BtvP Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Nov 10, 2025 at 03:40:25PM +1100, David Gibson wrote: > On Fri, Nov 07, 2025 at 03:38:57PM +0100, Laurent Vivier wrote: > > This series implements multiqueue support for vhost-user mode, allowing= passt > > to utilize multiple queue pairs. There is no improved network performan= ce 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 t= he > > appropriate RX queue based on which TX queue they originated from, enab= ling the > > guest kernel to distribute network traffic across multiple queues > > and vCPUs. >=20 > 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. >=20 > > 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 ha= ndlers > > (TCP, UDP, ICMP, ARP, DHCP, DHCPv6, NDP) > > - flow-aware queue routing that matches RX queue selection to the incom= ing > > 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,= while > > RX packets are routed to queues based on their associated flows. Host-i= nitiated > > 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, beh= avior > > remains unchanged with single-queue operation. Having now read the whole series. I noted on an individual patch that it's sometimes confusing what's being communicated as queue pair ID, what as absolute queue ID. Perhaps that discussion belongs better not attached to a specific patch. I think we should standardize on a single way of indexing, in as much of the code as possible - the exception should be in the low-level code that actually deals with the vq interfaces. I _think_ queue pair will simplify things compared to absolute queue number, but I might be wrong. --=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 --c3/uVKb/5eu4BtvP Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEO+dNsU4E3yXUXRK2zQJF27ox2GcFAmkRf5EACgkQzQJF27ox 2Gewfg//agciM/5JnemWA5RanOZ72g4gQ1EHno/ymTtuPK/e52moqYwe0szVyIjv CbQYA/iCA4WOtt+jz3rU5TE2gZGdwGmPojSMxVIAtc8i8rXVuMzjM+LsPE6dewr7 AFBqg06herRYbRaAZgCZtYUTam8JDnLrCt2kycKybX6+R6HvbP3+IgyYT5leyP3I U2Hk062yTDcAHZgeOkRmnI3RRuIyYJAQCYr9LRvE6CzX9rtJ64Kore4XLhO1PDxE 4nO8mcJqVwpa1c2YjgjSTnA7dv7494BukzBNEB06MkFYoZTLf++qwgKy6VBW39g9 C2L+1cQMf3fe7O1XxgKg1wpEtUnr6hNRYMRs449LOy8QpRf2DX8lTHmfzNy/UEBq aJQb6/BvXAbxsBJjf8NcKgtgolmdiYBItRqsP32h2udn9yT6xTUtAV8iUCUUA/Hy NYwG+VfMdxlmF+J/pceXPybLEpgNfJNpz1KdVOfkYK3wANtpTXd1NwOxuTc56e63 MbhpYNVhJamckLJnSZY5OeofsomPOl9TAxe/SqsR9tEEq2Lkyhr1cOwq5cyqugjN ujSP/oQDKyje7tfobNKZgHvRRajpP7M2oOy0fsCkS5WfXT1S99UtSLvsVHSxmtnu mPUCDzO5mr4NAlMpAEN2vBQSYkdHSBBIKgcFiEHgR+y/atExTZA= =EoGr -----END PGP SIGNATURE----- --c3/uVKb/5eu4BtvP--