Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp736723ybz; Wed, 15 Apr 2020 17:51:42 -0700 (PDT) X-Google-Smtp-Source: APiQypIpPORb9CvLVbnJpCd5G7ozgVe4/UfQMoN7h68iCn2Xh4Bkf4slPI6pFJT91NG+Hofo2tHe X-Received: by 2002:a50:de44:: with SMTP id a4mr28158074edl.56.1586998302449; Wed, 15 Apr 2020 17:51:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586998302; cv=none; d=google.com; s=arc-20160816; b=vpMNH3Yfiewui0PcgWb3sDdkdEEi1NMNYJ1hfX/wfTp3+mKOBIuasipDA+hELtVdFd rzdlGIT1VwEBTUXbJhHdQQJhWwDncq4EN9ucuGJ4jiK52SL8Nn2A05bx+zGXXCDq1wz/ Dbk4G1duQkUyGE0SAPCfgv8OPXZYE+yGKa+DSsBSFUnoQl0BWqCNdoT1oBcizIpPfmgj s40Zi54T0R1ShmZ+KYLKWv/553UE3AEDvZg/xB4yGt2NxaDdAZZf5Oqxv+gsPhcAZ0j4 YXXq0FyrXoL5WaTW3DRUKaE6N1JLX1gtJxr4GJ2JExPKtft+2vEJcZf1Hj2reLXsoJgz Mfuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=Yt8WxJWndrGdw6HyS79xfHYeXTB5SiNGXXagNCp3B0I=; b=JnsEIg1hAibUWMh3WtFOe5KuhDXYPU/TF6E7UmYHe1PW7L1mCHDuYYvrRTQffvqC3M fXwumLGBSvzVhZYJfIqJjpiAmKfjVH1D/1Hh+wIt0EK33NwlbfpFBQss7ElHAedhfsbp AkCrqo0DABNKWclxU3/WbAW4A4W3teKI6TX69iiTad7nbs+1OP4nIosE8H5ffcF1tSgJ 0XfeXctiEjJBmUVmniQev0MIvw52K18OsvRVn7KPcjwND+JeyvGArCl3QYJ4o6fJV1b3 V53f7Oqx5eykY1nu2+riyqeEMfKNJk77E7ue+5KtZEV8ireRB8Vl/VixS8WXjoT05EuO 3mXg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=n4o3zzaD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c3si11620988ejr.452.2020.04.15.17.51.19; Wed, 15 Apr 2020 17:51:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=n4o3zzaD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S2441388AbgDOSXR (ORCPT + 99 others); Wed, 15 Apr 2020 14:23:17 -0400 Received: from mail.kernel.org ([198.145.29.99]:37208 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2441387AbgDOSTx (ORCPT ); Wed, 15 Apr 2020 14:19:53 -0400 Received: from paulmck-ThinkPad-P72.home (50-39-105-78.bvtn.or.frontiernet.net [50.39.105.78]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2CC4E21974; Wed, 15 Apr 2020 18:19:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1586974792; bh=yGRMtH20Rh8i3PCF3yestqxkWzIyt0WgNjtRB5YtRJI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n4o3zzaDDD0qZonDrtQVH5Qskl5D4zPlHmFXdn2jk28ERaGGrSB3pdGAf6/LRfsvo 69xTVbqhoPokZ7lkgBuGMjiFWwgrzYB4mS5apo6iRGkk2KlJgDvZ/ltGTO5zJJc9Qj 2ot3XbSvaSezMrdD25lVx8c2jIJ0rc8GudJxZZGk= From: paulmck@kernel.org To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, mingo@kernel.org, jiangshanlai@gmail.com, dipankar@in.ibm.com, akpm@linux-foundation.org, mathieu.desnoyers@efficios.com, josh@joshtriplett.org, tglx@linutronix.de, peterz@infradead.org, rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com, fweisbec@gmail.com, oleg@redhat.com, joel@joelfernandes.org, "Paul E. McKenney" Subject: [PATCH v4 tip/core/rcu 25/38] rcu-tasks: Add grace-period and IPI counts to statistics Date: Wed, 15 Apr 2020 11:19:28 -0700 Message-Id: <20200415181941.11653-25-paulmck@kernel.org> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20200415181856.GA11037@paulmck-ThinkPad-P72> References: <20200415181856.GA11037@paulmck-ThinkPad-P72> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "Paul E. McKenney" This commit adds a grace-period count and a count of IPIs sent since boot, which is printed in response to rcutorture writer stalls and at the end of rcutorture testing. These counts will be used to evaluate various schemes to reduce the number of IPIs sent. Signed-off-by: Paul E. McKenney --- kernel/rcu/tasks.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h index 4a730f1..94225f9 100644 --- a/kernel/rcu/tasks.h +++ b/kernel/rcu/tasks.h @@ -30,6 +30,8 @@ typedef void (*postgp_func_t)(struct rcu_tasks *rtp); * @gp_state: Grace period's most recent state transition (debugging). * @gp_jiffies: Time of last @gp_state transition. * @gp_start: Most recent grace-period start in jiffies. + * @n_gps: Number of grace periods completed since boot. + * @n_ipis: Number of IPIs sent to encourage grace periods to end. * @pregp_func: This flavor's pre-grace-period function (optional). * @pertask_func: This flavor's per-task scan function (optional). * @postscan_func: This flavor's post-task scan function (optional). @@ -47,6 +49,8 @@ struct rcu_tasks { int gp_state; unsigned long gp_jiffies; unsigned long gp_start; + unsigned long n_gps; + unsigned long n_ipis; struct task_struct *kthread_ptr; rcu_tasks_gp_func_t gp_func; pregp_func_t pregp_func; @@ -208,6 +212,7 @@ static int __noreturn rcu_tasks_kthread(void *arg) set_tasks_gp_state(rtp, RTGS_WAIT_GP); rtp->gp_start = jiffies; rtp->gp_func(rtp); + rtp->n_gps++; /* Invoke the callbacks. */ set_tasks_gp_state(rtp, RTGS_INVOKE_CBS); @@ -285,11 +290,12 @@ static void __init rcu_tasks_bootup_oddness(void) /* Dump out rcutorture-relevant state common to all RCU-tasks flavors. */ static void show_rcu_tasks_generic_gp_kthread(struct rcu_tasks *rtp, char *s) { - pr_info("%s: %s(%d) since %lu %c%c %s\n", + pr_info("%s: %s(%d) since %lu g:%lu i:%lu %c%c %s\n", rtp->kname, tasks_gp_state_getname(rtp), data_race(rtp->gp_state), jiffies - data_race(rtp->gp_jiffies), + data_race(rtp->n_gps), data_race(rtp->n_ipis), ".k"[!!data_race(rtp->kthread_ptr)], ".C"[!!data_race(rtp->cbs_head)], s); @@ -592,6 +598,7 @@ static void rcu_tasks_be_rude(struct work_struct *work) // Wait for one rude RCU-tasks grace period. static void rcu_tasks_rude_wait_gp(struct rcu_tasks *rtp) { + rtp->n_ipis += cpumask_weight(cpu_online_mask); schedule_on_each_cpu(rcu_tasks_be_rude); } @@ -852,6 +859,7 @@ static void trc_wait_for_one_reader(struct task_struct *t, atomic_inc(&trc_n_readers_need_end); per_cpu(trc_ipi_to_cpu, cpu) = true; t->trc_ipi_to_cpu = cpu; + rcu_tasks_trace.n_ipis++; if (smp_call_function_single(cpu, trc_read_check_handler, t, 0)) { // Just in case there is some other reason for -- 2.9.5