From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by dpdk.org (Postfix) with ESMTP id 1CF8A2C60; Wed, 22 Aug 2018 12:19:21 +0200 (CEST) Received: by mail-wr1-f65.google.com with SMTP id a108-v6so1134455wrc.13; Wed, 22 Aug 2018 03:19:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:content-transfer-encoding:mime-version; bh=x5YctGT5Mxfs+AcqueAzurNubEw2eaapVsrxhpfn4a4=; b=Ixj+iCh3SqNoEPlQDy4Ge+S9A4zNFZscUABePm3pYtAU3lxjoY1M42pdX9cuHOKuBH 2CqAc0SAOGBfpvXUrA5mCXSTjaQS2CyGXOoqXAzee0h8Dg+cdpUtbcz2U/Vu8+tocfFq e4HC23Htqdmhzjt2r/kHhOxcQp8hMQTYHQAVSj6ddOF6UKRy7ydqJKOlOssLDYp4axZb HYnPEohmc7Zb0wpXuLwVqXjvwXJIq/hMk6zoGBRciSpcGeHlPk04RaOyqYOkMRjmMvL7 lR17DoSNU79twuONIf5g+/Pj/kGddVjXGs7NH5tQVLKP2uDaF2tsz9CQS6zB66xjSepV /tyQ== X-Gm-Message-State: APzg51Dfq/8z3FeA7OlyS2HjZ94YLbnE76MAGFTgAwlBIsyToxR853yw xjco6xOWZOUHSwwmdt2Df78= X-Google-Smtp-Source: ANB0VdZ1TcTvLjGfviNmWoryvapztO73ad8xusYafgoXFfKqhUZwRmbXl0P19mCF6dK7mRIPs7uBHg== X-Received: by 2002:adf:e34c:: with SMTP id n12-v6mr1191558wrj.158.1534933160701; Wed, 22 Aug 2018 03:19:20 -0700 (PDT) Received: from localhost ([2001:1be0:110d:fcfe:41aa:5bfa:6cf3:7531]) by smtp.gmail.com with ESMTPSA id w15-v6sm922204wrs.8.2018.08.22.03.19.19 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 22 Aug 2018 03:19:19 -0700 (PDT) Message-ID: <1534933159.5764.107.camel@debian.org> From: Luca Boccassi To: Matan Azrad , Chas Williams <3chas3@gmail.com> Cc: "dev@dpdk.org" , Declan Doherty , Chas Williams , "stable@dpdk.org" Date: Wed, 22 Aug 2018 11:19:19 +0100 In-Reply-To: References: <20180816125202.15980-1-bluca@debian.org> <20180816133208.26566-1-bluca@debian.org> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Evolution 3.22.6-1+deb9u1 Mime-Version: 1.0 Subject: Re: [dpdk-dev] [dpdk-stable] [PATCH v4] net/bonding: per-slave intermediate rx ring 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, 22 Aug 2018 10:19:21 -0000 On Wed, 2018-08-22 at 07:09 +0000, Matan Azrad wrote: > Hi Chas >=20 > From: Chas Williams > > On Tue, Aug 21, 2018 at 11:43 AM Matan Azrad > .com> wrote: > > Hi Chas > >=20 > > From: Chas Williams > > > On Tue, Aug 21, 2018 at 6:56 AM Matan Azrad > > x.com> > > > wrote: > > > Hi > > >=20 > > > From: Chas Williams > > > > This will need to be implemented for some of the other RX burst > > > > methods at some point for other modes to see this performance > > > > improvement (with the exception of active-backup). > > >=20 > > > Yes, I think it should be done at least to > > > bond_ethdev_rx_burst_8023ad_fast_queue (should be easy) for now. > > >=20 > > > There is some duplicated code between the various RX paths. > > > I would like to eliminate that as much as possible, so I was > > > going to give that > > > some thought first. > >=20 > > There is no reason to stay this function as is while its twin is > > changed. > >=20 > > Unfortunately, this is all the patch I have at this time. > > =C2=A0 > >=20 > > >=20 > > >=20 > > > > On Thu, Aug 16, 2018 at 9:32 AM Luca Boccassi > > > ian.org> wrote: > > > >=20 > > > > > During bond 802.3ad receive, a burst of packets is fetched > > > > > from each > > > > > slave into a local array and appended to per-slave ring > > > > > buffer. > > > > > Packets are taken from the head of the ring buffer and > > > > > returned to > > > > > the caller.=C2=A0 The number of mbufs provided to each slave is > > > > > sufficient to meet the requirements of the ixgbe vector > > > > > receive. > > >=20 > > > Luca, > > >=20 > > > Can you explain these requirements of ixgbe? > > >=20 > > > The ixgbe (and some other Intel PMDs) have vectorized RX routines > > > that are > > > more efficient (if not faster) taking advantage of some advanced > > > CPU > > > instructions.=C2=A0 I think you need to be receiving at least 32 > > > packets or more. > >=20 > > So, why to do it in bond which is a generic driver for all the > > vendors PMDs, > > If for ixgbe and other Intel nics it is better you can force those > > PMDs to receive always 32 packets > > and to manage a ring by themselves. > >=20 > > The drawback of the ring is some additional latency on the receive > > path. > > In testing, the additional latency hasn't been an issue for > > bonding. >=20 > When bonding does processing slower it may be a bottleneck for the > packet processing for some application.=C2=A0 >=20 > > The bonding PMD has a fair bit of overhead associated with the RX > > and TX path > > calculations.=C2=A0 Most applications can just arrange to call the RX > > path > > with a sufficiently large receive.=C2=A0 Bonding can't do this. >=20 > I didn't talk on application I talked on the slave PMDs, > The slave PMD can manage a ring by itself if it helps for its own > performance. > The bonding should not be oriented to specific PMDs. The issue though is that the performance problem is not with the individual PMDs - it's with bonding. There were no reports regarding the individual PMDs. This comes from reports from customers from real world production deployments - the issue of bonding being too slow was raised multiple times. This patch addresses those issues, again in production deployments, where it's been used for years, to users and customers satisfaction. So I'd like to share this improvement rather than keeping it private - because I'm nice that way :-P > > > Did you check for other vendor PMDs? It may hurt performance > > > there.. > > >=20 > > > I don't know, but I suspect probably not.=C2=A0 For the most part you > > > are typically > > > reading almost up to the vector requirement.=C2=A0 But if one slave > > > has just a > > > single packet, then you can't vectorize on the next slave. > > >=20 > >=20 > > I don't think that the ring overhead is better for PMDs which are > > not using the vectorized instructions. > >=20 > > The non-vectorized PMDs are usually quite slow.=C2=A0 The additional > > overhead doesn't make a difference in their performance. >=20 > We should not do things worse than they are. There were no reports that this made things worse. The feedback from production was that it made things better. --=20 Kind regards, Luca Boccassi