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=202512 header.b=M3j7Q7Pq; dkim-atps=neutral Received: from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3]) by passt.top (Postfix) with ESMTPS id D77F55A0625 for ; Wed, 10 Dec 2025 01:05:20 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202512; t=1765325117; bh=rIri4qmVWCd9t1/3b9B6DsordtZT9l1OwjfqElF1+ts=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=M3j7Q7PqEvy7m84nKZG0axML/Ljs9CwlfLXuOKHvVwn2Gu1yvVYRAOuELsx+drBeR 6bk3XwCyPgtgI1JLeCYWT1rdloOPODq8JKvK46poqbsSqo84X07mCzXXaeXNEbGtpG KAzhtNQxmGELyh4rojJpo2F5QmaNK1IzdFZCUktD0wNgI+7q0xzbhCUPIazJ3TGIHn +CxAKYpHg/TDAqyTwXiDCjMArTe1j5WZCDpBfGZ+YTlHuxuyGPxTy1S6ZlM8Axo9OY Zi6CMhFOlKmiCiH0DRvXOx5DIVHXylWYYa/QM8e5embZocssQgWjhiyASLr0FZQGim pPM2/24Fy/14Q== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4dQwvx4jnTz4wBG; Wed, 10 Dec 2025 11:05:17 +1100 (AEDT) Date: Wed, 10 Dec 2025 11:05:13 +1100 From: David Gibson To: Laurent Vivier Subject: Re: [PATCH v3 3/6] test: Add multiqueue support to vhost-user test infrastructure Message-ID: References: <20251203185435.582096-1-lvivier@redhat.com> <20251203185435.582096-4-lvivier@redhat.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="VRpkxjC65m+d7yl4" Content-Disposition: inline In-Reply-To: <20251203185435.582096-4-lvivier@redhat.com> Message-ID-Hash: 367CKKD2GK47J2ULKF24LKTTMN6GWD6J X-Message-ID-Hash: 367CKKD2GK47J2ULKF24LKTTMN6GWD6J 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: --VRpkxjC65m+d7yl4 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Dec 03, 2025 at 07:54:31PM +0100, 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. >=20 > 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.51.1 >=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 --VRpkxjC65m+d7yl4 Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEO+dNsU4E3yXUXRK2zQJF27ox2GcFAmk4uTgACgkQzQJF27ox 2GebSQ//SIjGt2EyCtvGx88QE7uxK0rpXLSJfFtDHwuazcBVmG8GbMtE88N3gEkT Ksed2MGOKesSTim0sRmzvrTPaBJ738BvSlgZc/i2H+cYon4Sy4S8J+Cgk6+6Htwv WWW0fjtI8Zd1FlR0fJmtVnw0LiRRo3+OeKCHi+xFZuJlh5J5cTy1n0/x9CDNZJlm 5gUZ9hF/Iskyx8fEujCe1Lq0FwMyuorhYUkvXzHFATQ+Q+ghKPG5/raEDITQ1BSv DZpgLTtv2BUZTWCvlQbygD8k3Usa8pypfPUVXfHLtYWnQ6u2ZIQJqN3AeROXDFGt CF742f0uvQSFlF8hTJuRz3Y+BnvcRWot/PteveVAioqTH3cxJMw550fla5fMHnX9 bhJt6ab/EVccu8iOx3KKA0pX0uifyJesCN66sSd5P7bh6r5aopt+A8Un6nA7DY2e G7ISWXcjF4BuN4nrr6vXKGu9y8Ensne4hRHtu5Bf2U1SbQzMhI33XPQqzHdKF7Jf 5VcfrDp2BDSxAaOC0PhqXGrshzYjPmZJR1KOiL1DBn/enRAeSFxWWyZD7bbBURXd rAt6wAXI2zRdMY0tzw31A8JE6cjXjIZ1jcz45WlhMziWZ2mPJ+98rw8eqptIzxzW xgQupSTz8HBe4no+Ts4WfFBMe8xYM4Zm9R1wo9MF7BnI4/ywgSc= =WH6n -----END PGP SIGNATURE----- --VRpkxjC65m+d7yl4--