Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp736328ybz; Wed, 15 Apr 2020 17:51:12 -0700 (PDT) X-Google-Smtp-Source: APiQypKfJ02gRdZZogjp7XKi5ju5z+cxBpN3IxWaCCJWz2LLvSJm3VAH4LpaPjWIySIT3+L9q/ve X-Received: by 2002:a17:906:6845:: with SMTP id a5mr7089202ejs.143.1586998272263; Wed, 15 Apr 2020 17:51:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586998272; cv=none; d=google.com; s=arc-20160816; b=OojuO3PuNSlNW3DBEMQXlFiahrdo+xbs2ifgyi+72oH9Y/wtOrwqX0oQYGuYB4WG07 PYFkI5XdNf15n1sUdWgvSf0B/1Lz3xpj0F2B1U9ifXJVTqPMStd/NggzubazFuzzfnmu J3At2BEd6uS4ZcGPQUjO546pmF/bgLGrd7402YklOcsnbXFu1/g9a7GDbMo1p9IFEXTm 6hgT8MA1Gjj9YjF1NrHwDIN6dz8t9dcqhtcq4LdobCuMyD5EIbgrjGE833+z99uXm3Tv HwtJ1S7sLg4TV4yPzakEWH/NpoOCO28t7r7J//nDm2jcI0yZZ7gT5tZ6bSIthuvx2WOk 6Ejg== 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=PM+s3wowPUp8Tk04V/t9RANVZcMXE21c4Spb2lU3klY=; b=vhvY38bpTHgzGRIMI4unIUpF3yyYwfZUtQxdEpUx8r9PzhTAGcmmN/TiL9t7MQSTW1 PJKwZmSReZZf4SYrifRK+2vjuSsR9i2X3j2EyUejCK305Cel2CAb5HO++7NbvNFHIps/ zXpts4Mrhi76BfenL1uQ9JMq9duIxiNGLN90S01OGawbjsY8LPYZ0+TsDqsZr1pfdmNV 6bMLojME4tJrwqP+PSsD6N4zyovKGBWpD/lPingT5drlmTcpt1B7o8KkV/Fvie5T8U2u j6TI+dR/EeN60Q25xZ2Xq+rqAT2LbIHgbI9UrObQXWJfc5q6TpHVbfy+f/1Ag6czjl7s xHrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=16G12vWV; 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 g7si11394704edk.195.2020.04.15.17.50.49; Wed, 15 Apr 2020 17:51:12 -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=16G12vWV; 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 S2437551AbgDOSVk (ORCPT + 99 others); Wed, 15 Apr 2020 14:21:40 -0400 Received: from mail.kernel.org ([198.145.29.99]:37886 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2441396AbgDOSTz (ORCPT ); Wed, 15 Apr 2020 14:19:55 -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 9287E21BE5; Wed, 15 Apr 2020 18:19:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1586974794; bh=u9WDPJ9PVhLe00nroezkeAOMPAu5vRYHEOa3AE/9rBc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=16G12vWV5otnRrHhYIEMlBGoo7Px1ovnQHIAR4q4+xpG8Jvpx4jsLCI0SbZOJbxtQ te9zxr8S8zNkC7y6P2yt9u6Nj3SL4z1bIG0qOjhRF9LhNWJWsQ3fwvPnDwotmLfi5A EBLUZUB1Q75Jap/4UEGMoCAijkdly4yOiCS0yYdw= 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 32/38] rcu-tasks: Add rcu_dynticks_zero_in_eqs() effectiveness statistics Date: Wed, 15 Apr 2020 11:19:35 -0700 Message-Id: <20200415181941.11653-32-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 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 6bd9bfe..b51f19a 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