* [PATCH v2 0/2] Clean up schedstat and task delay acct config options @ 2015-06-25 18:23 Naveen N. Rao 2015-06-25 18:23 ` [PATCH v2 1/2] schedstat: Simplify sched_info accounting dependency Naveen N. Rao 2015-06-25 18:23 ` [PATCH v2 2/2] schedstat: Expose /proc/pid/schedstat if CONFIG_SCHED_INFO is set Naveen N. Rao 0 siblings, 2 replies; 14+ messages in thread From: Naveen N. Rao @ 2015-06-25 18:23 UTC (permalink / raw) To: bsingharora, mingo; +Cc: linux-kernel, srikar, ricklind, a.p.zijlstra Further to the earlier discussion [1], this patch set introduces CONFIG_SCHED_INFO for the common code associated with CONFIG_SCHEDSTATS and CONFIG_TASK_DELAY_ACCT. Further, /proc/<pid>/schedstat is now exposed if either of these is enabled. [1] http://thread.gmane.org/gmane.linux.kernel/1961707 - Naveen Naveen N. Rao (2): schedstat: Simplify sched_info accounting dependency schedstat: Expose /proc/pid/schedstat if CONFIG_SCHED_INFO is set fs/proc/base.c | 11 +++++++---- include/linux/sched.h | 6 +++--- init/Kconfig | 1 + kernel/sched/core.c | 2 +- kernel/sched/stats.h | 4 ++-- lib/Kconfig.debug | 5 +++++ 6 files changed, 19 insertions(+), 10 deletions(-) -- 2.4.0 ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v2 1/2] schedstat: Simplify sched_info accounting dependency 2015-06-25 18:23 [PATCH v2 0/2] Clean up schedstat and task delay acct config options Naveen N. Rao @ 2015-06-25 18:23 ` Naveen N. Rao 2015-06-30 13:30 ` Srikar Dronamraju ` (2 more replies) 2015-06-25 18:23 ` [PATCH v2 2/2] schedstat: Expose /proc/pid/schedstat if CONFIG_SCHED_INFO is set Naveen N. Rao 1 sibling, 3 replies; 14+ messages in thread From: Naveen N. Rao @ 2015-06-25 18:23 UTC (permalink / raw) To: bsingharora, mingo; +Cc: linux-kernel, srikar, ricklind, a.p.zijlstra Both CONFIG_SCHEDSTATS and CONFIG_TASK_DELAY_ACCT track task sched_info. Simplify by introducing a common CONFIG_SCHED_INFO selected by both. Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- include/linux/sched.h | 6 +++--- init/Kconfig | 1 + kernel/sched/core.c | 2 +- kernel/sched/stats.h | 4 ++-- lib/Kconfig.debug | 5 +++++ 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index 6633e83..9bf4bc0 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -849,7 +849,7 @@ extern struct user_struct root_user; struct backing_dev_info; struct reclaim_state; -#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) +#ifdef CONFIG_SCHED_INFO struct sched_info { /* cumulative counters */ unsigned long pcount; /* # of times run on this cpu */ @@ -859,7 +859,7 @@ struct sched_info { unsigned long long last_arrival,/* when we last ran on a cpu */ last_queued; /* when we were last queued to run */ }; -#endif /* defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) */ +#endif /* CONFIG_SCHED_INFO */ #ifdef CONFIG_TASK_DELAY_ACCT struct task_delay_info { @@ -1408,7 +1408,7 @@ struct task_struct { int rcu_tasks_idle_cpu; #endif /* #ifdef CONFIG_TASKS_RCU */ -#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) +#ifdef CONFIG_SCHED_INFO struct sched_info sched_info; #endif diff --git a/init/Kconfig b/init/Kconfig index b999fa3..12cb556 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -435,6 +435,7 @@ config TASKSTATS config TASK_DELAY_ACCT bool "Enable per-task delay accounting" depends on TASKSTATS + select SCHED_INFO help Collect information on time spent by a task waiting for system resources like cpu, synchronous block I/O completion and swapping diff --git a/kernel/sched/core.c b/kernel/sched/core.c index b803e1b..5caa029 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2164,7 +2164,7 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p) set_task_cpu(p, cpu); raw_spin_unlock_irqrestore(&p->pi_lock, flags); -#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) +#ifdef CONFIG_SCHED_INFO if (likely(sched_info_on())) memset(&p->sched_info, 0, sizeof(p->sched_info)); #endif diff --git a/kernel/sched/stats.h b/kernel/sched/stats.h index 077ebbd..b0fbc76 100644 --- a/kernel/sched/stats.h +++ b/kernel/sched/stats.h @@ -47,7 +47,7 @@ rq_sched_info_depart(struct rq *rq, unsigned long long delta) # define schedstat_set(var, val) do { } while (0) #endif -#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) +#ifdef CONFIG_SCHED_INFO static inline void sched_info_reset_dequeued(struct task_struct *t) { t->sched_info.last_queued = 0; @@ -156,7 +156,7 @@ sched_info_switch(struct rq *rq, #define sched_info_depart(rq, t) do { } while (0) #define sched_info_arrive(rq, next) do { } while (0) #define sched_info_switch(rq, t, next) do { } while (0) -#endif /* CONFIG_SCHEDSTATS || CONFIG_TASK_DELAY_ACCT */ +#endif /* CONFIG_SCHED_INFO */ /* * The following are functions that support scheduler-internal time accounting. diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index b908048..e2894b2 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -841,9 +841,14 @@ config SCHED_DEBUG that can help debug the scheduler. The runtime overhead of this option is minimal. +config SCHED_INFO + bool + default n + config SCHEDSTATS bool "Collect scheduler statistics" depends on DEBUG_KERNEL && PROC_FS + select SCHED_INFO help If you say Y here, additional code will be inserted into the scheduler and related routines to collect statistics about -- 2.4.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/2] schedstat: Simplify sched_info accounting dependency 2015-06-25 18:23 ` [PATCH v2 1/2] schedstat: Simplify sched_info accounting dependency Naveen N. Rao @ 2015-06-30 13:30 ` Srikar Dronamraju 2015-06-30 13:33 ` Balbir Singh 2015-07-03 7:45 ` [tip:sched/urgent] sched/stat: Simplify the " tip-bot for Naveen N. Rao 2015-07-04 8:07 ` tip-bot for Naveen N. Rao 2 siblings, 1 reply; 14+ messages in thread From: Srikar Dronamraju @ 2015-06-30 13:30 UTC (permalink / raw) To: Naveen N. Rao; +Cc: bsingharora, mingo, linux-kernel, ricklind, a.p.zijlstra * Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> [2015-06-25 23:53:37]: > Both CONFIG_SCHEDSTATS and CONFIG_TASK_DELAY_ACCT track task sched_info. > Simplify by introducing a common CONFIG_SCHED_INFO selected by both. > > Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> > --- Looks good to me. Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> -- Thanks and Regards Srikar Dronamraju ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/2] schedstat: Simplify sched_info accounting dependency 2015-06-30 13:30 ` Srikar Dronamraju @ 2015-06-30 13:33 ` Balbir Singh 0 siblings, 0 replies; 14+ messages in thread From: Balbir Singh @ 2015-06-30 13:33 UTC (permalink / raw) To: Srikar Dronamraju Cc: Naveen N. Rao, mingo, linux-kernel@vger.kernel.org, ricklind, Peter Zijlstra On Tue, Jun 30, 2015 at 7:00 PM, Srikar Dronamraju <srikar@linux.vnet.ibm.com> wrote: > * Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> [2015-06-25 23:53:37]: > >> Both CONFIG_SCHEDSTATS and CONFIG_TASK_DELAY_ACCT track task sched_info. >> Simplify by introducing a common CONFIG_SCHED_INFO selected by both. >> >> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> >> --- > > Looks good to me. > > Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Acked-by: Balbir Singh <bsingharora@gmail.com> ^ permalink raw reply [flat|nested] 14+ messages in thread
* [tip:sched/urgent] sched/stat: Simplify the sched_info accounting dependency 2015-06-25 18:23 ` [PATCH v2 1/2] schedstat: Simplify sched_info accounting dependency Naveen N. Rao 2015-06-30 13:30 ` Srikar Dronamraju @ 2015-07-03 7:45 ` tip-bot for Naveen N. Rao 2015-07-04 8:07 ` tip-bot for Naveen N. Rao 2 siblings, 0 replies; 14+ messages in thread From: tip-bot for Naveen N. Rao @ 2015-07-03 7:45 UTC (permalink / raw) To: linux-tip-commits Cc: naveen.n.rao, bsingharora, mingo, srikar, tglx, hpa, linux-kernel, torvalds, peterz Commit-ID: 640032ed8d55bf6f09b0701e7464aab7e24e0361 Gitweb: http://git.kernel.org/tip/640032ed8d55bf6f09b0701e7464aab7e24e0361 Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> AuthorDate: Thu, 25 Jun 2015 23:53:37 +0530 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Wed, 1 Jul 2015 10:02:58 +0200 sched/stat: Simplify the sched_info accounting dependency Both CONFIG_SCHEDSTATS=y and CONFIG_TASK_DELAY_ACCT=y track task sched_info, which results in ugly #if clauses. Simplify the code by introducing a synthethic CONFIG_SCHED_INFO switch, selected by both. Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Cc: Balbir Singh <bsingharora@gmail.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: a.p.zijlstra@chello.nl Cc: ricklind@us.ibm.com Link: http://lkml.kernel.org/r/8d19eef800811a94b0f91bcbeb27430a884d7433.1435255405.git.naveen.n.rao@linux.vnet.ibm.com Signed-off-by: Ingo Molnar <mingo@kernel.org> --- include/linux/sched.h | 6 +++--- init/Kconfig | 1 + kernel/sched/core.c | 2 +- kernel/sched/stats.h | 4 ++-- lib/Kconfig.debug | 5 +++++ 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index 6633e83..9bf4bc0 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -849,7 +849,7 @@ extern struct user_struct root_user; struct backing_dev_info; struct reclaim_state; -#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) +#ifdef CONFIG_SCHED_INFO struct sched_info { /* cumulative counters */ unsigned long pcount; /* # of times run on this cpu */ @@ -859,7 +859,7 @@ struct sched_info { unsigned long long last_arrival,/* when we last ran on a cpu */ last_queued; /* when we were last queued to run */ }; -#endif /* defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) */ +#endif /* CONFIG_SCHED_INFO */ #ifdef CONFIG_TASK_DELAY_ACCT struct task_delay_info { @@ -1408,7 +1408,7 @@ struct task_struct { int rcu_tasks_idle_cpu; #endif /* #ifdef CONFIG_TASKS_RCU */ -#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) +#ifdef CONFIG_SCHED_INFO struct sched_info sched_info; #endif diff --git a/init/Kconfig b/init/Kconfig index b999fa3..12cb556 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -435,6 +435,7 @@ config TASKSTATS config TASK_DELAY_ACCT bool "Enable per-task delay accounting" depends on TASKSTATS + select SCHED_INFO help Collect information on time spent by a task waiting for system resources like cpu, synchronous block I/O completion and swapping diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 5bcf926..435d8e4 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1975,7 +1975,7 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p) set_task_cpu(p, cpu); raw_spin_unlock_irqrestore(&p->pi_lock, flags); -#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) +#ifdef CONFIG_SCHED_INFO if (likely(sched_info_on())) memset(&p->sched_info, 0, sizeof(p->sched_info)); #endif diff --git a/kernel/sched/stats.h b/kernel/sched/stats.h index 077ebbd..b0fbc76 100644 --- a/kernel/sched/stats.h +++ b/kernel/sched/stats.h @@ -47,7 +47,7 @@ rq_sched_info_depart(struct rq *rq, unsigned long long delta) # define schedstat_set(var, val) do { } while (0) #endif -#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) +#ifdef CONFIG_SCHED_INFO static inline void sched_info_reset_dequeued(struct task_struct *t) { t->sched_info.last_queued = 0; @@ -156,7 +156,7 @@ sched_info_switch(struct rq *rq, #define sched_info_depart(rq, t) do { } while (0) #define sched_info_arrive(rq, next) do { } while (0) #define sched_info_switch(rq, t, next) do { } while (0) -#endif /* CONFIG_SCHEDSTATS || CONFIG_TASK_DELAY_ACCT */ +#endif /* CONFIG_SCHED_INFO */ /* * The following are functions that support scheduler-internal time accounting. diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index b908048..e2894b2 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -841,9 +841,14 @@ config SCHED_DEBUG that can help debug the scheduler. The runtime overhead of this option is minimal. +config SCHED_INFO + bool + default n + config SCHEDSTATS bool "Collect scheduler statistics" depends on DEBUG_KERNEL && PROC_FS + select SCHED_INFO help If you say Y here, additional code will be inserted into the scheduler and related routines to collect statistics about ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [tip:sched/urgent] sched/stat: Simplify the sched_info accounting dependency 2015-06-25 18:23 ` [PATCH v2 1/2] schedstat: Simplify sched_info accounting dependency Naveen N. Rao 2015-06-30 13:30 ` Srikar Dronamraju 2015-07-03 7:45 ` [tip:sched/urgent] sched/stat: Simplify the " tip-bot for Naveen N. Rao @ 2015-07-04 8:07 ` tip-bot for Naveen N. Rao 2 siblings, 0 replies; 14+ messages in thread From: tip-bot for Naveen N. Rao @ 2015-07-04 8:07 UTC (permalink / raw) To: linux-tip-commits Cc: mingo, peterz, hpa, naveen.n.rao, tglx, srikar, torvalds, linux-kernel, bsingharora Commit-ID: f6db8347993256b58bd4746b0c4c5b935c32210d Gitweb: http://git.kernel.org/tip/f6db8347993256b58bd4746b0c4c5b935c32210d Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> AuthorDate: Thu, 25 Jun 2015 23:53:37 +0530 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Sat, 4 Jul 2015 10:04:30 +0200 sched/stat: Simplify the sched_info accounting dependency Both CONFIG_SCHEDSTATS=y and CONFIG_TASK_DELAY_ACCT=y track task sched_info, which results in ugly #if clauses. Simplify the code by introducing a synthethic CONFIG_SCHED_INFO switch, selected by both. Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Cc: Balbir Singh <bsingharora@gmail.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: a.p.zijlstra@chello.nl Cc: ricklind@us.ibm.com Link: http://lkml.kernel.org/r/8d19eef800811a94b0f91bcbeb27430a884d7433.1435255405.git.naveen.n.rao@linux.vnet.ibm.com Signed-off-by: Ingo Molnar <mingo@kernel.org> --- include/linux/sched.h | 6 +++--- init/Kconfig | 1 + kernel/sched/core.c | 2 +- kernel/sched/stats.h | 4 ++-- lib/Kconfig.debug | 5 +++++ 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index 6633e83..9bf4bc0 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -849,7 +849,7 @@ extern struct user_struct root_user; struct backing_dev_info; struct reclaim_state; -#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) +#ifdef CONFIG_SCHED_INFO struct sched_info { /* cumulative counters */ unsigned long pcount; /* # of times run on this cpu */ @@ -859,7 +859,7 @@ struct sched_info { unsigned long long last_arrival,/* when we last ran on a cpu */ last_queued; /* when we were last queued to run */ }; -#endif /* defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) */ +#endif /* CONFIG_SCHED_INFO */ #ifdef CONFIG_TASK_DELAY_ACCT struct task_delay_info { @@ -1408,7 +1408,7 @@ struct task_struct { int rcu_tasks_idle_cpu; #endif /* #ifdef CONFIG_TASKS_RCU */ -#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) +#ifdef CONFIG_SCHED_INFO struct sched_info sched_info; #endif diff --git a/init/Kconfig b/init/Kconfig index b999fa3..12cb556 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -435,6 +435,7 @@ config TASKSTATS config TASK_DELAY_ACCT bool "Enable per-task delay accounting" depends on TASKSTATS + select SCHED_INFO help Collect information on time spent by a task waiting for system resources like cpu, synchronous block I/O completion and swapping diff --git a/kernel/sched/core.c b/kernel/sched/core.c index c86935a..abb8785 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1975,7 +1975,7 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p) set_task_cpu(p, cpu); raw_spin_unlock_irqrestore(&p->pi_lock, flags); -#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) +#ifdef CONFIG_SCHED_INFO if (likely(sched_info_on())) memset(&p->sched_info, 0, sizeof(p->sched_info)); #endif diff --git a/kernel/sched/stats.h b/kernel/sched/stats.h index 077ebbd..b0fbc76 100644 --- a/kernel/sched/stats.h +++ b/kernel/sched/stats.h @@ -47,7 +47,7 @@ rq_sched_info_depart(struct rq *rq, unsigned long long delta) # define schedstat_set(var, val) do { } while (0) #endif -#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) +#ifdef CONFIG_SCHED_INFO static inline void sched_info_reset_dequeued(struct task_struct *t) { t->sched_info.last_queued = 0; @@ -156,7 +156,7 @@ sched_info_switch(struct rq *rq, #define sched_info_depart(rq, t) do { } while (0) #define sched_info_arrive(rq, next) do { } while (0) #define sched_info_switch(rq, t, next) do { } while (0) -#endif /* CONFIG_SCHEDSTATS || CONFIG_TASK_DELAY_ACCT */ +#endif /* CONFIG_SCHED_INFO */ /* * The following are functions that support scheduler-internal time accounting. diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index b908048..e2894b2 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -841,9 +841,14 @@ config SCHED_DEBUG that can help debug the scheduler. The runtime overhead of this option is minimal. +config SCHED_INFO + bool + default n + config SCHEDSTATS bool "Collect scheduler statistics" depends on DEBUG_KERNEL && PROC_FS + select SCHED_INFO help If you say Y here, additional code will be inserted into the scheduler and related routines to collect statistics about ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 2/2] schedstat: Expose /proc/pid/schedstat if CONFIG_SCHED_INFO is set 2015-06-25 18:23 [PATCH v2 0/2] Clean up schedstat and task delay acct config options Naveen N. Rao 2015-06-25 18:23 ` [PATCH v2 1/2] schedstat: Simplify sched_info accounting dependency Naveen N. Rao @ 2015-06-25 18:23 ` Naveen N. Rao 2015-06-30 5:55 ` Srikar Dronamraju 1 sibling, 1 reply; 14+ messages in thread From: Naveen N. Rao @ 2015-06-25 18:23 UTC (permalink / raw) To: bsingharora, mingo; +Cc: linux-kernel, srikar, ricklind, a.p.zijlstra In the unlikely scenario that the kernel is booted with nodelayacct, we dump all zeroes so as to make it clear that scheduler statistics are not available. Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- fs/proc/base.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/fs/proc/base.c b/fs/proc/base.c index 286a422..a299131 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -304,14 +304,17 @@ static int proc_pid_stack(struct seq_file *m, struct pid_namespace *ns, } #endif -#ifdef CONFIG_SCHEDSTATS +#ifdef CONFIG_SCHED_INFO /* * Provides /proc/PID/schedstat */ static int proc_pid_schedstat(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task) { - seq_printf(m, "%llu %llu %lu\n", + if (unlikely(!sched_info_on())) + seq_printf(m, "0 0 0\n"); + else + seq_printf(m, "%llu %lld %ld\n", (unsigned long long)task->se.sum_exec_runtime, (unsigned long long)task->sched_info.run_delay, task->sched_info.pcount); @@ -2600,7 +2603,7 @@ static const struct pid_entry tgid_base_stuff[] = { #ifdef CONFIG_STACKTRACE ONE("stack", S_IRUSR, proc_pid_stack), #endif -#ifdef CONFIG_SCHEDSTATS +#ifdef CONFIG_SCHED_INFO ONE("schedstat", S_IRUGO, proc_pid_schedstat), #endif #ifdef CONFIG_LATENCYTOP @@ -2948,7 +2951,7 @@ static const struct pid_entry tid_base_stuff[] = { #ifdef CONFIG_STACKTRACE ONE("stack", S_IRUSR, proc_pid_stack), #endif -#ifdef CONFIG_SCHEDSTATS +#ifdef CONFIG_SCHED_INFO ONE("schedstat", S_IRUGO, proc_pid_schedstat), #endif #ifdef CONFIG_LATENCYTOP -- 2.4.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v2 2/2] schedstat: Expose /proc/pid/schedstat if CONFIG_SCHED_INFO is set 2015-06-25 18:23 ` [PATCH v2 2/2] schedstat: Expose /proc/pid/schedstat if CONFIG_SCHED_INFO is set Naveen N. Rao @ 2015-06-30 5:55 ` Srikar Dronamraju 2015-06-30 6:16 ` Naveen N. Rao 2015-06-30 9:06 ` [PATCH v3 " Naveen N. Rao 0 siblings, 2 replies; 14+ messages in thread From: Srikar Dronamraju @ 2015-06-30 5:55 UTC (permalink / raw) To: Naveen N. Rao; +Cc: bsingharora, mingo, linux-kernel, ricklind, a.p.zijlstra * Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> [2015-06-25 23:53:38]: > /* > * Provides /proc/PID/schedstat > */ > static int proc_pid_schedstat(struct seq_file *m, struct pid_namespace *ns, > struct pid *pid, struct task_struct *task) > { > - seq_printf(m, "%llu %llu %lu\n", > + if (unlikely(!sched_info_on())) > + seq_printf(m, "0 0 0\n"); > + else > + seq_printf(m, "%llu %lld %ld\n", Should the above be seq_printf(m, "%llu %llu %lu\n", ? > (unsigned long long)task->se.sum_exec_runtime, > (unsigned long long)task->sched_info.run_delay, > task->sched_info.pcount); > -- > 2.4.0 > -- Thanks and Regards Srikar Dronamraju ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 2/2] schedstat: Expose /proc/pid/schedstat if CONFIG_SCHED_INFO is set 2015-06-30 5:55 ` Srikar Dronamraju @ 2015-06-30 6:16 ` Naveen N. Rao 2015-06-30 9:06 ` [PATCH v3 " Naveen N. Rao 1 sibling, 0 replies; 14+ messages in thread From: Naveen N. Rao @ 2015-06-30 6:16 UTC (permalink / raw) To: Srikar Dronamraju Cc: bsingharora, mingo, linux-kernel, ricklind, a.p.zijlstra On 2015/06/30 11:25AM, Srikar Dronamraju wrote: > * Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> [2015-06-25 23:53:38]: > > > /* > > * Provides /proc/PID/schedstat > > */ > > static int proc_pid_schedstat(struct seq_file *m, struct pid_namespace *ns, > > struct pid *pid, struct task_struct *task) > > { > > - seq_printf(m, "%llu %llu %lu\n", > > + if (unlikely(!sched_info_on())) > > + seq_printf(m, "0 0 0\n"); > > + else > > + seq_printf(m, "%llu %lld %ld\n", > > Should the above be seq_printf(m, "%llu %llu %lu\n", ? Yikes! Nice catch, thanks! This looks to be left over from my tests with returning -1. Fixed patch on the way... Regards, Naveen ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v3 2/2] schedstat: Expose /proc/pid/schedstat if CONFIG_SCHED_INFO is set 2015-06-30 5:55 ` Srikar Dronamraju 2015-06-30 6:16 ` Naveen N. Rao @ 2015-06-30 9:06 ` Naveen N. Rao 2015-06-30 13:29 ` Srikar Dronamraju ` (2 more replies) 1 sibling, 3 replies; 14+ messages in thread From: Naveen N. Rao @ 2015-06-30 9:06 UTC (permalink / raw) To: bsingharora, mingo; +Cc: linux-kernel, srikar, ricklind, a.p.zijlstra In the unlikely scenario that the kernel is booted with nodelayacct, we dump all zeroes so as to make it clear that scheduler statistics are not available. Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- Changes since v2: Revert to unsigned long in printf fs/proc/base.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/fs/proc/base.c b/fs/proc/base.c index 286a422..ad63fa3 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -304,14 +304,17 @@ static int proc_pid_stack(struct seq_file *m, struct pid_namespace *ns, } #endif -#ifdef CONFIG_SCHEDSTATS +#ifdef CONFIG_SCHED_INFO /* * Provides /proc/PID/schedstat */ static int proc_pid_schedstat(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task) { - seq_printf(m, "%llu %llu %lu\n", + if (unlikely(!sched_info_on())) + seq_printf(m, "0 0 0\n"); + else + seq_printf(m, "%llu %llu %lu\n", (unsigned long long)task->se.sum_exec_runtime, (unsigned long long)task->sched_info.run_delay, task->sched_info.pcount); @@ -2600,7 +2603,7 @@ static const struct pid_entry tgid_base_stuff[] = { #ifdef CONFIG_STACKTRACE ONE("stack", S_IRUSR, proc_pid_stack), #endif -#ifdef CONFIG_SCHEDSTATS +#ifdef CONFIG_SCHED_INFO ONE("schedstat", S_IRUGO, proc_pid_schedstat), #endif #ifdef CONFIG_LATENCYTOP @@ -2948,7 +2951,7 @@ static const struct pid_entry tid_base_stuff[] = { #ifdef CONFIG_STACKTRACE ONE("stack", S_IRUSR, proc_pid_stack), #endif -#ifdef CONFIG_SCHEDSTATS +#ifdef CONFIG_SCHED_INFO ONE("schedstat", S_IRUGO, proc_pid_schedstat), #endif #ifdef CONFIG_LATENCYTOP -- 2.4.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v3 2/2] schedstat: Expose /proc/pid/schedstat if CONFIG_SCHED_INFO is set 2015-06-30 9:06 ` [PATCH v3 " Naveen N. Rao @ 2015-06-30 13:29 ` Srikar Dronamraju 2015-06-30 13:32 ` Balbir Singh 2015-07-03 7:46 ` [tip:sched/urgent] sched/stat: Expose /proc/pid/ schedstat if CONFIG_SCHED_INFO=y tip-bot for Naveen N. Rao 2015-07-04 8:07 ` tip-bot for Naveen N. Rao 2 siblings, 1 reply; 14+ messages in thread From: Srikar Dronamraju @ 2015-06-30 13:29 UTC (permalink / raw) To: Naveen N. Rao; +Cc: bsingharora, mingo, linux-kernel, ricklind, a.p.zijlstra * Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> [2015-06-30 14:36:03]: > In the unlikely scenario that the kernel is booted with nodelayacct, we > dump all zeroes so as to make it clear that scheduler statistics are not > available. > > Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> > --- > Changes since v2: Revert to unsigned long in printf > Looks good to me. Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> -- Thanks and Regards Srikar Dronamraju ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v3 2/2] schedstat: Expose /proc/pid/schedstat if CONFIG_SCHED_INFO is set 2015-06-30 13:29 ` Srikar Dronamraju @ 2015-06-30 13:32 ` Balbir Singh 0 siblings, 0 replies; 14+ messages in thread From: Balbir Singh @ 2015-06-30 13:32 UTC (permalink / raw) To: Srikar Dronamraju Cc: Naveen N. Rao, mingo, linux-kernel@vger.kernel.org, ricklind, Peter Zijlstra On Tue, Jun 30, 2015 at 6:59 PM, Srikar Dronamraju <srikar@linux.vnet.ibm.com> wrote: > * Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> [2015-06-30 14:36:03]: > >> In the unlikely scenario that the kernel is booted with nodelayacct, we >> dump all zeroes so as to make it clear that scheduler statistics are not >> available. >> >> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> >> --- >> Changes since v2: Revert to unsigned long in printf >> > > Looks good to me. > > Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Acked-by: Balbir Singh <bsingharora@gmail.com> ^ permalink raw reply [flat|nested] 14+ messages in thread
* [tip:sched/urgent] sched/stat: Expose /proc/pid/ schedstat if CONFIG_SCHED_INFO=y 2015-06-30 9:06 ` [PATCH v3 " Naveen N. Rao 2015-06-30 13:29 ` Srikar Dronamraju @ 2015-07-03 7:46 ` tip-bot for Naveen N. Rao 2015-07-04 8:07 ` tip-bot for Naveen N. Rao 2 siblings, 0 replies; 14+ messages in thread From: tip-bot for Naveen N. Rao @ 2015-07-03 7:46 UTC (permalink / raw) To: linux-tip-commits Cc: mingo, torvalds, hpa, bsingharora, naveen.n.rao, tglx, peterz, srikar, linux-kernel Commit-ID: 74ed568374f0e74d80a63ab5496bf32db641ec60 Gitweb: http://git.kernel.org/tip/74ed568374f0e74d80a63ab5496bf32db641ec60 Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> AuthorDate: Tue, 30 Jun 2015 14:36:03 +0530 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Wed, 1 Jul 2015 10:02:58 +0200 sched/stat: Expose /proc/pid/schedstat if CONFIG_SCHED_INFO=y Expand /proc/pid/schedstat output: - enable it on CONFIG_TASK_DELAY_ACCT=y && !CONFIG_SCHEDSTATS kernels. - dump all zeroes on kernels that are booted with the 'nodelayacct' option, which boot option disables delay accounting on CONFIG_TASK_DELAY_ACCT=y kernels. Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Cc: Balbir Singh <bsingharora@gmail.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: a.p.zijlstra@chello.nl Cc: ricklind@us.ibm.com Link: http://lkml.kernel.org/r/5ccbef17d4bc841084ea6e6421d4e4a23b7b806f.1435654789.git.naveen.n.rao@linux.vnet.ibm.com Signed-off-by: Ingo Molnar <mingo@kernel.org> --- fs/proc/base.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/fs/proc/base.c b/fs/proc/base.c index 286a422..ad63fa3 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -304,14 +304,17 @@ static int proc_pid_stack(struct seq_file *m, struct pid_namespace *ns, } #endif -#ifdef CONFIG_SCHEDSTATS +#ifdef CONFIG_SCHED_INFO /* * Provides /proc/PID/schedstat */ static int proc_pid_schedstat(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task) { - seq_printf(m, "%llu %llu %lu\n", + if (unlikely(!sched_info_on())) + seq_printf(m, "0 0 0\n"); + else + seq_printf(m, "%llu %llu %lu\n", (unsigned long long)task->se.sum_exec_runtime, (unsigned long long)task->sched_info.run_delay, task->sched_info.pcount); @@ -2600,7 +2603,7 @@ static const struct pid_entry tgid_base_stuff[] = { #ifdef CONFIG_STACKTRACE ONE("stack", S_IRUSR, proc_pid_stack), #endif -#ifdef CONFIG_SCHEDSTATS +#ifdef CONFIG_SCHED_INFO ONE("schedstat", S_IRUGO, proc_pid_schedstat), #endif #ifdef CONFIG_LATENCYTOP @@ -2948,7 +2951,7 @@ static const struct pid_entry tid_base_stuff[] = { #ifdef CONFIG_STACKTRACE ONE("stack", S_IRUSR, proc_pid_stack), #endif -#ifdef CONFIG_SCHEDSTATS +#ifdef CONFIG_SCHED_INFO ONE("schedstat", S_IRUGO, proc_pid_schedstat), #endif #ifdef CONFIG_LATENCYTOP ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [tip:sched/urgent] sched/stat: Expose /proc/pid/ schedstat if CONFIG_SCHED_INFO=y 2015-06-30 9:06 ` [PATCH v3 " Naveen N. Rao 2015-06-30 13:29 ` Srikar Dronamraju 2015-07-03 7:46 ` [tip:sched/urgent] sched/stat: Expose /proc/pid/ schedstat if CONFIG_SCHED_INFO=y tip-bot for Naveen N. Rao @ 2015-07-04 8:07 ` tip-bot for Naveen N. Rao 2 siblings, 0 replies; 14+ messages in thread From: tip-bot for Naveen N. Rao @ 2015-07-04 8:07 UTC (permalink / raw) To: linux-tip-commits Cc: peterz, torvalds, mingo, linux-kernel, srikar, bsingharora, hpa, naveen.n.rao, tglx Commit-ID: 5968cecedd7a09f23e9fcb5f9fb4e893712f35ba Gitweb: http://git.kernel.org/tip/5968cecedd7a09f23e9fcb5f9fb4e893712f35ba Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> AuthorDate: Tue, 30 Jun 2015 14:36:03 +0530 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Sat, 4 Jul 2015 10:04:31 +0200 sched/stat: Expose /proc/pid/schedstat if CONFIG_SCHED_INFO=y Expand /proc/pid/schedstat output: - enable it on CONFIG_TASK_DELAY_ACCT=y && !CONFIG_SCHEDSTATS kernels. - dump all zeroes on kernels that are booted with the 'nodelayacct' option, which boot option disables delay accounting on CONFIG_TASK_DELAY_ACCT=y kernels. Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Cc: Balbir Singh <bsingharora@gmail.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: a.p.zijlstra@chello.nl Cc: ricklind@us.ibm.com Link: http://lkml.kernel.org/r/5ccbef17d4bc841084ea6e6421d4e4a23b7b806f.1435654789.git.naveen.n.rao@linux.vnet.ibm.com Signed-off-by: Ingo Molnar <mingo@kernel.org> --- fs/proc/base.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/fs/proc/base.c b/fs/proc/base.c index 286a422..ad63fa3 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -304,14 +304,17 @@ static int proc_pid_stack(struct seq_file *m, struct pid_namespace *ns, } #endif -#ifdef CONFIG_SCHEDSTATS +#ifdef CONFIG_SCHED_INFO /* * Provides /proc/PID/schedstat */ static int proc_pid_schedstat(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task) { - seq_printf(m, "%llu %llu %lu\n", + if (unlikely(!sched_info_on())) + seq_printf(m, "0 0 0\n"); + else + seq_printf(m, "%llu %llu %lu\n", (unsigned long long)task->se.sum_exec_runtime, (unsigned long long)task->sched_info.run_delay, task->sched_info.pcount); @@ -2600,7 +2603,7 @@ static const struct pid_entry tgid_base_stuff[] = { #ifdef CONFIG_STACKTRACE ONE("stack", S_IRUSR, proc_pid_stack), #endif -#ifdef CONFIG_SCHEDSTATS +#ifdef CONFIG_SCHED_INFO ONE("schedstat", S_IRUGO, proc_pid_schedstat), #endif #ifdef CONFIG_LATENCYTOP @@ -2948,7 +2951,7 @@ static const struct pid_entry tid_base_stuff[] = { #ifdef CONFIG_STACKTRACE ONE("stack", S_IRUSR, proc_pid_stack), #endif -#ifdef CONFIG_SCHEDSTATS +#ifdef CONFIG_SCHED_INFO ONE("schedstat", S_IRUGO, proc_pid_schedstat), #endif #ifdef CONFIG_LATENCYTOP ^ permalink raw reply related [flat|nested] 14+ messages in thread
end of thread, other threads:[~2015-07-05 8:36 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-06-25 18:23 [PATCH v2 0/2] Clean up schedstat and task delay acct config options Naveen N. Rao 2015-06-25 18:23 ` [PATCH v2 1/2] schedstat: Simplify sched_info accounting dependency Naveen N. Rao 2015-06-30 13:30 ` Srikar Dronamraju 2015-06-30 13:33 ` Balbir Singh 2015-07-03 7:45 ` [tip:sched/urgent] sched/stat: Simplify the " tip-bot for Naveen N. Rao 2015-07-04 8:07 ` tip-bot for Naveen N. Rao 2015-06-25 18:23 ` [PATCH v2 2/2] schedstat: Expose /proc/pid/schedstat if CONFIG_SCHED_INFO is set Naveen N. Rao 2015-06-30 5:55 ` Srikar Dronamraju 2015-06-30 6:16 ` Naveen N. Rao 2015-06-30 9:06 ` [PATCH v3 " Naveen N. Rao 2015-06-30 13:29 ` Srikar Dronamraju 2015-06-30 13:32 ` Balbir Singh 2015-07-03 7:46 ` [tip:sched/urgent] sched/stat: Expose /proc/pid/ schedstat if CONFIG_SCHED_INFO=y tip-bot for Naveen N. Rao 2015-07-04 8:07 ` tip-bot for Naveen N. Rao
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.