Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp32106ybb; Fri, 27 Mar 2020 15:27:07 -0700 (PDT) X-Google-Smtp-Source: ADFU+vsz2TsDn3Vl4urlB/eiEe7tojK71sRgCZzXzLCel7I2I5ZxoJmKDTASn0j2S/Rx5VwR5Yk/ X-Received: by 2002:a4a:3357:: with SMTP id q84mr1378612ooq.69.1585348027225; Fri, 27 Mar 2020 15:27:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585348027; cv=none; d=google.com; s=arc-20160816; b=ZgBwgQVJ2Pi+s0Ozut8rzOzqSsEnrNxLGwjC6IWyVDOjEckNAwV2BdPkw7Jd0jPO51 9vbvEeoZfuJFBzu97OkuMj9xCsDf8dTHUjkET7rG8ZYKVf4Wmcw+F13E7k46eKhspA1c YraxpCAYdakhldl32tNz5QXcd/EedFydZWEAhPlC5koeuFdDMclOrvfLN9gXTDxdFPZJ KKqQGbAutMOVP6+Cra4EXSMN+yDsbOfk4zF9kfgYP3gFGR1bKKIP2A1RNVZvqdHNqL1Q uJ/prtaEYy9FNtqt7/iZ5lF3h7QB6amv/ZxNSD7TPw1V+n/Iz9RB94HU+yFe/ehKPdRS rl7A== 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=t9zBYYjLWT3+1GvSt8ZJXnyJoZleJo96sgNErWqii1U=; b=hGkwcrU5W5hGe4B6E+3JP5hg5bMNa+jcaACqufR+7+UY/tsb70Tgu8Zj6OqbXQQ1pr KCjyfXZ4ImVTP5FofAw+iWg3i1RVpbdjmHdqCALd2I8LFxxhGFKfaj2+KJHILAQ9Rfpr m5FhEpSpnvD4ZU+7o5F5ITL70gQA4YJRetiQCQNbTxa24VAHFUAVUAm8sn4gzYrmUyPY 5d0tbMwvNSP52QBFJZ5mbsnYmnqZngFkGDSuEwpyLWADGZ38QRgmJ10y2Tzht3wzF5VP ZUn7Xei0MRVZB9JjdbFYdddHysxmeFsNLgFeunGspPIIm6T2oLPp7byLyx5I4WnFKhXN 0Izg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wKT67xEc; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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. [209.132.180.67]) by mx.google.com with ESMTP id a190si2680404oib.146.2020.03.27.15.26.55; Fri, 27 Mar 2020 15:27:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wKT67xEc; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 S1728075AbgC0WZx (ORCPT + 99 others); Fri, 27 Mar 2020 18:25:53 -0400 Received: from mail.kernel.org ([198.145.29.99]:43316 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727876AbgC0WZJ (ORCPT ); Fri, 27 Mar 2020 18:25:09 -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 B29EC21927; Fri, 27 Mar 2020 22:25:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1585347908; bh=1nn9QtPMvUtw5J8lfCbvfOGClwyMMAJVbt0kG1bLOmI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wKT67xEcMLAjt1OB+qdmOR3qmOqGzLDsrZ6q8oZPo3npTzGCPnzGwodq8I158OAgi DYeLpTrJXnYwchLpxy1vuVfPE2Z6XQq78pfsaQXHUvqMyYsLK2oazPSSwrcwcoTMPe SAW+tuhDJHYtL408ZyHtWBtJXxgTUwZXFCFljuK0= 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 v3 tip/core/rcu 31/34] rcu-tasks: Add rcu_dynticks_zero_in_eqs() effectiveness statistics Date: Fri, 27 Mar 2020 15:24:53 -0700 Message-Id: <20200327222456.12470-31-paulmck@kernel.org> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20200327222346.GA12082@paulmck-ThinkPad-P72> References: <20200327222346.GA12082@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 counts of the number of calls and number of successful calls to rcu_dynticks_zero_in_eqs(), which are printed at the end of rcutorture runs and at stall time. This allows evaluation of the effectiveness of rcu_dynticks_zero_in_eqs(). Signed-off-by: Paul E. McKenney --- kernel/rcu/tasks.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h index 27d2458..c1a0706 100644 --- a/kernel/rcu/tasks.h +++ b/kernel/rcu/tasks.h @@ -725,6 +725,11 @@ DECLARE_WAIT_QUEUE_HEAD(trc_wait); // List of holdout tasks. // Record outstanding IPIs to each CPU. No point in sending two... static DEFINE_PER_CPU(bool, trc_ipi_to_cpu); +// The number of detections of task quiescent state relying on +// heavyweight readers executing explicit memory barriers. +unsigned long n_heavy_reader_attempts; +unsigned long n_heavy_reader_updates; + void call_rcu_tasks_trace(struct rcu_head *rhp, rcu_callback_t func); DEFINE_RCU_TASKS(rcu_tasks_trace, rcu_tasks_wait_gp, call_rcu_tasks_trace, "RCU Tasks Trace"); @@ -830,9 +835,11 @@ static bool trc_inspect_reader(struct task_struct *t, void *arg) // If heavyweight readers are enabled on the remote task, // we can inspect its state despite its currently running. // However, we cannot safely change its state. + n_heavy_reader_attempts++; if (!ofl && // Check for "running" idle tasks on offline CPUs. !rcu_dynticks_zero_in_eqs(cpu, &t->trc_reader_nesting)) return false; // No quiescent state, do it the hard way. + n_heavy_reader_updates++; in_qs = true; } else { in_qs = likely(!t->trc_reader_nesting); @@ -1143,9 +1150,11 @@ core_initcall(rcu_spawn_tasks_trace_kthread); static void show_rcu_tasks_trace_gp_kthread(void) { - char buf[32]; + char buf[64]; - sprintf(buf, "N%d", atomic_read(&trc_n_readers_need_end)); + sprintf(buf, "N%d h:%lu/%lu", atomic_read(&trc_n_readers_need_end), + data_race(n_heavy_reader_updates), + data_race(n_heavy_reader_attempts)); show_rcu_tasks_generic_gp_kthread(&rcu_tasks_trace, buf); } -- 2.9.5