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=202606 header.b=MJEL9nqS; dkim-atps=neutral Received: from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76]) by passt.top (Postfix) with ESMTPS id B232C5A0265 for ; Fri, 19 Jun 2026 07:30:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202606; t=1781847029; bh=OeSRqtOyazI7S6r4mx+5R7cyOb6a+JZbaRaV5fJdwsM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=MJEL9nqStux5gRuhAgtapVzN9Ao7dBHiEBRHO+mkYANIfedPbRZtgKifPEgiAAjWo BkGphLh93qglEuJj7rSYJOs9g8ZP/eE7X1Y7iauUa2JrkAqNMTq8mSe5ILuahIWbzk y70zTdEGY6HZt0yn9SPIbAFVPkFi00vOtsN2VE1ergl/1eH/bLjXoOaGf3S51id2xP jjENrYO37uKmcn3RubzHFdhtDSpM5Ln37Y4l3f9xwH7y9zxADKYv4pBFRE3n9YiFRJ lWP72Hpqz96WTLDDaLU2HMVQVyON9/2fV+jUxOsp/jtYWDOren4gTqTtcOTK1bOdh2 HvYG7+Cl8ADQA== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4ghR510B6Kz58sw; Fri, 19 Jun 2026 15:30:29 +1000 (AEST) Date: Fri, 19 Jun 2026 15:06:26 +1000 From: David Gibson To: Laurent Vivier Subject: Re: [PATCH v5 03/12] test: Add multiqueue support to vhost-user test infrastructure Message-ID: References: <20260616125130.1324274-1-lvivier@redhat.com> <20260616125130.1324274-4-lvivier@redhat.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="/99+VOX9oQ13f15y" Content-Disposition: inline In-Reply-To: <20260616125130.1324274-4-lvivier@redhat.com> Message-ID-Hash: PBVZK7G24GVTCWOVLF2HXHICFNKNBY3C X-Message-ID-Hash: PBVZK7G24GVTCWOVLF2HXHICFNKNBY3C 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: --/99+VOX9oQ13f15y Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Jun 16, 2026 at 02:51:21PM +0200, Laurent Vivier wrote: > With the recent addition of multiqueue support to passt's vhost-user > implementation, we need test coverage to validate the functionality. The > test infrastructure previously only tested single queue configurations. This paragraph seems a little misleading, with this patch at the beginning of the series. Otherwise LGTM. > Add a VHOST_USER_MQ environment variable to control the number of queue > pairs. The queues parameter on the netdev is always set to this value > (defaulting to 1 for single queue). When set to values greater than 1, > the setup scripts add mq=3Dtrue to the virtio-net device for enabling > multiqueue support. >=20 > The test suite now runs an additional set of tests with 8 queue pairs to > exercise the multiqueue paths across all protocols (TCP, UDP, ICMP) and > services (DHCP, NDP). Note that the guest kernel will only enable as many > queues as there are vCPUs. >=20 > Signed-off-by: Laurent Vivier > Reviewed-by: David Gibson > --- > test/lib/setup | 21 +++++++++++++-------- > test/run | 23 +++++++++++++++++++++++ > 2 files changed, 36 insertions(+), 8 deletions(-) >=20 > diff --git a/test/lib/setup b/test/lib/setup > index 5994598744a3..3872a02b109b 100755 > --- a/test/lib/setup > +++ b/test/lib/setup > @@ -18,6 +18,8 @@ VCPUS=3D"$( [ $(nproc) -ge 8 ] && echo 6 || echo $(( $(= nproc) / 2 + 1 )) )" > MEM_KIB=3D"$(sed -n 's/MemTotal:[ ]*\([0-9]*\) kB/\1/p' /proc/meminfo)" > QEMU_ARCH=3D"$(uname -m)" > [ "${QEMU_ARCH}" =3D "i686" ] && QEMU_ARCH=3Di386 > +VHOST_USER=3D0 > +VHOST_USER_MQ=3D1 > =20 > # setup_build() - Set up pane layout for build tests > setup_build() { > @@ -46,6 +48,7 @@ setup_passt() { > [ ${DEBUG} -eq 1 ] && __opts=3D"${__opts} -d" > [ ${TRACE} -eq 1 ] && __opts=3D"${__opts} --trace" > [ ${VHOST_USER} -eq 1 ] && __opts=3D"${__opts} --vhost-user" > + [ ${VHOST_USER_MQ} -gt 1 ] && __virtio_opts=3D"${__virtio_opts},mq=3Dtr= ue" > =20 > context_run passt "make clean" > context_run passt "make valgrind" > @@ -59,8 +62,8 @@ setup_passt() { > __vmem=3D"$(((${__vmem} + 500) / 1000))G" > __qemu_netdev=3D" \ > -chardev socket,id=3Dc,path=3D${STATESETUP}/passt.socket \ > - -netdev vhost-user,id=3Dv,chardev=3Dc \ > - -device virtio-net,netdev=3Dv \ > + -netdev vhost-user,id=3Dv,chardev=3Dc,queues=3D${VHOST_USER_MQ} \ > + -device virtio-net,netdev=3Dv${__virtio_opts} \ > -object memory-backend-memfd,id=3Dm,share=3Don,size=3D${__vmem} \ > -numa node,memdev=3Dm" > else > @@ -156,6 +159,7 @@ setup_passt_in_ns() { > [ ${DEBUG} -eq 1 ] && __opts=3D"${__opts} -d" > [ ${TRACE} -eq 1 ] && __opts=3D"${__opts} --trace" > [ ${VHOST_USER} -eq 1 ] && __opts=3D"${__opts} --vhost-user" > + [ ${VHOST_USER_MQ} -gt 1 ] && __virtio_opts=3D"${__virtio_opts},mq=3Dtr= ue" > =20 > if [ ${VALGRIND} -eq 1 ]; then > context_run passt "make clean" > @@ -173,8 +177,8 @@ setup_passt_in_ns() { > __vmem=3D"$(((${__vmem} + 500) / 1000))G" > __qemu_netdev=3D" \ > -chardev socket,id=3Dc,path=3D${STATESETUP}/passt.socket \ > - -netdev vhost-user,id=3Dv,chardev=3Dc \ > - -device virtio-net,netdev=3Dv \ > + -netdev vhost-user,id=3Dv,chardev=3Dc,queues=3D${VHOST_USER_MQ} \ > + -device virtio-net,netdev=3Dv${__virtio_opts} \ > -object memory-backend-memfd,id=3Dm,share=3Don,size=3D${__vmem} \ > -numa node,memdev=3Dm" > else > @@ -251,6 +255,7 @@ setup_two_guests() { > [ ${DEBUG} -eq 1 ] && __opts=3D"${__opts} -d" > [ ${TRACE} -eq 1 ] && __opts=3D"${__opts} --trace" > [ ${VHOST_USER} -eq 1 ] && __opts=3D"${__opts} --vhost-user" > + [ ${VHOST_USER_MQ} -gt 1 ] && __virtio_opts=3D"${__virtio_opts},mq=3Dtr= ue" > =20 > context_run_bg passt_2 "./passt -s ${STATESETUP}/passt_2.socket -P ${ST= ATESETUP}/passt_2.pid -f ${__opts} --hostname hostname2 --fqdn fqdn2 -t 100= 04 -u 10004" > wait_for [ -f "${STATESETUP}/passt_2.pid" ] > @@ -260,14 +265,14 @@ setup_two_guests() { > __vmem=3D"$(((${__vmem} + 500) / 1000))G" > __qemu_netdev1=3D" \ > -chardev socket,id=3Dc,path=3D${STATESETUP}/passt_1.socket \ > - -netdev vhost-user,id=3Dv,chardev=3Dc \ > - -device virtio-net,netdev=3Dv \ > + -netdev vhost-user,id=3Dv,chardev=3Dc,queues=3D${VHOST_USER_MQ} \ > + -device virtio-net,netdev=3Dv${__virtio_opts} \ > -object memory-backend-memfd,id=3Dm,share=3Don,size=3D${__vmem} \ > -numa node,memdev=3Dm" > __qemu_netdev2=3D" \ > -chardev socket,id=3Dc,path=3D${STATESETUP}/passt_2.socket \ > - -netdev vhost-user,id=3Dv,chardev=3Dc \ > - -device virtio-net,netdev=3Dv \ > + -netdev vhost-user,id=3Dv,chardev=3Dc,queues=3D${VHOST_USER_MQ} \ > + -device virtio-net,netdev=3Dv${__virtio_opts} \ > -object memory-backend-memfd,id=3Dm,share=3Don,size=3D${__vmem} \ > -numa node,memdev=3Dm" > else > diff --git a/test/run b/test/run > index f858e5586847..652cc12b1234 100755 > --- a/test/run > +++ b/test/run > @@ -190,6 +190,29 @@ run() { > test passt_vu_in_ns/shutdown > teardown passt_in_ns > =20 > + VHOST_USER=3D1 > + VHOST_USER_MQ=3D8 > + setup passt_in_ns > + test passt_vu/ndp > + test passt_vu_in_ns/dhcp > + test passt_vu_in_ns/icmp > + test passt_vu_in_ns/tcp > + test passt_vu_in_ns/udp > + test passt_vu_in_ns/shutdown > + teardown passt_in_ns > + > + setup two_guests > + test two_guests_vu/basic > + teardown two_guests > + > + setup passt_in_ns > + test passt_vu/ndp > + test passt_vu_in_ns/dhcp > + test perf/passt_vu_tcp > + test perf/passt_vu_udp > + test passt_vu_in_ns/shutdown > + teardown passt_in_ns > + > # TODO: Make those faster by at least pre-installing gcc and make on > # non-x86 images, then re-enable. > skip_distro() { > --=20 > 2.54.0 >=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 --/99+VOX9oQ13f15y Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEO+dNsU4E3yXUXRK2zQJF27ox2GcFAmo0zkQACgkQzQJF27ox 2Ged3g//T3cu2UokLhpaZFm9i91gObhwe9XRAN1HzL/PX7bzp3n+lfPO+J7rtTfU SGBXehiInSP/VmLppXJ6omeJLqj59d6IdjvfTw2G7ThOFQCRO/cCEgOjpPY5D4KX cCWJCp25EPjKX6/CYteYQrMvJl0w6kbM7Cm0PTWCgtvOy0OVRQ37qgSYwbkxzs3d zZP7Y76g7YUjgCCPLX6QkvJhlljqpgVhrKABfiIvfNqZy+Lgt2aM/uW+uw2S2L22 oknjzvo3wCp0OBcUJp2mpf3XcpQQFyR6X8ENv/ceSnCpb6MLl6c48oF79I0Dx09N 1Vtjkyg55qlRwT/JJuan3BDK4sjPP0lTGqDKkPXhHegV1bSEJeSkncyPykUwndSy lH+c0M9uHvY4DJpKIuxEIcNPjsyatH7Edp2xMY9Ws+wO6pFaPh4iI5aeIFHgUoH+ FVyEXgj9CAJSmr6QEyJu+PwficKWLRBX2Dip7p5X4wcBvTQYQZIn3TEVQ2auC4tq 1lHitH8GX3fW5ck6h+OVjYRSkDsgdWNUdCrBA4PsrahSDdCq6Tyll20q/Renkmxl LFthLOJtYHz92EI3G5h8rZNvm5Fobkp269B0ismiFzKDtDPIDGvFSjjjp5qRrmE/ vmNu9yCex9o6IENnmKSNNtOAs7jk+E0KVtxX3Vfm8naszTY+wJA= =0RmP -----END PGP SIGNATURE----- --/99+VOX9oQ13f15y--