All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: tglx@linutronix.de, mingo@kernel.org, juri.lelli@redhat.com,
	vincent.guittot@linaro.org, dietmar.eggemann@arm.com,
	rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de,
	bristot@redhat.com, bsingharora@gmail.com, pbonzini@redhat.com,
	maz@kernel.org
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
	peterz@infradead.org, riel@surriel.com, hannes@cmpxchg.org
Subject: [PATCH 5/6] delayacct: Add static_branch in scheduler hooks
Date: Wed, 05 May 2021 12:59:45 +0200	[thread overview]
Message-ID: <20210505111525.248028369@infradead.org> (raw)
In-Reply-To: 20210505105940.190490250@infradead.org

Cheaper when delayacct is disabled.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
 include/linux/delayacct.h |    8 ++++++++
 kernel/delayacct.c        |    3 +++
 2 files changed, 11 insertions(+)

--- a/include/linux/delayacct.h
+++ b/include/linux/delayacct.h
@@ -58,8 +58,10 @@ struct task_delay_info {
 
 #include <linux/sched.h>
 #include <linux/slab.h>
+#include <linux/jump_label.h>
 
 #ifdef CONFIG_TASK_DELAY_ACCT
+DECLARE_STATIC_KEY_TRUE(delayacct_key);
 extern int delayacct_on;	/* Delay accounting turned on/off */
 extern struct kmem_cache *delayacct_cache;
 extern void delayacct_init(void);
@@ -114,6 +116,9 @@ static inline void delayacct_tsk_free(st
 
 static inline void delayacct_blkio_start(void)
 {
+	if (!static_branch_likely(&delayacct_key))
+		return;
+
 	delayacct_set_flag(DELAYACCT_PF_BLKIO);
 	if (current->delays)
 		__delayacct_blkio_start();
@@ -121,6 +126,9 @@ static inline void delayacct_blkio_start
 
 static inline void delayacct_blkio_end(struct task_struct *p)
 {
+	if (!static_branch_likely(&delayacct_key))
+		return;
+
 	if (p->delays)
 		__delayacct_blkio_end(p);
 	delayacct_clear_flag(DELAYACCT_PF_BLKIO);
--- a/kernel/delayacct.c
+++ b/kernel/delayacct.c
@@ -14,6 +14,7 @@
 #include <linux/delayacct.h>
 #include <linux/module.h>
 
+DEFINE_STATIC_KEY_TRUE(delayacct_key);
 int delayacct_on __read_mostly = 1;	/* Delay accounting turned on/off */
 struct kmem_cache *delayacct_cache;
 
@@ -28,6 +29,8 @@ void delayacct_init(void)
 {
 	delayacct_cache = KMEM_CACHE(task_delay_info, SLAB_PANIC|SLAB_ACCOUNT);
 	delayacct_tsk_init(&init_task);
+	if (!delayacct_on)
+		static_branch_disable(&delayacct_key);
 }
 
 void __delayacct_tsk_init(struct task_struct *tsk)



  parent reply	other threads:[~2021-05-05 11:21 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-05 10:59 [PATCH 0/6] sched,delayacct: Some cleanups Peter Zijlstra
2021-05-05 10:59 ` [PATCH 1/6] delayacct: Use sched_clock() Peter Zijlstra
2021-05-05 14:40   ` Rik van Riel
2021-05-06 13:59   ` Johannes Weiner
2021-05-06 14:17     ` Peter Zijlstra
2021-05-06 15:17       ` Johannes Weiner
2021-05-07 12:40   ` Balbir Singh
2021-05-12 10:28   ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2021-05-12 10:43   ` [PATCH 1/6] " Mel Gorman
2021-05-05 10:59 ` [PATCH 2/6] sched: Rename sched_info_{queued,dequeued} Peter Zijlstra
2021-05-05 14:39   ` Rik van Riel
2021-05-06 13:59   ` Johannes Weiner
2021-05-10  8:45   ` Balbir Singh
2021-05-12 10:28   ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2021-05-12 10:49   ` [PATCH 2/6] " Mel Gorman
2021-05-05 10:59 ` [PATCH 3/6] sched: Simplify sched_info_on() Peter Zijlstra
2021-05-06 14:03   ` Johannes Weiner
2021-05-12 10:28   ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2021-05-12 11:10   ` [PATCH 3/6] " Mel Gorman
2021-05-12 11:32     ` Peter Zijlstra
2021-05-12 12:51       ` Mel Gorman
2021-05-05 10:59 ` [PATCH 4/6] kvm: Select SCHED_INFO instead of TASK_DELAY_ACCT Peter Zijlstra
2021-05-05 11:37   ` Paolo Bonzini
2021-05-06 14:38   ` Marc Zyngier
2021-05-07 12:42   ` Balbir Singh
2021-05-12 10:28   ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2021-05-12 11:11   ` [PATCH 4/6] " Mel Gorman
2021-05-05 10:59 ` Peter Zijlstra [this message]
2021-05-06 14:05   ` [PATCH 5/6] delayacct: Add static_branch in scheduler hooks Johannes Weiner
2021-05-10  8:42   ` Balbir Singh
2021-05-12 10:28   ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2021-05-12 11:13   ` [PATCH 5/6] " Mel Gorman
2021-05-05 10:59 ` [PATCH 6/6] [RFC] delayacct: Default disabled Peter Zijlstra
2021-05-12 10:28   ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2021-05-12 11:35   ` [PATCH 6/6] [RFC] " Mel Gorman
2021-05-05 22:29 ` [PATCH 0/6] sched,delayacct: Some cleanups Balbir Singh
2021-05-06  9:13   ` Peter Zijlstra
2021-05-07 12:38     ` Balbir Singh
2021-05-12 11:34       ` Mel Gorman
2021-05-12 11:38         ` Peter Zijlstra
2021-05-12 12:23         ` Paul Wise
2021-05-12 13:00           ` Mel Gorman
2021-05-13  1:29             ` Paul Wise
2021-06-25  0:50         ` Paul Wise
2021-05-07  9:05 ` Thomas Gleixner
2021-05-10  7:08 ` Ingo Molnar
2021-05-10 12:05 ` [PATCH 7/6] delayacct: Add sysctl to enable at runtime Peter Zijlstra
2021-05-10 12:06   ` Peter Zijlstra
2021-05-12 10:28   ` [tip: sched/core] " tip-bot2 for Peter Zijlstra
2021-05-12 11:40   ` [PATCH 7/6] " Mel Gorman
2021-05-19  8:09     ` [tip: sched/core] delayacct: Document task_delayacct sysctl tip-bot2 for Mel Gorman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210505111525.248028369@infradead.org \
    --to=peterz@infradead.org \
    --cc=bristot@redhat.com \
    --cc=bsegall@google.com \
    --cc=bsingharora@gmail.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=hannes@cmpxchg.org \
    --cc=juri.lelli@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maz@kernel.org \
    --cc=mgorman@suse.de \
    --cc=mingo@kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=riel@surriel.com \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=vincent.guittot@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.