From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Miller Subject: Re: [PATCH net-next] net: sched: shrink struct Qdisc Date: Mon, 28 May 2018 23:13:50 -0400 (EDT) Message-ID: <20180528.231350.416663091320095598.davem@davemloft.net> References: <607936fe39bf1e78ca8b520e2ef25b7b326a767f.1527258390.git.pabeni@redhat.com> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, jhs@mojatatu.com, xiyou.wangcong@gmail.com, jiri@resnulli.us To: pabeni@redhat.com Return-path: Received: from shards.monkeyblade.net ([184.105.139.130]:49180 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932475AbeE2DNw (ORCPT ); Mon, 28 May 2018 23:13:52 -0400 In-Reply-To: <607936fe39bf1e78ca8b520e2ef25b7b326a767f.1527258390.git.pabeni@redhat.com> Sender: netdev-owner@vger.kernel.org List-ID: From: Paolo Abeni Date: Fri, 25 May 2018 16:28:44 +0200 > The struct Qdisc has a lot of holes, especially after commit > a53851e2c321 ("net: sched: explicit locking in gso_cpu fallback"), > which as a side effect, moved the fields just after 'busylock' > on a new cacheline. > > Since both 'padded' and 'refcnt' are not updated frequently, and > there is a hole before 'gso_skb', we can move such fields there, > saving a cacheline without any performance side effect. > > Before this commit: > > pahole -C Qdisc net/sche/sch_generic.o > # ... > /* size: 384, cachelines: 6, members: 25 */ > /* sum members: 236, holes: 3, sum holes: 92 */ > /* padding: 56 */ > > After this commit: > pahole -C Qdisc net/sche/sch_generic.o > # ... > /* size: 320, cachelines: 5, members: 25 */ > /* sum members: 236, holes: 2, sum holes: 28 */ > /* padding: 56 */ > > Signed-off-by: Paolo Abeni Applied.