From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f173.google.com (mail-wr0-f173.google.com [209.85.128.173]) by dpdk.org (Postfix) with ESMTP id 1373EF972 for ; Wed, 29 Mar 2017 17:56:33 +0200 (CEST) Received: by mail-wr0-f173.google.com with SMTP id k6so15065041wre.2 for ; Wed, 29 Mar 2017 08:56:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mmyjM8s+ATT96WouYArJTRf7O6pT5xGDsdFE/fWbJWM=; b=vfL2mInMoR+96XPe/6fO3bcMkUr8KTOOqV1BcJXVnCeazexePhPE7GFXBwQrv4F5lx yFPTD9OcD1HavIy03ovDbDHoR5BGfBd/c/+M0yQaRY1nF9OcZkEHppdj0Z2xdOaT+tKD mvhVeEmGnV+PkydwW0AfdRXvTow62B4ksPt9B18/KktP8Ux3b5HQNAPR1nc8EmE1RhS8 3I3hyoOkq6sZFfqu4INymV9/5rW1F1Y52Ex/qx4KXmjMuavCOp/pgH0khn4PxuuhHuOu jfzyZzsCr5hc3Ol2sk1wRSb+LWucyGGmT4hr0EtwgrblTVUdzBv5NstagrBKyl/yKwTb 3eYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mmyjM8s+ATT96WouYArJTRf7O6pT5xGDsdFE/fWbJWM=; b=MfOZuhV8o6SDsv08S6mK8opaUqYT3PpKhgjYgfFlx3cza6Sm9t6YF3WAFFs3g3ahfM 6v1b2GQ1z5+2c0Scz7fiaULx7Oasoud5N6SsEFac8SEkLMvbYhkeChhTNfMhnAwcgI81 aIF2bgawrbYJTP6lRuTC+j7lF6a+1UA3dz3tfsGmTL+RlP5uXuUMDEX6+4xE+ImM9pxv mLJguMVI3L+oQtIwh5tSg1tTWtpl4s74xQ6PL5LTDQtHNlnoudcEMQZdD+HlGua2ZDNj RS4a//+rbHk/RtqCpRU54aABL0DrU9A0qcOKlsot+q2QHaUqrRKpVXA/QJMcZiuIJdVs 6JYg== X-Gm-Message-State: AFeK/H17jXNwyNRTFNNrflytYbn+PDq4WxTRLo/J9of9NQtqNtU7VzcO5NbfMOOlVuTENOxm X-Received: by 10.223.179.78 with SMTP id k14mr1163287wrd.93.1490802992755; Wed, 29 Mar 2017 08:56:32 -0700 (PDT) Received: from platinum (2a01cb0c03c651000226b0fffeed02fc.ipv6.abo.wanadoo.fr. [2a01:cb0c:3c6:5100:226:b0ff:feed:2fc]) by smtp.gmail.com with ESMTPSA id z79sm9949666wrc.2.2017.03.29.08.56.32 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 29 Mar 2017 08:56:32 -0700 (PDT) Date: Wed, 29 Mar 2017 17:56:29 +0200 From: Olivier Matz To: dev@dpdk.org Cc: bruce.richardson@intel.com, konstantin.ananyev@intel.com, mb@smartsharesystems.com, andrey.chilikin@intel.com, jblunck@infradead.org, nelio.laranjeiro@6wind.com, arybchenko@solarflare.com Message-ID: <20170329175629.68810924@platinum> In-Reply-To: <1488966121-22853-1-git-send-email-olivier.matz@6wind.com> References: <1485271173-13408-1-git-send-email-olivier.matz@6wind.com> <1488966121-22853-1-git-send-email-olivier.matz@6wind.com> X-Mailer: Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH 0/9] mbuf: structure reorganization 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: Wed, 29 Mar 2017 15:56:33 -0000 Hi, Does anyone have any other comment on this series? Can it be applied? Thanks, Olivier On Wed, 8 Mar 2017 10:41:52 +0100, Olivier Matz wrote: > Based on discussions done in [1] and in this thread, this patchset reorganizes > the mbuf. > > The main changes are: > - reorder structure to increase vector performance on some non-ia > platforms. > - add a 64bits timestamp field in the 1st cache line. This timestamp > is not normalized, i.e. no unit or time reference is enforced. A > library may be added to do this job in the future. > - m->next, m->nb_segs, and m->refcnt are always initialized for mbufs > in the pool, avoiding the need of setting m->next (located in the > 2nd cache line) in the Rx path for mono-segment packets. > - change port and nb_segs to 16 bits > - move seqn in the 2nd cache line > > Things discussed but not done in the patchset: > - move refcnt and nb_segs to the 2nd cache line: many drivers sets > them in the Rx path, so it could introduce a performance regression, or > it would require to change all the drivers, which is not an easy task. > - remove the m->port field: too much impact on many examples and libraries, > and some people highlighted they are using it. > - moving m->next in the 1st cache line: there is not enough room, and having > it set to NULL for unused mbuf should remove the need for it. > - merge seqn and timestamp together in a union: we could imagine use cases > were both are activated. There is no flag indicating the presence of seqn, > so it looks preferable to keep them separated for now. > > I made some basic performance tests (ixgbe) and see no regression. > Other tests from NIC vendors are welcome. > > Once this patchset is pushed, the Rx path of drivers could be optimized a bit, > by removing writes to m->next, m->nb_segs and m->refcnt. The patch 4/8 gives an > idea of what could be done. > > [1] http://dpdk.org/ml/archives/dev/2016-October/049338.html > > rfc->v1: > - fix reset of mbuf fields in case of indirect mbuf in rte_pktmbuf_prefree_seg() > - do not enforce a unit or time reference for m->timestamp > - reorganize fields to make vlan and outer vlan consecutive > - enhance documentation of m->refcnt and m->port to explain why they are 16bits > > Jerin Jacob (1): > mbuf: make rearm data address naturally aligned > > Olivier Matz (8): > mbuf: make segment prefree function public > mbuf: make raw free function public > mbuf: set mbuf fields while in pool > drivers/net: don't touch mbuf next or nb segs on Rx > mbuf: use 2 bytes for port and nb segments > mbuf: move sequence number in second cache line > mbuf: add a timestamp field > mbuf: reorder VLAN tci and buffer len fields > > app/test-pmd/csumonly.c | 4 +- > drivers/net/ena/ena_ethdev.c | 2 +- > drivers/net/enic/enic_rxtx.c | 2 +- > drivers/net/fm10k/fm10k_rxtx.c | 6 +- > drivers/net/fm10k/fm10k_rxtx_vec.c | 9 +- > drivers/net/i40e/i40e_rxtx_vec_common.h | 6 +- > drivers/net/i40e/i40e_rxtx_vec_sse.c | 11 +- > drivers/net/ixgbe/ixgbe_rxtx.c | 10 +- > drivers/net/ixgbe/ixgbe_rxtx_vec_common.h | 6 +- > drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 9 -- > drivers/net/ixgbe/ixgbe_rxtx_vec_sse.c | 9 -- > drivers/net/mlx5/mlx5_rxtx.c | 11 +- > drivers/net/mpipe/mpipe_tilegx.c | 3 +- > drivers/net/null/rte_eth_null.c | 2 - > drivers/net/virtio/virtio_rxtx.c | 4 - > drivers/net/virtio/virtio_rxtx_simple.h | 6 +- > .../linuxapp/eal/include/exec-env/rte_kni_common.h | 5 +- > lib/librte_mbuf/rte_mbuf.c | 4 + > lib/librte_mbuf/rte_mbuf.h | 123 ++++++++++++++++----- > 19 files changed, 130 insertions(+), 102 deletions(-) >