Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp7280440rwd; Tue, 6 Jun 2023 08:34:49 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7j3h+MqRm4KhbbYcZvzyE/oxnikQRn5XFxY4VYA4ImJ2WFu1+uY8pl0TfQymTMCldfOB12 X-Received: by 2002:a05:622a:1894:b0:3f7:ff3a:f878 with SMTP id v20-20020a05622a189400b003f7ff3af878mr2889593qtc.52.1686065689472; Tue, 06 Jun 2023 08:34:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686065689; cv=none; d=google.com; s=arc-20160816; b=ekw35B+0lVFMXd1SsU7YWcaye5Ht29x61mKtywhFSSObnfODeRa10dS65YPkrmaxGJ gAVDijOmm83NSJzSu9HTd6HQl1uyWD3JdnRujfjyiQ8uJVxeyZNXDohMqjgekkYiTKO8 6ZIClBW549t42x9epPD4C+d7bYeWlty6DdfSrkC6zm2m3ZPnab29UE70ZrnA93ZyXuza gRqf91yGVj2xJGxR5JQe5XW5RDuvWRsN0GeFqt2wnWZ/IO/2H82dc7sNb4bRJuOq16P3 +GZsuPLCiH7mcOilqRVctTaQ7azkosSIT1JKiJW6FaFlsgz9uuNULNsvcLTWVhVIh6o+ 2b7g== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=X7JKC1C1TqC6lozx5BzvOTyBGsMkbRuRKMCyiefiS4I=; b=e4Xp6Kly+HAt79kMsc+gLuDZYk2GQUoQ2joMm9ZobGpABM+IclUAtvRDuB7D5Kdwn7 wOWu4LRv9scKr3P+TuikpvygU2mHnwsTCIQHNl6cE/iO6YPU9ZzlY4URwxAsS0NhJzo7 zXAysETHiVRF4auflrZaCYpOg8pqwhg68jYMM6JafyXCgkn1ZIh/DBkRVIp7uw42IMcT YVCdfJMD+etsrCoGkIZQTm4wJ2e75/PysL3azHet6R0+Mj6/Zw5tq+4SHGxZ+/AMcEZ7 gmoIY6Fq43rz4Lo77siqmF0J5s/m52ja03vaq1PjH+y4RS5VNWetuUdd2q8vky63UH/9 qB6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=uJJRuHpv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f37-20020a05622a1a2500b003ef3035746dsi6398975qtb.56.2023.06.06.08.34.33; Tue, 06 Jun 2023 08:34:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=uJJRuHpv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238457AbjFFPMs (ORCPT + 99 others); Tue, 6 Jun 2023 11:12:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42004 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238391AbjFFPMq (ORCPT ); Tue, 6 Jun 2023 11:12:46 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4776EE40; Tue, 6 Jun 2023 08:12:45 -0700 (PDT) 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 CDCF9629C8; Tue, 6 Jun 2023 15:12:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6E38DC4339B; Tue, 6 Jun 2023 15:12:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1686064364; bh=TUuQCM3jhirEhMqYofGh/R4e0sG21Hal+fI5biqfXTw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uJJRuHpvRKBZaGY1ZkGv4N2KFZAchtA2sM4jT01xcS7mPrI5y0sXKZkLB4ACtqLQ/ asvk9jxSTJhN69F4LxkrmmzxF+4QaUXZmmeaSmIBT5ahi02mIWxVqHNpiDqUH30Te4 reoHmnOc4riJd0lEQa9+vmZ5lddeXBXVgQiCoYl85mr1It2s6h8k2GTjrNjQeqybbp Ilqan/az9p3aM4S8LV2+ZLVe2mKWc1VXnwIL0FuAKFkeFCGcUtqa59ug4uqs4/K9/W 2DSzKNZfejUtyOc2mjMaPya/XVXEBRkH0C55R0shaAeOeh6JNia/vm/0Fx9SofYHAe SVcJrGAliFiKw== From: Daniel Bristot de Oliveira To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Steven Rostedt Cc: Juri Lelli , William White , Daniel Bristot de Oliveira , Masami Hiramatsu , Jonathan Corbet Subject: [PATCH V3 2/3] tracing/osnoise: Skip running osnoise if all instances are off Date: Tue, 6 Jun 2023 17:12:26 +0200 Message-Id: X-Mailer: git-send-email 2.38.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In the case of all tracing instances being off, sleep for the entire period. Q: Why not kill all threads so? A: It is valid and useful to start the threads with tracing off. For example, rtla disables tracing, starts the tracer, applies the scheduling setup to the threads, e.g., sched priority and cgroup, and then begin tracing with all set. Skipping the period helps to speed up rtla setup and save the trace after a stop tracing. Cc: Steven Rostedt Cc: Daniel Bristot de Oliveira Cc: Masami Hiramatsu Cc: Jonathan Corbet Signed-off-by: Daniel Bristot de Oliveira --- kernel/trace/trace_osnoise.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/kernel/trace/trace_osnoise.c b/kernel/trace/trace_osnoise.c index c265ec5f1726..220172cb874d 100644 --- a/kernel/trace/trace_osnoise.c +++ b/kernel/trace/trace_osnoise.c @@ -1285,6 +1285,22 @@ static __always_inline void osnoise_stop_tracing(void) rcu_read_unlock(); } +/* + * osnoise_has_tracing_on - Check if there is at least one instance on + */ +static __always_inline int osnoise_has_tracing_on(void) +{ + struct osnoise_instance *inst; + int trace_is_on = 0; + + rcu_read_lock(); + list_for_each_entry_rcu(inst, &osnoise_instances, list) + trace_is_on += tracer_tracing_is_on(inst->tr); + rcu_read_unlock(); + + return trace_is_on; +} + /* * notify_new_max_latency - Notify a new max latency via fsnotify interface. */ @@ -1517,13 +1533,16 @@ static struct cpumask save_cpumask; /* * osnoise_sleep - sleep until the next period */ -static void osnoise_sleep(void) +static void osnoise_sleep(bool skip_period) { u64 interval; ktime_t wake_time; mutex_lock(&interface_lock); - interval = osnoise_data.sample_period - osnoise_data.sample_runtime; + if (skip_period) + interval = osnoise_data.sample_period; + else + interval = osnoise_data.sample_period - osnoise_data.sample_runtime; mutex_unlock(&interface_lock); /* @@ -1604,8 +1623,14 @@ static int osnoise_main(void *data) if (osnoise_migration_pending()) break; + /* skip a period if tracing is off on all instances */ + if (!osnoise_has_tracing_on()) { + osnoise_sleep(true); + continue; + } + run_osnoise(); - osnoise_sleep(); + osnoise_sleep(false); } migrate_enable(); -- 2.38.1