From: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
To: Tushar Vyavahare <tushar.vyavahare@intel.com>
Cc: <bpf@vger.kernel.org>, <netdev@vger.kernel.org>,
<bjorn@kernel.org>, <magnus.karlsson@intel.com>,
<jonathan.lemon@gmail.com>, <davem@davemloft.net>,
<kuba@kernel.org>, <pabeni@redhat.com>, <ast@kernel.org>,
<daniel@iogearbox.net>, <tirthendu.sarkar@intel.com>
Subject: Re: [PATCH bpf-next v2 2/2] selftests/xsk: Enhance batch size support with dynamic configurations
Date: Mon, 1 Jul 2024 18:40:52 +0200 [thread overview]
Message-ID: <ZoLcFPyFv3pcqPTT@boxer> (raw)
In-Reply-To: <20240627043548.221724-3-tushar.vyavahare@intel.com>
On Thu, Jun 27, 2024 at 04:35:48AM +0000, Tushar Vyavahare wrote:
> Introduce dynamic adjustment capabilities for fill_size and comp_size
> parameters to support larger batch sizes beyond the previous 2K limit.
>
> Update HW_SW_MAX_RING_SIZE test cases to evaluate AF_XDP's robustness by
> pushing hardware and software ring sizes to their limits. This test
> ensures AF_XDP's reliability amidst potential producer/consumer throttling
> due to maximum ring utilization.
>
> Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
> ---
> tools/testing/selftests/bpf/xskxceiver.c | 26 ++++++++++++++++++------
> tools/testing/selftests/bpf/xskxceiver.h | 2 ++
> 2 files changed, 22 insertions(+), 6 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c
> index 088df53869e8..8144fd145237 100644
> --- a/tools/testing/selftests/bpf/xskxceiver.c
> +++ b/tools/testing/selftests/bpf/xskxceiver.c
> @@ -196,6 +196,12 @@ static int xsk_configure_umem(struct ifobject *ifobj, struct xsk_umem_info *umem
> };
> int ret;
>
> + if (umem->fill_size)
> + cfg.fill_size = umem->fill_size;
> +
> + if (umem->comp_size)
> + cfg.comp_size = umem->comp_size;
> +
> if (umem->unaligned_mode)
> cfg.flags |= XDP_UMEM_UNALIGNED_CHUNK_FLAG;
>
> @@ -265,6 +271,10 @@ static int __xsk_configure_socket(struct xsk_socket_info *xsk, struct xsk_umem_i
> cfg.bind_flags |= XDP_SHARED_UMEM;
> if (ifobject->mtu > MAX_ETH_PKT_SIZE)
> cfg.bind_flags |= XDP_USE_SG;
> + if (umem->comp_size)
> + cfg.tx_size = umem->comp_size;
> + if (umem->fill_size)
> + cfg.rx_size = umem->fill_size;
>
> txr = ifobject->tx_on ? &xsk->tx : NULL;
> rxr = ifobject->rx_on ? &xsk->rx : NULL;
> @@ -1616,7 +1626,7 @@ static void xsk_populate_fill_ring(struct xsk_umem_info *umem, struct pkt_stream
> if (umem->num_frames < XSK_RING_PROD__DEFAULT_NUM_DESCS)
> buffers_to_fill = umem->num_frames;
> else
> - buffers_to_fill = XSK_RING_PROD__DEFAULT_NUM_DESCS;
> + buffers_to_fill = umem->fill_size;
>
> ret = xsk_ring_prod__reserve(&umem->fq, buffers_to_fill, &idx);
> if (ret != buffers_to_fill)
> @@ -2445,7 +2455,7 @@ static int testapp_hw_sw_min_ring_size(struct test_spec *test)
>
> static int testapp_hw_sw_max_ring_size(struct test_spec *test)
> {
> - u32 max_descs = XSK_RING_PROD__DEFAULT_NUM_DESCS * 2;
> + u32 max_descs = XSK_RING_PROD__DEFAULT_NUM_DESCS * 4;
> int ret;
>
> test->set_ring = true;
> @@ -2453,7 +2463,8 @@ static int testapp_hw_sw_max_ring_size(struct test_spec *test)
> test->ifobj_tx->ring.tx_pending = test->ifobj_tx->ring.tx_max_pending;
> test->ifobj_tx->ring.rx_pending = test->ifobj_tx->ring.rx_max_pending;
> test->ifobj_rx->umem->num_frames = max_descs;
> - test->ifobj_rx->xsk->rxqsize = max_descs;
> + test->ifobj_rx->umem->fill_size = max_descs;
> + test->ifobj_rx->umem->comp_size = max_descs;
> test->ifobj_tx->xsk->batch_size = XSK_RING_PROD__DEFAULT_NUM_DESCS;
> test->ifobj_rx->xsk->batch_size = XSK_RING_PROD__DEFAULT_NUM_DESCS;
>
> @@ -2461,9 +2472,12 @@ static int testapp_hw_sw_max_ring_size(struct test_spec *test)
> if (ret)
> return ret;
>
> - /* Set batch_size to 4095 */
> - test->ifobj_tx->xsk->batch_size = max_descs - 1;
> - test->ifobj_rx->xsk->batch_size = max_descs - 1;
> + /* Set batch_size to 8152 for testing, as the ice HW ignores the 3 lowest bits when
> + * updating the Rx HW tail register.
> + */
Minor comment here is that in future it would be nice to have this quirk
only when ice hw is actually used
> + test->ifobj_tx->xsk->batch_size = test->ifobj_tx->ring.tx_max_pending - 8;
> + test->ifobj_rx->xsk->batch_size = test->ifobj_tx->ring.tx_max_pending - 8;
> + pkt_stream_replace(test, max_descs, MIN_PKT_SIZE);
> return testapp_validate_traffic(test);
> }
>
> diff --git a/tools/testing/selftests/bpf/xskxceiver.h b/tools/testing/selftests/bpf/xskxceiver.h
> index 906de5fab7a3..885c948c5d83 100644
> --- a/tools/testing/selftests/bpf/xskxceiver.h
> +++ b/tools/testing/selftests/bpf/xskxceiver.h
> @@ -80,6 +80,8 @@ struct xsk_umem_info {
> void *buffer;
> u32 frame_size;
> u32 base_addr;
> + u32 fill_size;
> + u32 comp_size;
> bool unaligned_mode;
> };
>
> --
> 2.34.1
>
>
next prev parent reply other threads:[~2024-07-01 16:41 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-27 4:35 [PATCH bpf-next v2 0/2] selftests/xsk: Enhance traffic validation and batch size support Tushar Vyavahare
2024-06-27 4:35 ` [PATCH bpf-next v2 1/2] selftests/xsk: Ensure traffic validation proceeds after ring size adjustment in xskxceiver Tushar Vyavahare
2024-07-01 16:27 ` Maciej Fijalkowski
2024-06-27 4:35 ` [PATCH bpf-next v2 2/2] selftests/xsk: Enhance batch size support with dynamic configurations Tushar Vyavahare
2024-07-01 16:40 ` Maciej Fijalkowski [this message]
2024-07-01 16:28 ` [PATCH bpf-next v2 0/2] selftests/xsk: Enhance traffic validation and batch size support Maciej Fijalkowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZoLcFPyFv3pcqPTT@boxer \
--to=maciej.fijalkowski@intel.com \
--cc=ast@kernel.org \
--cc=bjorn@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=jonathan.lemon@gmail.com \
--cc=kuba@kernel.org \
--cc=magnus.karlsson@intel.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=tirthendu.sarkar@intel.com \
--cc=tushar.vyavahare@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.