From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id B4E35A0597; Wed, 8 Apr 2020 20:32:40 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 527881C219; Wed, 8 Apr 2020 20:32:31 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 9D03C1C1CA for ; Wed, 8 Apr 2020 20:32:28 +0200 (CEST) IronPort-SDR: 4DeQAM6yHBWNG6QoBF7hsd2boWo3cZFy6hWAbspf2KZp7A0ulXLCo2Iqk10KcN0hSDNTnmXd8h P+cz/YTE4pDA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2020 11:32:25 -0700 IronPort-SDR: D2SH9D4fORRpa3H5UUx1xM0IfmMdnONQ5SgLKTVrKoCTTrivdrr2CoccWZsD8WPOnm87PMLB+E Pf+qDjsubnzw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,359,1580803200"; d="scan'208";a="451700656" Received: from silpixa00400072.ir.intel.com ([10.237.222.213]) by fmsmga005.fm.intel.com with ESMTP; 08 Apr 2020 11:32:24 -0700 From: Vladimir Medvedkin To: dev@dpdk.org Cc: yipeng1.wang@intel.com, sameh.gobriel@intel.com, bruce.richardson@intel.com Date: Wed, 8 Apr 2020 19:32:19 +0100 Message-Id: <1586370739-61729-2-git-send-email-vladimir.medvedkin@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1586370739-61729-1-git-send-email-vladimir.medvedkin@intel.com> References: <1586370739-61729-1-git-send-email-vladimir.medvedkin@intel.com> In-Reply-To: <1585241243-339118-1-git-send-email-vladimir.medvedkin@intel.com> References: <1585241243-339118-1-git-send-email-vladimir.medvedkin@intel.com> Subject: [dpdk-dev] [PATCH v3 2/2] test: update hash performance tests X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add preformance test for rte_hash_lookup_with_hash_bulk_data() Signed-off-by: Vladimir Medvedkin --- app/test/test_hash_perf.c | 60 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 55 insertions(+), 5 deletions(-) diff --git a/app/test/test_hash_perf.c b/app/test/test_hash_perf.c index a438eae..d88bfa9 100644 --- a/app/test/test_hash_perf.c +++ b/app/test/test_hash_perf.c @@ -391,8 +391,8 @@ timed_lookups(unsigned int with_hash, unsigned int with_data, } static int -timed_lookups_multi(unsigned int with_data, unsigned int table_index, - unsigned int ext) +timed_lookups_multi(unsigned int with_hash, unsigned int with_data, + unsigned int table_index, unsigned int ext) { unsigned i, j, k; int32_t positions_burst[BURST_SIZE]; @@ -417,7 +417,7 @@ timed_lookups_multi(unsigned int with_data, unsigned int table_index, for (j = 0; j < keys_to_add/BURST_SIZE; j++) { for (k = 0; k < BURST_SIZE; k++) keys_burst[k] = keys[j * BURST_SIZE + k]; - if (with_data) { + if (!with_hash && with_data) { ret = rte_hash_lookup_bulk_data(h[table_index], (const void **) keys_burst, BURST_SIZE, @@ -442,6 +442,54 @@ timed_lookups_multi(unsigned int with_data, unsigned int table_index, return -1; } } + } else if (with_hash && with_data) { + ret = rte_hash_lookup_with_hash_bulk_data( + h[table_index], + (const void **)keys_burst, + &signatures[j * BURST_SIZE], + BURST_SIZE, &hit_mask, ret_data); + if (ret != BURST_SIZE) { + printf("Expect to find %u keys," + " but found %d\n", + BURST_SIZE, ret); + return -1; + } + for (k = 0; k < BURST_SIZE; k++) { + if ((hit_mask & (1ULL << k)) == 0) { + printf("Key number %u" + " not found\n", + j * BURST_SIZE + k); + return -1; + } + expected_data[k] = + (void *)((uintptr_t)signatures[ + j * BURST_SIZE + k]); + if (ret_data[k] != expected_data[k]) { + printf("Data returned for key" + " number %u is %p," + " but should be %p\n", + j * BURST_SIZE + k, + ret_data[k], + expected_data[k]); + return -1; + } + } + } else if (with_hash && !with_data) { + ret = rte_hash_lookup_with_hash_bulk( + h[table_index], + (const void **)keys_burst, + &signatures[j * BURST_SIZE], + BURST_SIZE, positions_burst); + for (k = 0; k < BURST_SIZE; k++) { + if (positions_burst[k] != + positions[j * + BURST_SIZE + k]) { + printf("Key looked up in %d, should be in %d\n", + positions_burst[k], + positions[j * BURST_SIZE + k]); + return -1; + } + } } else { rte_hash_lookup_bulk(h[table_index], (const void **) keys_burst, @@ -462,7 +510,8 @@ timed_lookups_multi(unsigned int with_data, unsigned int table_index, const uint64_t end_tsc = rte_rdtsc(); const uint64_t time_taken = end_tsc - start_tsc; - cycles[table_index][LOOKUP_MULTI][0][with_data] = time_taken/num_lookups; + cycles[table_index][LOOKUP_MULTI][with_hash][with_data] = + time_taken/num_lookups; return 0; } @@ -543,7 +592,8 @@ run_all_tbl_perf_tests(unsigned int with_pushes, unsigned int with_locks, if (timed_lookups(with_hash, with_data, i, ext) < 0) return -1; - if (timed_lookups_multi(with_data, i, ext) < 0) + if (timed_lookups_multi(with_hash, with_data, + i, ext) < 0) return -1; if (timed_deletes(with_hash, with_data, i, ext) < 0) -- 2.7.4