From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35E68C433FE for ; Thu, 10 Feb 2022 14:26:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BAE846B0071; Thu, 10 Feb 2022 09:26:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B36E66B0074; Thu, 10 Feb 2022 09:26:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9B0BE6B0075; Thu, 10 Feb 2022 09:26:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0201.hostedemail.com [216.40.44.201]) by kanga.kvack.org (Postfix) with ESMTP id 8CE586B0071 for ; Thu, 10 Feb 2022 09:26:21 -0500 (EST) Received: from smtpin06.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 522138249980 for ; Thu, 10 Feb 2022 14:26:21 +0000 (UTC) X-FDA: 79127095362.06.0922D0D Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf19.hostedemail.com (Postfix) with ESMTP id DA28B1A0004 for ; Thu, 10 Feb 2022 14:26:20 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 0AE8760C73; Thu, 10 Feb 2022 14:26:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 10F6CC004E1; Thu, 10 Feb 2022 14:26:18 +0000 (UTC) Date: Thu, 10 Feb 2022 09:26:17 -0500 From: Steven Rostedt To: Christophe Leroy Cc: Ingo Molnar , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH] tracing: uninline trace_trigger_soft_disabled() Message-ID: <20220210092617.2bb40912@gandalf.local.home> In-Reply-To: <38191e96ec6d331662ee7278e26edb79cdf95402.1644482771.git.christophe.leroy@csgroup.eu> References: <38191e96ec6d331662ee7278e26edb79cdf95402.1644482771.git.christophe.leroy@csgroup.eu> X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: DA28B1A0004 X-Rspam-User: Authentication-Results: imf19.hostedemail.com; dkim=none; spf=pass (imf19.hostedemail.com: domain of "SRS0=5J3p=SZ=goodmis.org=rostedt@kernel.org" designates 139.178.84.217 as permitted sender) smtp.mailfrom="SRS0=5J3p=SZ=goodmis.org=rostedt@kernel.org"; dmarc=none X-Stat-Signature: dxu8xjk8czsjkdisjwtm971kugroq66h X-Rspamd-Server: rspam04 X-HE-Tag: 1644503180-781129 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, 10 Feb 2022 09:47:52 +0100 Christophe Leroy wrote: > On a ppc32 build with CONFIG_CC_OPTIMISE_FOR_SIZE, > trace_trigger_soft_disabled() appears more than 50 times in vmlinux. > > That function is rather big for an inlined function, and > it doesn't benefit much from inlining as its only parameter > is a pointer to a struct in memory: The number of parameters is not the reason for it being inlined. It's in a *very* hot path, and a function call causes a noticeable performance hit. > > c003df60 : > c003df60: 94 21 ff f0 stwu r1,-16(r1) > c003df64: 7c 08 02 a6 mflr r0 > c003df68: 90 01 00 14 stw r0,20(r1) > c003df6c: bf c1 00 08 stmw r30,8(r1) > c003df70: 83 e3 00 24 lwz r31,36(r3) > c003df74: 73 e9 01 00 andi. r9,r31,256 > c003df78: 41 82 00 10 beq c003df88 > c003df7c: 38 60 00 00 li r3,0 > c003df80: 39 61 00 10 addi r11,r1,16 > c003df84: 4b fd 60 ac b c0014030 <_rest32gpr_30_x> > c003df88: 73 e9 00 80 andi. r9,r31,128 > c003df8c: 7c 7e 1b 78 mr r30,r3 > c003df90: 41 a2 00 14 beq c003dfa4 > c003df94: 38 c0 00 00 li r6,0 > c003df98: 38 a0 00 00 li r5,0 > c003df9c: 38 80 00 00 li r4,0 > c003dfa0: 48 05 c5 f1 bl c009a590 > c003dfa4: 73 e9 00 40 andi. r9,r31,64 > c003dfa8: 40 82 00 28 bne c003dfd0 > c003dfac: 73 ff 02 00 andi. r31,r31,512 > c003dfb0: 41 82 ff cc beq c003df7c > c003dfb4: 80 01 00 14 lwz r0,20(r1) > c003dfb8: 83 e1 00 0c lwz r31,12(r1) > c003dfbc: 7f c3 f3 78 mr r3,r30 > c003dfc0: 83 c1 00 08 lwz r30,8(r1) > c003dfc4: 7c 08 03 a6 mtlr r0 > c003dfc8: 38 21 00 10 addi r1,r1,16 > c003dfcc: 48 05 6f 6c b c0094f38 > c003dfd0: 38 60 00 01 li r3,1 > c003dfd4: 4b ff ff ac b c003df80 > > It doesn't benefit much from inlining as its only parameter is a > pointer to a struct in memory so no constant folding is involved. > > Uninline it and move it into kernel/trace/trace_events_trigger.c > > It reduces the size of vmlinux by approximately 10 kbytes. If you have an issue with the size, perhaps the function can be modified to condense it. I'm happy to have a size reduction, but I will NACK making it into a function call. -- Steve