On Tue, Mar 14, 2017 at 2:30 AM, Matias Elo <[email protected]> wrote:

> Add microbenchmarks for the new packet reference functions.
>
> Signed-off-by: Matias Elo <[email protected]>
>

Reviewed-and-tested-by: Bill Fischofer <[email protected]>


> ---
> V2:
> - Use offset that is closer to real use cases
>
>  test/common_plat/performance/odp_bench_packet.c | 86
> +++++++++++++++++++++++++
>  1 file changed, 86 insertions(+)
>
> diff --git a/test/common_plat/performance/odp_bench_packet.c
> b/test/common_plat/performance/odp_bench_packet.c
> index 1aa9d81..7a3a004 100644
> --- a/test/common_plat/performance/odp_bench_packet.c
> +++ b/test/common_plat/performance/odp_bench_packet.c
> @@ -338,6 +338,21 @@ static void alloc_concat_packets(void)
>                               TEST_REPEAT_COUNT);
>  }
>
> +static void alloc_ref_packets(void)
> +{
> +       int i;
> +       odp_packet_t *pkt_tbl = gbl_args->pkt_tbl;
> +       odp_packet_t *ref_tbl = gbl_args->pkt2_tbl;
> +
> +       allocate_test_packets(gbl_args->pkt.len, pkt_tbl,
> TEST_REPEAT_COUNT);
> +
> +       for (i = 0; i < TEST_REPEAT_COUNT; i++) {
> +               ref_tbl[i] = odp_packet_ref(pkt_tbl[i], TEST_MIN_PKT_SIZE
> / 2);
> +               if (ref_tbl[i] == ODP_PACKET_INVALID)
> +                       LOG_ABORT("Allocating packet reference failed\n");
> +       }
> +}
> +
>  static void alloc_packets_twice(void)
>  {
>         allocate_test_packets(gbl_args->pkt.len, gbl_args->pkt_tbl,
> @@ -1212,6 +1227,67 @@ static int bench_packet_ts_set(void)
>         return i;
>  }
>
> +static int bench_packet_ref_static(void)
> +{
> +       int i;
> +       odp_packet_t *pkt_tbl = gbl_args->pkt_tbl;
> +       odp_packet_t *ref_tbl = gbl_args->pkt2_tbl;
> +
> +       for (i = 0; i < TEST_REPEAT_COUNT; i++)
> +               ref_tbl[i] = odp_packet_ref_static(pkt_tbl[i]);
> +
> +       return i;
> +}
> +
> +static int bench_packet_ref(void)
> +{
> +       int i;
> +       uint32_t offset = TEST_MIN_PKT_SIZE / 2;
> +       odp_packet_t *pkt_tbl = gbl_args->pkt_tbl;
> +       odp_packet_t *ref_tbl = gbl_args->pkt2_tbl;
> +
> +       for (i = 0; i < TEST_REPEAT_COUNT; i++)
> +               ref_tbl[i] = odp_packet_ref(pkt_tbl[i], offset);
> +
> +       return i;
> +}
> +
> +static int bench_packet_ref_pkt(void)
> +{
> +       int i;
> +       uint32_t offset = TEST_MIN_PKT_SIZE / 2;
> +       odp_packet_t *pkt_tbl = gbl_args->pkt_tbl;
> +       odp_packet_t *hdr_tbl = gbl_args->pkt2_tbl;
> +
> +       for (i = 0; i < TEST_REPEAT_COUNT; i++)
> +               hdr_tbl[i] = odp_packet_ref_pkt(pkt_tbl[i], offset,
> hdr_tbl[i]);
> +
> +       return i;
> +}
> +
> +static int bench_packet_unshared_len(void)
> +{
> +       int i;
> +       uint32_t ret = 0;
> +
> +       for (i = 0; i < TEST_REPEAT_COUNT; i++)
> +               ret += odp_packet_unshared_len(gbl_args->pkt_tbl[i]);
> +
> +       return ret;
> +}
> +
> +static int bench_packet_has_ref(void)
> +{
> +       int i;
> +       uint32_t ret = 0;
> +       odp_packet_t *pkt_tbl = gbl_args->pkt_tbl;
> +
> +       for (i = 0; i < TEST_REPEAT_COUNT; i++)
> +               ret += odp_packet_has_ref(pkt_tbl[i]);
> +
> +       return i;
> +}
> +
>  /**
>   * Prinf usage information
>   */
> @@ -1445,6 +1521,16 @@ bench_info_t test_suite[] = {
>                 BENCH_INFO(bench_packet_ts, create_packets, free_packets,
> NULL),
>                 BENCH_INFO(bench_packet_ts_set, create_packets,
> free_packets,
>                            NULL),
> +               BENCH_INFO(bench_packet_ref_static, create_packets,
> +                          free_packets_twice, NULL),
> +               BENCH_INFO(bench_packet_ref, create_packets,
> +                          free_packets_twice, NULL),
> +               BENCH_INFO(bench_packet_ref_pkt, alloc_packets_twice,
> +                          free_packets_twice, NULL),
> +               BENCH_INFO(bench_packet_unshared_len, alloc_ref_packets,
> +                          free_packets_twice, NULL),
> +               BENCH_INFO(bench_packet_has_ref, alloc_ref_packets,
> +                          free_packets_twice, NULL),
>  };
>
>  /**
> --
> 2.7.4
>
>

Reply via email to