From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: Re: [PATCH v5 5/8] hash: add read and write concurrency support Date: Wed, 11 Jul 2018 13:49:07 -0700 Message-ID: <20180711134907.01d8eaf0@xeon-e3> References: <1528455078-328182-1-git-send-email-yipeng1.wang@intel.com> <1531242001-381104-1-git-send-email-yipeng1.wang@intel.com> <1531242001-381104-6-git-send-email-yipeng1.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: pablo.de.lara.guarch@intel.com, dev@dpdk.org, bruce.richardson@intel.com, honnappa.nagarahalli@arm.com, vguvva@caviumnetworks.com, brijesh.s.singh@gmail.com To: Yipeng Wang Return-path: Received: from mail-pf0-f193.google.com (mail-pf0-f193.google.com [209.85.192.193]) by dpdk.org (Postfix) with ESMTP id 04F601B54E for ; Wed, 11 Jul 2018 22:49:20 +0200 (CEST) Received: by mail-pf0-f193.google.com with SMTP id s21-v6so19173934pfm.6 for ; Wed, 11 Jul 2018 13:49:19 -0700 (PDT) In-Reply-To: <1531242001-381104-6-git-send-email-yipeng1.wang@intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Tue, 10 Jul 2018 09:59:58 -0700 Yipeng Wang wrote: > + > +static inline void > +__hash_rw_reader_lock(const struct rte_hash *h) > +{ > + if (h->readwrite_concur_support && h->hw_trans_mem_support) > + rte_rwlock_read_lock_tm(h->readwrite_lock); > + else if (h->readwrite_concur_support) > + rte_rwlock_read_lock(h->readwrite_lock); > +} > + > +static inline void > +__hash_rw_writer_unlock(const struct rte_hash *h) > +{ > + if (h->multi_writer_support && h->hw_trans_mem_support) > + rte_rwlock_write_unlock_tm(h->readwrite_lock); > + else if (h->multi_writer_support) > + rte_rwlock_write_unlock(h->readwrite_lock); > +} > + > +static inline void > +__hash_rw_reader_unlock(const struct rte_hash *h) > +{ > + if (h->readwrite_concur_support && h->hw_trans_mem_support) > + rte_rwlock_read_unlock_tm(h->readwrite_lock); > + else if (h->readwrite_concur_support) > + rte_rwlock_read_unlock(h->readwrite_lock); > +} > + For small windows, reader-writer locks are slower than a spin lock because there are more cache bounces.