[dpdk-dev] [PATCH v9 4/6] test/ring: modify perf test cases to use rte_ring_xxx_elem APIs
Olivier Matz
olivier.matz at 6wind.com
Fri Jan 17 18:12:45 CET 2020
On Wed, Jan 15, 2020 at 11:25:09PM -0600, Honnappa Nagarahalli wrote:
> Adjust the performance test cases to test rte_ring_xxx_elem APIs.
>
> Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli at arm.com>
> Reviewed-by: Gavin Hu <gavin.hu at arm.com>
> ---
> app/test/test_ring_perf.c | 454 +++++++++++++++++++++++---------------
> 1 file changed, 273 insertions(+), 181 deletions(-)
>
> diff --git a/app/test/test_ring_perf.c b/app/test/test_ring_perf.c
> index 6c2aca483..8d1217951 100644
> --- a/app/test/test_ring_perf.c
> +++ b/app/test/test_ring_perf.c
[...]
> -static int
> -test_ring_perf(void)
> +/* Run all tests for a given element size */
> +static __rte_always_inline int
> +test_ring_perf_esize(const int esize)
> {
> struct lcore_pair cores;
> struct rte_ring *r = NULL;
>
> - r = rte_ring_create(RING_NAME, RING_SIZE, rte_socket_id(), 0);
> + /*
> + * Performance test for legacy/_elem APIs
> + * SP-SC/MP-MC, single
> + */
> + r = test_ring_create(RING_NAME, esize, RING_SIZE, rte_socket_id(), 0);
> if (r == NULL)
> return -1;
>
> - printf("### Testing single element and burst enq/deq ###\n");
> - test_single_enqueue_dequeue(r);
> - test_burst_enqueue_dequeue(r);
> + printf("\n### Testing single element enq/deq ###\n");
> + if (test_single_enqueue_dequeue(r, esize,
> + TEST_RING_THREAD_SPSC | TEST_RING_ELEM_SINGLE) < 0)
> + return -1;
the ring is not freed on error (same below)
> + if (test_single_enqueue_dequeue(r, esize,
> + TEST_RING_THREAD_MPMC | TEST_RING_ELEM_SINGLE) < 0)
> + return -1;
> +
> + printf("\n### Testing burst enq/deq ###\n");
> + if (test_burst_bulk_enqueue_dequeue(r, esize,
> + TEST_RING_THREAD_SPSC | TEST_RING_ELEM_BURST) < 0)
> + return -1;
> + if (test_burst_bulk_enqueue_dequeue(r, esize,
> + TEST_RING_THREAD_MPMC | TEST_RING_ELEM_BURST) < 0)
> + return -1;
>
> - printf("\n### Testing empty dequeue ###\n");
> - test_empty_dequeue(r);
> + printf("\n### Testing bulk enq/deq ###\n");
> + if (test_burst_bulk_enqueue_dequeue(r, esize,
> + TEST_RING_THREAD_SPSC | TEST_RING_ELEM_BULK) < 0)
> + return -1;
> + if (test_burst_bulk_enqueue_dequeue(r, esize,
> + TEST_RING_THREAD_MPMC | TEST_RING_ELEM_BULK) < 0)
> + return -1;
>
> - printf("\n### Testing using a single lcore ###\n");
> - test_bulk_enqueue_dequeue(r);
> + printf("\n### Testing empty bulk deq ###\n");
> + test_empty_dequeue(r, esize,
> + TEST_RING_THREAD_SPSC | TEST_RING_ELEM_BULK);
> + test_empty_dequeue(r, esize,
> + TEST_RING_THREAD_MPMC | TEST_RING_ELEM_BULK);
>
> if (get_two_hyperthreads(&cores) == 0) {
> printf("\n### Testing using two hyperthreads ###\n");
> - run_on_core_pair(&cores, r, enqueue_bulk, dequeue_bulk);
> + if (run_on_core_pair(&cores, r, esize) < 0)
> + return -1;
> }
> if (get_two_cores(&cores) == 0) {
> printf("\n### Testing using two physical cores ###\n");
> - run_on_core_pair(&cores, r, enqueue_bulk, dequeue_bulk);
> + if (run_on_core_pair(&cores, r, esize) < 0)
> + return -1;
> }
> if (get_two_sockets(&cores) == 0) {
> printf("\n### Testing using two NUMA nodes ###\n");
> - run_on_core_pair(&cores, r, enqueue_bulk, dequeue_bulk);
> + if (run_on_core_pair(&cores, r, esize) < 0)
> + return -1;
> }
>
> printf("\n### Testing using all slave nodes ###\n");
> - run_on_all_cores(r);
> + if (run_on_all_cores(r, esize) < 0)
> + return -1;
>
> rte_ring_free(r);
> +
> + return 0;
> +}
More information about the dev
mailing list