Received: by 2002:a05:7412:a9a2:b0:e2:908c:2ebd with SMTP id o34csp1864345rdh; Sat, 28 Oct 2023 10:05:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEgkof9IfVZB1NSPg7Fy7tDdmef6rsmyyd3nnBD2fiiaH5NUGRZaBhxpe1V0fZht28nCJpv X-Received: by 2002:a17:903:111:b0:1cc:4073:88a1 with SMTP id y17-20020a170903011100b001cc407388a1mr105876plc.0.1698512706560; Sat, 28 Oct 2023 10:05:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698512706; cv=none; d=google.com; s=arc-20160816; b=C9eT+uGEepvVBEECNnxy+t8YIbJVcMCJrYrpLHsyjhY9SmKao1iTrT+xOGMZEhG89h Rtz13uCDMZP3lmnt7Gd5sbwMEhn0tiVk9dRkmUsLHFQt93x+lBM9dPygMl39eF0+KwAT CLD/0dTNGmXCNJs/L2oJB9284VlDh9CW6gllZYvuP+rNsw7315UCqlA/DpTXL0RUNr50 N97MeU7af+45BsvKIj1bE7KdgaVrI6/U3f7ovwQZ1kl2r+ksJMBqWN0AeQ4xTGebhUXf es/vi/KBr+Z2Z/7zRNERr0eqrgWEepKCC6RkEACbfHsZxK3hE6Qtt4jm+W9X5Ozub24d gWzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=u3XpE1EDC+9oMRTYO51KW7vHfl6tXKZ9dZgi4Ew6grU=; fh=AR/Qp4o9SmokTbFyeO+0r0G6A1u9G0b1cf8RunrmoCg=; b=cOSgQ2metXk4VG7A7nI0URwVFsfuZevg+g9hW/ksJNe9AlWMUMJhTAXZz+OU7vxPEf Bj5hAEkht6Jb/CCtJM7HRI5tOVm18nqYTreOHOq1yIwbJBld9f7iwEwKvcsZbnsOcGRn CTiPxYH56MoQMFRLeXHUzOsEpaF2a0sXn7eEmKgKrCelXoBr0dHI0bUKh6Fh96uAoKs6 6N/4pv6BQcrTsXu4E8JBsptGpeU8dQ2ZZEmao55LH+r3uiGt+dq/awfjxoTrd88KkKmR nV8vMV0cgFsmixK6j06Z5CwCVWpS3z60XngSmNXpsyuC3q6xyrB5QVwbeLy1DqoW3+CC rBUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@wanadoo.fr header.s=t20230301 header.b=FFFaV4Gt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=wanadoo.fr Return-Path: Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id c6-20020a170903234600b001c7245a7fe8si2766994plh.524.2023.10.28.10.05.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Oct 2023 10:05:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=pass header.i=@wanadoo.fr header.s=t20230301 header.b=FFFaV4Gt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=wanadoo.fr Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 20927808BDBD; Sat, 28 Oct 2023 10:05:04 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229448AbjJ1RE5 (ORCPT + 99 others); Sat, 28 Oct 2023 13:04:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229446AbjJ1RE4 (ORCPT ); Sat, 28 Oct 2023 13:04:56 -0400 Received: from smtp.smtpout.orange.fr (smtp-20.smtpout.orange.fr [80.12.242.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A2832DE for ; Sat, 28 Oct 2023 10:04:53 -0700 (PDT) Received: from pop-os.home ([86.243.2.178]) by smtp.orange.fr with ESMTPA id wmjwqs5Qa8ZI8wmjxqgmOJ; Sat, 28 Oct 2023 19:04:51 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wanadoo.fr; s=t20230301; t=1698512691; bh=u3XpE1EDC+9oMRTYO51KW7vHfl6tXKZ9dZgi4Ew6grU=; h=From:To:Cc:Subject:Date; b=FFFaV4Gty5EI+wmhvij8pSq4owQ4Xx9sdgwF4xBqKES36Ps0obVUkc1iiRDUl/QGj sGZxd6YF/cuLKS/bs+TDwAIHE7+W6luyIIxjK6pyXFCido6AvaqDjTK+WOFtmPso96 gx1/8xhj5yheGPzZkPggN7b/uds8sMfo+D5LXKDOWnmA7n7laLQCmYQj6BAwIprPZi qW8pIBXHCTavVb7sROXP82UcJP1zcCbnjMKOhoYutKQCMkW3Kx0fEaMgdv1JPtzcy6 hRkjfo40TWJc6fMbM4yHziAvhHNEBknVMsCtecdshmPDUSRttNInYe7uQ0fYlecPHo AspLu+cDjMoGw== X-ME-Helo: pop-os.home X-ME-Auth: Y2hyaXN0b3BoZS5qYWlsbGV0QHdhbmFkb28uZnI= X-ME-Date: Sat, 28 Oct 2023 19:04:51 +0200 X-ME-IP: 86.243.2.178 From: Christophe JAILLET To: Davidlohr Bueso , "Paul E. McKenney" , Josh Triplett , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Boqun Feng , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Zqiang Cc: linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org, Christophe JAILLET , rcu@vger.kernel.org Subject: [PATCH] refscale: Optimize process_durations() Date: Sat, 28 Oct 2023 19:04:44 +0200 Message-Id: X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Sat, 28 Oct 2023 10:05:04 -0700 (PDT) process_durations() is not a hot path, but there is no good reason to iterate over and over the data already in 'buf'. Using a seq_buf saves some useless strcat() and the need of a temp buffer. Data is written directly at the correct place. Signed-off-by: Christophe JAILLET --- kernel/rcu/refscale.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/kernel/rcu/refscale.c b/kernel/rcu/refscale.c index 2c2648a3ad30..861485d865ec 100644 --- a/kernel/rcu/refscale.c +++ b/kernel/rcu/refscale.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -890,31 +891,36 @@ static u64 process_durations(int n) { int i; struct reader_task *rt; - char buf1[64]; + struct seq_buf s; char *buf; u64 sum = 0; buf = kmalloc(800 + 64, GFP_KERNEL); if (!buf) return 0; - buf[0] = 0; + + seq_buf_init(&s, buf, 800 + 64); + sprintf(buf, "Experiment #%d (Format: :)", exp_idx); for (i = 0; i < n && !torture_must_stop(); i++) { rt = &(reader_tasks[i]); - sprintf(buf1, "%d: %llu\t", i, rt->last_duration_ns); if (i % 5 == 0) - strcat(buf, "\n"); - if (strlen(buf) >= 800) { + seq_buf_putc(&s, '\n'); + + if (seq_buf_used(&s) >= 800) { + seq_buf_terminate(&s); pr_alert("%s", buf); - buf[0] = 0; + seq_buf_clear(&s); } - strcat(buf, buf1); + + seq_buf_printf(&s, "%d: %llu\t", i, rt->last_duration_ns); sum += rt->last_duration_ns; } + seq_buf_terminate(&s); pr_alert("%s\n", buf); kfree(buf); -- 2.34.1