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 59376A046B for ; Fri, 28 Jun 2019 20:05:00 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5DC4E37B4; Fri, 28 Jun 2019 20:04:58 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 720BD1E25; Fri, 28 Jun 2019 20:04:56 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Jun 2019 11:04:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,428,1557212400"; d="scan'208";a="153439863" Received: from orsmsx105.amr.corp.intel.com ([10.22.225.132]) by orsmga007.jf.intel.com with ESMTP; 28 Jun 2019 11:04:55 -0700 Received: from orsmsx115.amr.corp.intel.com (10.22.240.11) by ORSMSX105.amr.corp.intel.com (10.22.225.132) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 28 Jun 2019 11:04:55 -0700 Received: from orsmsx104.amr.corp.intel.com ([169.254.4.70]) by ORSMSX115.amr.corp.intel.com ([169.254.4.13]) with mapi id 14.03.0439.000; Fri, 28 Jun 2019 11:04:54 -0700 From: "Wang, Yipeng1" To: Honnappa Nagarahalli , "Gobriel, Sameh" , "Richardson, Bruce" , "De Lara Guarch, Pablo" CC: "gavin.hu@arm.com" , "ruifeng.wang@arm.com" , "dev@dpdk.org" , "nd@arm.com" , "stable@dpdk.org" Thread-Topic: [PATCH 1/3] lib/hash: use ordered loads only if signature matches Thread-Index: AQHVK5s+TlIfgAp/eEGZl55I/41dbqaxS6HQ Date: Fri, 28 Jun 2019 18:04:53 +0000 Message-ID: References: <20190625211520.43181-1-honnappa.nagarahalli@arm.com> <20190625211520.43181-2-honnappa.nagarahalli@arm.com> In-Reply-To: <20190625211520.43181-2-honnappa.nagarahalli@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiODI1MjAzNTUtYmI3Ny00NzI1LTkwNmUtYzY4NzQ5ZGRjOWI4IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoieFNYNTFvWDVRdVFcL0VUdlczWHZLR3dKWWdFQ1Q4b3RcL3g0U0c1MmlUaVR0Q0ZNcTlKR2ZPR0Q2Z0NHSjA2aDl2In0= x-originating-ip: [10.22.254.140] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 1/3] lib/hash: use ordered loads only if signature matches 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" >-----Original Message----- >From: Honnappa Nagarahalli [mailto:honnappa.nagarahalli@arm.com] >Sent: Tuesday, June 25, 2019 2:15 PM >To: Wang, Yipeng1 ; Gobriel, Sameh ; Richardson, Bruce >; De Lara Guarch, Pablo ; honnappa.nagarahalli@arm.com >Cc: gavin.hu@arm.com; ruifeng.wang@arm.com; dev@dpdk.org; nd@arm.com; stab= le@dpdk.org >Subject: [PATCH 1/3] lib/hash: use ordered loads only if signature matches > >Relaxed signature comparison is done first. Further ordered loads >are done only if the signature matches. Any false positives are >caught by the full key comparison. [Wang, Yipeng] add: This commit improves lookup performance. > >Fixes: e605a1d36 ("hash: add lock-free r/w concurrency") >Cc: stable@dpdk.org > >Signed-off-by: Honnappa Nagarahalli >Reviewed-by: Gavin Hu >Tested-by: Ruifeng Wang >--- > lib/librte_hash/rte_cuckoo_hash.c | 35 ++++++++++++++++++------------- > 1 file changed, 21 insertions(+), 14 deletions(-) > >diff --git a/lib/librte_hash/rte_cuckoo_hash.c b/lib/librte_hash/rte_cucko= o_hash.c >index 953928f27..f37f6957d 100644 >--- a/lib/librte_hash/rte_cuckoo_hash.c >+++ b/lib/librte_hash/rte_cuckoo_hash.c >@@ -1188,22 +1188,29 @@ search_one_bucket_lf(const struct rte_hash *h, con= st void *key, uint16_t sig, > struct rte_hash_key *k, *keys =3D h->key_store; > > for (i =3D 0; i < RTE_HASH_BUCKET_ENTRIES; i++) { >- key_idx =3D __atomic_load_n(&bkt->key_idx[i], >+ /* Signature comparison is done before the acquire-load >+ * of the key index to achieve better performance. >+ * Any false positives will be caught in full comparison >+ * of the key. >+ */ [Wang, Yipeng]=20 A bit more explanation would be helpful for future understanding of the cod= e: "Signature comparison is done ... performance. Although this could accidentally cause the reader to read an old signature = while the key_idx is updated to a new key's, any false positive will be .... of the key." Otherwise: Acked-by: Yipeng Wang