From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 19D3D5911 for ; Thu, 4 Oct 2018 03:22:19 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Oct 2018 18:22:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,338,1534834800"; d="scan'208";a="97241773" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga002.jf.intel.com with ESMTP; 03 Oct 2018 18:22:18 -0700 Received: from fmsmsx124.amr.corp.intel.com (10.18.125.39) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 3 Oct 2018 18:22:18 -0700 Received: from fmsmsx151.amr.corp.intel.com ([169.254.7.87]) by fmsmsx124.amr.corp.intel.com ([169.254.8.48]) with mapi id 14.03.0319.002; Wed, 3 Oct 2018 18:22:18 -0700 From: "Wang, Yipeng1" To: Honnappa Nagarahalli , Stephen Hemminger CC: "Richardson, Bruce" , "Ananyev, Konstantin" , "dev@dpdk.org" , "Gobriel, Sameh" , nd Thread-Topic: [dpdk-dev] [PATCH v4 2/4] hash: add extendable bucket feature Thread-Index: AQHUWyryts+AUDg3r0GYUiBdhOKjuKUNupHQgACKEgCAAASgAA== Date: Thu, 4 Oct 2018 01:22:17 +0000 Message-ID: References: <1537993618-92630-1-git-send-email-yipeng1.wang@intel.com> <1538155426-145177-1-git-send-email-yipeng1.wang@intel.com> <1538155426-145177-3-git-send-email-yipeng1.wang@intel.com> <20181003080811.7c1258bc@xeon-e3> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNWQ4NDE4OGItMDQzOC00YWJiLThjNjktNjExMGRhZjAwOGY1IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoibXdGYmxkRWMraHVRN0NGYWJCT0xhT2kyZlhpQUVuMkcrQTgrRFFsSHZtY1JkS0FaUmpRdjdcL0dcL3JDWksrSjR1In0= x-originating-ip: [10.1.200.107] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v4 2/4] hash: add extendable bucket feature 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: , X-List-Received-Date: Thu, 04 Oct 2018 01:22:21 -0000 >-----Original Message----- >From: Honnappa Nagarahalli [mailto:Honnappa.Nagarahalli@arm.com] >> >-----Original Message----- >> >From: Stephen Hemminger [mailto:stephen@networkplumber.org] >> >On Fri, 28 Sep 2018 10:23:44 -0700 >> >Yipeng Wang wrote: >> > >> >> + /* clear free extendable bucket ring and memory */ >> >> + if (h->ext_table_support) { >> >> + memset(h->buckets_ext, 0, h->num_buckets * >> >> + sizeof(struct >> rte_hash_bucket)); >> >> + while (rte_ring_dequeue(h->free_ext_bkts, &ptr) =3D=3D 0) >> >> + rte_pause(); >> > >> >Pause is much to short. Maybe nanosleep or sched_yield()? >> >> Hmm.. As a second thought, maybe we don't need any pause/sleep here? >> >> It is not a waiting loop and in multithreading case it is in the writer = lock so >> this thread Should be the only thread operating this data structure. >> >> What do you think? >Yes, this is a single thread use case. This is resetting the ring. > [Wang, Yipeng] If people agree on this, I can have a separate patch later t= o remove the pause. >> >> BTW Honnappa, in the lock free implementation, is hash_reset protected? >> We should indicate in the API doc which API is supposed to be protected = by >> user. >I do not understand the use case for hash_reset API. Why not call hash_fre= e and hash_create? >But, lock free implementation does not handle hash_reset. I will document = it in the next version. > [Wang, Yipeng] I assume reset maybe still faster than free and create. Also, after free, y= ou cannot guarantee that the creation can succeed. It might also require less user-level code by us= ing reset.=20 I agree that in most use cases people can just free and create a new one.