From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yuanhan Liu Subject: Re: [PATCH 21/21] vhost: iotlb: reduce iotlb read lock usage Date: Mon, 11 Sep 2017 12:18:21 +0800 Message-ID: <20170911041821.GI9736@yliu-home> References: <20170831095023.21037-1-maxime.coquelin@redhat.com> <20170831095023.21037-22-maxime.coquelin@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: dev@dpdk.org, jfreiman@redhat.com, tiwei.bie@intel.com, mst@redhat.com, vkaplans@redhat.com, jasowang@redhat.com To: Maxime Coquelin Return-path: Received: from mail-pg0-f41.google.com (mail-pg0-f41.google.com [74.125.83.41]) by dpdk.org (Postfix) with ESMTP id B337F1F5 for ; Mon, 11 Sep 2017 06:18:32 +0200 (CEST) Received: by mail-pg0-f41.google.com with SMTP id i130so6003949pgc.3 for ; Sun, 10 Sep 2017 21:18:32 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20170831095023.21037-22-maxime.coquelin@redhat.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 Thu, Aug 31, 2017 at 11:50:23AM +0200, Maxime Coquelin wrote: > Prior to this patch, iotlb cache's read/write lock was > read-locked at every guest IOVA to app VA translation, > i.e. at least once per packet with indirect off and twice > with indirect on. > > The problem is that rte_rwlock_read_lock() makes use of atomic > operation, which is costly. > > This patch introduces iotlb lock helpers, so that a full burst > can be protected with taking the lock once, which reduces the > number of atomic operations by up to 64 with indirect > descriptors. You were assuming there is no single miss during a burst. If a miss happens, it requries 2 locks: one for _pending_miss and another one for _pending_insert. From this point of view, it's actually more expensive. However, I won't call it's a bad assumption (for the case of virtio PMD). And if you take this assumption, why not just deleting the pending list and moving the lock outside the _iotlb_find function() like what you did in this patch? I don't really see the point of introducing the pending list. --yliu