* [RFC PATCH 1/2] sched/update_avg: avoid negative time
@ 2014-01-21 5:33 Alex Shi
2014-01-21 5:33 ` [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost Alex Shi
` (2 more replies)
0 siblings, 3 replies; 16+ messages in thread
From: Alex Shi @ 2014-01-21 5:33 UTC (permalink / raw)
To: mingo, peterz, morten.rasmussen, vincent.guittot, daniel.lezcano,
efault
Cc: wangyun, linux-kernel, Alex Shi
rq->avg_idle try to reflect the average idle time between the cpu idle
and first wakeup. But in the function, it maybe get a negative value
if old avg_idle is too small. Then this negative value will be double
counted in next time calculation. Guess that is not the original purpose,
so recalibrate it to zero.
Signed-off-by: Alex Shi <alex.shi@linaro.org>
---
kernel/sched/core.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 30eb011..af9121c6 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -1358,6 +1358,9 @@ static void update_avg(u64 *avg, u64 sample)
{
s64 diff = sample - *avg;
*avg += diff >> 3;
+
+ if (*avg < 0)
+ *avg = 0;
}
#endif
--
1.8.1.2
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost 2014-01-21 5:33 [RFC PATCH 1/2] sched/update_avg: avoid negative time Alex Shi @ 2014-01-21 5:33 ` Alex Shi 2014-01-21 7:43 ` Jason Low 2014-01-21 5:59 ` [RFC PATCH 1/2] sched/update_avg: avoid negative time Alex Shi 2014-01-21 6:49 ` Michael wang 2 siblings, 1 reply; 16+ messages in thread From: Alex Shi @ 2014-01-21 5:33 UTC (permalink / raw) To: mingo, peterz, morten.rasmussen, vincent.guittot, daniel.lezcano, efault Cc: wangyun, linux-kernel, Alex Shi It's useful to track this value in debug mode. Signed-off-by: Alex Shi <alex.shi@linaro.org> --- kernel/sched/debug.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 1e43e70..f5c529a 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -315,6 +315,7 @@ do { \ P(sched_goidle); #ifdef CONFIG_SMP P64(avg_idle); + p64(max_idle_balance_cost); #endif P(ttwu_count); -- 1.8.1.2 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost 2014-01-21 5:33 ` [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost Alex Shi @ 2014-01-21 7:43 ` Jason Low 2014-01-21 8:44 ` Alex Shi 2014-01-22 8:24 ` Alex Shi 0 siblings, 2 replies; 16+ messages in thread From: Jason Low @ 2014-01-21 7:43 UTC (permalink / raw) To: Alex Shi Cc: Ingo Molnar, Peter Zijlstra, morten.rasmussen, vincent.guittot, daniel.lezcano, Mike Galbraith, wangyun, Linux Kernel Mailing List On Mon, Jan 20, 2014 at 9:33 PM, Alex Shi <alex.shi@linaro.org> wrote: > It's useful to track this value in debug mode. > > Signed-off-by: Alex Shi <alex.shi@linaro.org> > --- > kernel/sched/debug.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c > index 1e43e70..f5c529a 100644 > --- a/kernel/sched/debug.c > +++ b/kernel/sched/debug.c > @@ -315,6 +315,7 @@ do { \ > P(sched_goidle); > #ifdef CONFIG_SMP > P64(avg_idle); > + p64(max_idle_balance_cost); Hi Alex, Does this need to be P64(max_idle_balance_cost)? ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost 2014-01-21 7:43 ` Jason Low @ 2014-01-21 8:44 ` Alex Shi 2014-01-22 8:24 ` Alex Shi 1 sibling, 0 replies; 16+ messages in thread From: Alex Shi @ 2014-01-21 8:44 UTC (permalink / raw) To: Jason Low Cc: Ingo Molnar, Peter Zijlstra, morten.rasmussen, vincent.guittot, daniel.lezcano, Mike Galbraith, wangyun, Linux Kernel Mailing List On 01/21/2014 03:43 PM, Jason Low wrote: > On Mon, Jan 20, 2014 at 9:33 PM, Alex Shi <alex.shi@linaro.org> wrote: >> It's useful to track this value in debug mode. >> >> Signed-off-by: Alex Shi <alex.shi@linaro.org> >> --- >> kernel/sched/debug.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c >> index 1e43e70..f5c529a 100644 >> --- a/kernel/sched/debug.c >> +++ b/kernel/sched/debug.c >> @@ -315,6 +315,7 @@ do { \ >> P(sched_goidle); >> #ifdef CONFIG_SMP >> P64(avg_idle); >> + p64(max_idle_balance_cost); > > Hi Alex, > > Does this need to be P64(max_idle_balance_cost)? > Yes, thanks for fix! === >From 173417f3646ac1c6ac83809b51d0471591cbc8f0 Mon Sep 17 00:00:00 2001 From: Alex Shi <alex.shi@linaro.org> Date: Tue, 21 Jan 2014 13:28:55 +0800 Subject: [RFC PATCH] sched: add statistic for rq->max_idle_balance_cost It's useful to track this value in debug mode. Signed-off-by: Alex Shi <alex.shi@linaro.org> --- kernel/sched/debug.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 1e43e70..f5c529a 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -315,6 +315,7 @@ do { \ P(sched_goidle); #ifdef CONFIG_SMP P64(avg_idle); + P64(max_idle_balance_cost); #endif P(ttwu_count); -- 1.8.1.2 -- Thanks Alex ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost 2014-01-21 7:43 ` Jason Low 2014-01-21 8:44 ` Alex Shi @ 2014-01-22 8:24 ` Alex Shi 2014-01-22 16:09 ` Peter Zijlstra 1 sibling, 1 reply; 16+ messages in thread From: Alex Shi @ 2014-01-22 8:24 UTC (permalink / raw) To: Jason Low Cc: Ingo Molnar, Peter Zijlstra, morten.rasmussen, vincent.guittot, daniel.lezcano, Mike Galbraith, wangyun, Linux Kernel Mailing List On 01/21/2014 03:43 PM, Jason Low wrote: > On Mon, Jan 20, 2014 at 9:33 PM, Alex Shi <alex.shi@linaro.org> wrote: >> It's useful to track this value in debug mode. >> >> Signed-off-by: Alex Shi <alex.shi@linaro.org> >> --- >> kernel/sched/debug.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c >> index 1e43e70..f5c529a 100644 >> --- a/kernel/sched/debug.c >> +++ b/kernel/sched/debug.c >> @@ -315,6 +315,7 @@ do { \ >> P(sched_goidle); >> #ifdef CONFIG_SMP >> P64(avg_idle); >> + p64(max_idle_balance_cost); > > Hi Alex, > > Does this need to be P64(max_idle_balance_cost)? > Ops, this letter lay in my Drafts box. Yes, thanks for fix! === >From 173417f3646ac1c6ac83809b51d0471591cbc8f0 Mon Sep 17 00:00:00 2001 From: Alex Shi <alex.shi@linaro.org> Date: Tue, 21 Jan 2014 13:28:55 +0800 Subject: [RFC PATCH] sched: add statistic for rq->max_idle_balance_cost It's useful to track this value in debug mode. Signed-off-by: Alex Shi <alex.shi@linaro.org> --- kernel/sched/debug.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 1e43e70..f5c529a 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -315,6 +315,7 @@ do { \ P(sched_goidle); #ifdef CONFIG_SMP P64(avg_idle); + P64(max_idle_balance_cost); #endif P(ttwu_count); -- 1.8.1.2 -- Thanks Alex ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost 2014-01-22 8:24 ` Alex Shi @ 2014-01-22 16:09 ` Peter Zijlstra 2014-01-22 18:10 ` Jason Low 0 siblings, 1 reply; 16+ messages in thread From: Peter Zijlstra @ 2014-01-22 16:09 UTC (permalink / raw) To: Alex Shi Cc: Jason Low, Ingo Molnar, morten.rasmussen, vincent.guittot, daniel.lezcano, Mike Galbraith, wangyun, Linux Kernel Mailing List On Wed, Jan 22, 2014 at 04:24:13PM +0800, Alex Shi wrote: > From: Alex Shi <alex.shi@linaro.org> > Date: Tue, 21 Jan 2014 13:28:55 +0800 > Subject: [RFC PATCH] sched: add statistic for rq->max_idle_balance_cost > > It's useful to track this value in debug mode. > > Signed-off-by: Alex Shi <alex.shi@linaro.org> > --- > kernel/sched/debug.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c > index 1e43e70..f5c529a 100644 > --- a/kernel/sched/debug.c > +++ b/kernel/sched/debug.c > @@ -315,6 +315,7 @@ do { \ > P(sched_goidle); > #ifdef CONFIG_SMP > P64(avg_idle); > + P64(max_idle_balance_cost); > #endif > P(ttwu_count); Not also the per-sd value in sd_alloc_ctl_domain_table() ? ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost 2014-01-22 16:09 ` Peter Zijlstra @ 2014-01-22 18:10 ` Jason Low 2014-01-23 6:49 ` Alex Shi 0 siblings, 1 reply; 16+ messages in thread From: Jason Low @ 2014-01-22 18:10 UTC (permalink / raw) To: Peter Zijlstra Cc: Alex Shi, Ingo Molnar, morten.rasmussen, vincent.guittot, daniel.lezcano, Mike Galbraith, wangyun, Linux Kernel Mailing List On Wed, 2014-01-22 at 17:09 +0100, Peter Zijlstra wrote: > On Wed, Jan 22, 2014 at 04:24:13PM +0800, Alex Shi wrote: > > From: Alex Shi <alex.shi@linaro.org> > > Date: Tue, 21 Jan 2014 13:28:55 +0800 > > Subject: [RFC PATCH] sched: add statistic for rq->max_idle_balance_cost > > > > It's useful to track this value in debug mode. > > > > Signed-off-by: Alex Shi <alex.shi@linaro.org> > > --- > > kernel/sched/debug.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c > > index 1e43e70..f5c529a 100644 > > --- a/kernel/sched/debug.c > > +++ b/kernel/sched/debug.c > > @@ -315,6 +315,7 @@ do { \ > > P(sched_goidle); > > #ifdef CONFIG_SMP > > P64(avg_idle); > > + P64(max_idle_balance_cost); > > #endif > > P(ttwu_count); > > Not also the per-sd value in sd_alloc_ctl_domain_table() ? Yeah, tracking the sd->max_newidle_lb_cost can also be useful. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost 2014-01-22 18:10 ` Jason Low @ 2014-01-23 6:49 ` Alex Shi 2014-01-23 9:54 ` Peter Zijlstra 0 siblings, 1 reply; 16+ messages in thread From: Alex Shi @ 2014-01-23 6:49 UTC (permalink / raw) To: Jason Low, Peter Zijlstra Cc: Ingo Molnar, morten.rasmussen, vincent.guittot, daniel.lezcano, Mike Galbraith, wangyun, Linux Kernel Mailing List On 01/23/2014 02:10 AM, Jason Low wrote: >>> > > P64(avg_idle); >>> > > + P64(max_idle_balance_cost); >>> > > #endif >>> > > P(ttwu_count); >> > >> > Not also the per-sd value in sd_alloc_ctl_domain_table() ? > Yeah, tracking the sd->max_newidle_lb_cost can also be useful. > > Thanks for suggestion! I thought the sd->max_newidle_lb_cost keep changing. But yes, it's still meaningful. BTW, in the pandaboard ES, sd balance cost is about 1~2ms. --- >From d37e712b623fb6776d0caba8e4bd06460e26b84e Mon Sep 17 00:00:00 2001 From: Alex Shi <alex.shi@linaro.org> Date: Tue, 21 Jan 2014 13:28:55 +0800 Subject: [PATCH] sched: add statistic for newidle load balance cost Tracking rq->max_idle_balance_cost and sd->max_newidle_lb_cost It's useful to track these values in debug mode. Signed-off-by: Alex Shi <alex.shi@linaro.org> --- kernel/sched/core.c | 7 +++++-- kernel/sched/debug.c | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index c3f3824..a046bc3 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4293,7 +4293,7 @@ set_table_entry(struct ctl_table *entry, static struct ctl_table * sd_alloc_ctl_domain_table(struct sched_domain *sd) { - struct ctl_table *table = sd_alloc_ctl_entry(8); + struct ctl_table *table = sd_alloc_ctl_entry(9); if (table == NULL) return NULL; @@ -4313,7 +4313,10 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd) sizeof(int), 0644, proc_dointvec_minmax); set_table_entry(&table[6], "name", sd->name, CORENAME_MAX_SIZE, 0444, proc_dostring); - /* &table[7] is terminator */ + set_table_entry(&table[7], "max_newidle_lb_cost", + &sd->max_newidle_lb_cost, + sizeof(long), 0644, proc_doulongvec_minmax); + /* &table[8] is terminator */ return table; } diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 1e43e70..9ecd861 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -315,6 +315,7 @@ do { \ P(sched_goidle); #ifdef CONFIG_SMP P64(avg_idle); + P64(max_idle_balance_cost); #endif P(ttwu_count); -- 1.8.1.2 -- Thanks Alex ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost 2014-01-23 6:49 ` Alex Shi @ 2014-01-23 9:54 ` Peter Zijlstra 2014-01-23 10:49 ` Alex Shi 0 siblings, 1 reply; 16+ messages in thread From: Peter Zijlstra @ 2014-01-23 9:54 UTC (permalink / raw) To: Alex Shi Cc: Jason Low, Ingo Molnar, morten.rasmussen, vincent.guittot, daniel.lezcano, Mike Galbraith, wangyun, Linux Kernel Mailing List On Thu, Jan 23, 2014 at 02:49:25PM +0800, Alex Shi wrote: > On 01/23/2014 02:10 AM, Jason Low wrote: > >>> > > P64(avg_idle); > >>> > > + P64(max_idle_balance_cost); > >>> > > #endif > >>> > > P(ttwu_count); > >> > > >> > Not also the per-sd value in sd_alloc_ctl_domain_table() ? > > Yeah, tracking the sd->max_newidle_lb_cost can also be useful. > > > > > > Thanks for suggestion! > > I thought the sd->max_newidle_lb_cost keep changing. But yes, it's > still meaningful. > BTW, in the pandaboard ES, sd balance cost is about 1~2ms. That's an insane amount of time for only 2 cpus. > --- > > From d37e712b623fb6776d0caba8e4bd06460e26b84e Mon Sep 17 00:00:00 2001 > From: Alex Shi <alex.shi@linaro.org> > Date: Tue, 21 Jan 2014 13:28:55 +0800 > Subject: [PATCH] sched: add statistic for newidle load balance cost > > Tracking rq->max_idle_balance_cost and sd->max_newidle_lb_cost > It's useful to track these values in debug mode. > > Signed-off-by: Alex Shi <alex.shi@linaro.org> > --- > kernel/sched/core.c | 7 +++++-- > kernel/sched/debug.c | 1 + > 2 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index c3f3824..a046bc3 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -4293,7 +4293,7 @@ set_table_entry(struct ctl_table *entry, > static struct ctl_table * > sd_alloc_ctl_domain_table(struct sched_domain *sd) > { > - struct ctl_table *table = sd_alloc_ctl_entry(8); > + struct ctl_table *table = sd_alloc_ctl_entry(9); tip/master has 13 there, not 8. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost 2014-01-23 9:54 ` Peter Zijlstra @ 2014-01-23 10:49 ` Alex Shi 2014-01-23 12:32 ` Morten Rasmussen 2014-02-11 12:17 ` [tip:sched/core] sched: Add statistic for newidle load balance cost tip-bot for Alex Shi 0 siblings, 2 replies; 16+ messages in thread From: Alex Shi @ 2014-01-23 10:49 UTC (permalink / raw) To: Peter Zijlstra Cc: Jason Low, Ingo Molnar, morten.rasmussen, vincent.guittot, daniel.lezcano, Mike Galbraith, wangyun, Linux Kernel Mailing List On 01/23/2014 05:54 PM, Peter Zijlstra wrote: > On Thu, Jan 23, 2014 at 02:49:25PM +0800, Alex Shi wrote: >> On 01/23/2014 02:10 AM, Jason Low wrote: >>>>>>> P64(avg_idle); >>>>>>> + P64(max_idle_balance_cost); >>>>>>> #endif >>>>>>> P(ttwu_count); >>>>> >>>>> Not also the per-sd value in sd_alloc_ctl_domain_table() ? >>> Yeah, tracking the sd->max_newidle_lb_cost can also be useful. >>> >>> >> >> Thanks for suggestion! >> >> I thought the sd->max_newidle_lb_cost keep changing. But yes, it's >> still meaningful. >> BTW, in the pandaboard ES, sd balance cost is about 1~2ms. > > That's an insane amount of time for only 2 cpus. maybe, :( but it is the data. $ cat /proc/sys/kernel/sched_domain/cpu0/domain0/max_newidle_lb_cost 1873393 > >> --- >> [...] >> sd_alloc_ctl_domain_table(struct sched_domain *sd) >> { >> - struct ctl_table *table = sd_alloc_ctl_entry(8); >> + struct ctl_table *table = sd_alloc_ctl_entry(9); > > tip/master has 13 there, not 8. > Sorry about this. updated on tip/master. ----- >From c49ae4749ffa2d1f95bd0d8b3c8e6fbce8864f04 Mon Sep 17 00:00:00 2001 From: Alex Shi <alex.shi@linaro.org> Date: Thu, 23 Jan 2014 18:39:54 +0800 Subject: [PATCH] sched: add statistic for newidle load balance cost Tracking rq->max_idle_balance_cost and sd->max_newidle_lb_cost. It's useful to know these values in debug mode. Signed-off-by: Alex Shi <alex.shi@linaro.org> --- kernel/sched/core.c | 9 ++++++--- kernel/sched/debug.c | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 36c951b..4740456 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4815,7 +4815,7 @@ set_table_entry(struct ctl_table *entry, static struct ctl_table * sd_alloc_ctl_domain_table(struct sched_domain *sd) { - struct ctl_table *table = sd_alloc_ctl_entry(13); + struct ctl_table *table = sd_alloc_ctl_entry(14); if (table == NULL) return NULL; @@ -4843,9 +4843,12 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd) sizeof(int), 0644, proc_dointvec_minmax, false); set_table_entry(&table[10], "flags", &sd->flags, sizeof(int), 0644, proc_dointvec_minmax, false); - set_table_entry(&table[11], "name", sd->name, + set_table_entry(&table[11], "max_newidle_lb_cost", + &sd->max_newidle_lb_cost, + sizeof(long), 0644, proc_doulongvec_minmax, false); + set_table_entry(&table[12], "name", sd->name, CORENAME_MAX_SIZE, 0444, proc_dostring, false); - /* &table[12] is terminator */ + /* &table[13] is terminator */ return table; } diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index dd52e7f..7f17a38 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -321,6 +321,7 @@ do { \ P(sched_goidle); #ifdef CONFIG_SMP P64(avg_idle); + P64(max_idle_balance_cost); #endif P(ttwu_count); -- 1.8.1.2 -- Thanks Alex ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost 2014-01-23 10:49 ` Alex Shi @ 2014-01-23 12:32 ` Morten Rasmussen 2014-01-23 14:43 ` Alex Shi 2014-02-11 12:17 ` [tip:sched/core] sched: Add statistic for newidle load balance cost tip-bot for Alex Shi 1 sibling, 1 reply; 16+ messages in thread From: Morten Rasmussen @ 2014-01-23 12:32 UTC (permalink / raw) To: Alex Shi Cc: Peter Zijlstra, Jason Low, Ingo Molnar, vincent.guittot@linaro.org, daniel.lezcano@linaro.org, Mike Galbraith, wangyun@linux.vnet.ibm.com, Linux Kernel Mailing List On Thu, Jan 23, 2014 at 10:49:35AM +0000, Alex Shi wrote: > On 01/23/2014 05:54 PM, Peter Zijlstra wrote: > > On Thu, Jan 23, 2014 at 02:49:25PM +0800, Alex Shi wrote: > >> On 01/23/2014 02:10 AM, Jason Low wrote: > >>>>>>> P64(avg_idle); > >>>>>>> + P64(max_idle_balance_cost); > >>>>>>> #endif > >>>>>>> P(ttwu_count); > >>>>> > >>>>> Not also the per-sd value in sd_alloc_ctl_domain_table() ? > >>> Yeah, tracking the sd->max_newidle_lb_cost can also be useful. > >>> > >>> > >> > >> Thanks for suggestion! > >> > >> I thought the sd->max_newidle_lb_cost keep changing. But yes, it's > >> still meaningful. > >> BTW, in the pandaboard ES, sd balance cost is about 1~2ms. > > > > That's an insane amount of time for only 2 cpus. > > maybe, :( > > but it is the data. > $ cat /proc/sys/kernel/sched_domain/cpu0/domain0/max_newidle_lb_cost > 1873393 What sort of workload are you running? It seems rather extreme. I did a quick test on TC2 and got max_newidle_lb_cost in the range ~7000-80000 when having a constantly running task on each cpu for a few seconds. I also traced curr_cost just to get an idea of the cost of idle_balance. I get an average cost across all five cpus of around 7000. Morten ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost 2014-01-23 12:32 ` Morten Rasmussen @ 2014-01-23 14:43 ` Alex Shi 0 siblings, 0 replies; 16+ messages in thread From: Alex Shi @ 2014-01-23 14:43 UTC (permalink / raw) To: Morten Rasmussen Cc: Peter Zijlstra, Jason Low, Ingo Molnar, vincent.guittot@linaro.org, daniel.lezcano@linaro.org, Mike Galbraith, wangyun@linux.vnet.ibm.com, Linux Kernel Mailing List On 01/23/2014 08:32 PM, Morten Rasmussen wrote: > On Thu, Jan 23, 2014 at 10:49:35AM +0000, Alex Shi wrote: >> On 01/23/2014 05:54 PM, Peter Zijlstra wrote: >>> On Thu, Jan 23, 2014 at 02:49:25PM +0800, Alex Shi wrote: >>>> On 01/23/2014 02:10 AM, Jason Low wrote: >>>>>>>>> P64(avg_idle); >>>>>>>>> + P64(max_idle_balance_cost); >>>>>>>>> #endif >>>>>>>>> P(ttwu_count); >>>>>>> >>>>>>> Not also the per-sd value in sd_alloc_ctl_domain_table() ? >>>>> Yeah, tracking the sd->max_newidle_lb_cost can also be useful. >>>>> >>>>> >>>> >>>> Thanks for suggestion! >>>> >>>> I thought the sd->max_newidle_lb_cost keep changing. But yes, it's >>>> still meaningful. >>>> BTW, in the pandaboard ES, sd balance cost is about 1~2ms. >>> >>> That's an insane amount of time for only 2 cpus. >> >> maybe, :( >> >> but it is the data. >> $ cat /proc/sys/kernel/sched_domain/cpu0/domain0/max_newidle_lb_cost >> 1873393 > > What sort of workload are you running? It seems rather extreme. > > I did a quick test on TC2 and got max_newidle_lb_cost in the range > ~7000-80000 when having a constantly running task on each cpu for a few > seconds. Thanks for trying. I am using the ubuntu server system on the panda ES. memory has more than half free. kernel is tip/master with some debug enabled, like debug_kernel, debug locks etc. Looks nothing abnormal. the vmstat data: alexs@alex-panda:~$ vmstat 1 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 0 628420 48776 245088 0 0 11 4 39 26 0 0 99 0 0 0 0 628396 48776 245088 0 0 0 0 79 44 0 0 100 0 1 0 0 628396 48776 245088 0 0 0 0 64 39 0 0 100 0 0 0 0 628420 48776 245112 0 0 0 0 47 27 0 1 99 0 0 0 0 628420 48776 245112 0 0 0 0 53 31 0 0 100 0 0 0 0 628420 48776 245112 0 0 0 0 47 30 0 0 100 0 0 0 0 628420 48776 245112 0 0 0 0 44 31 0 0 100 0 0 0 0 628420 48776 245112 0 0 0 0 58 39 0 0 100 0 0 0 0 628420 48776 245112 0 0 0 0 46 23 0 0 100 0 ===== @alex-panda:~$ cat /proc/sched_debug Sched Debug Version: v0.11, 3.13.0-02178-gaac64da-dirty #94 ktime : 14299180.219725 sched_clk : 14299181.549072 cpu_clk : 14299181.549072 jiffies : 1399918 sysctl_sched .sysctl_sched_latency : 12.000000 .sysctl_sched_min_granularity : 1.500000 .sysctl_sched_wakeup_granularity : 2.000000 .sysctl_sched_child_runs_first : 0 .sysctl_sched_features : 11899 .sysctl_sched_tunable_scaling : 1 (logaritmic) cpu#0 .nr_running : 0 .load : 0 .nr_switches : 287105 .nr_load_updates : 103294 .nr_uninterruptible : -10 .next_balance : 1.399919 .curr->pid : 0 .clock : 14299181.488037 .cpu_load[0] : 0 .cpu_load[1] : 0 .cpu_load[2] : 0 .cpu_load[3] : 0 .cpu_load[4] : 0 .yld_count : 2 .sched_count : 287650 .sched_goidle : 106271 .avg_idle : 7203403 .max_idle_balance_cost : 3704243 .ttwu_count : 183044 .ttwu_local : 161092 cfs_rq[0]: .exec_clock : 200707.458407 .MIN_vruntime : 0.000001 .min_vruntime : 668837.562013 .max_vruntime : 0.000001 .spread : 0.000000 .spread0 : 0.000000 .nr_spread_over : 63 .nr_running : 0 .load : 0 .runnable_load_avg : 0 .blocked_load_avg : 97 rt_rq[0]: .rt_nr_running : 0 .rt_throttled : 0 .rt_time : 0.000000 .rt_runtime : 950.000000 runnable tasks: task PID tree-key switches prio exec-runtime sum-exec sum-sleep ---------------------------------------------------------------------------------------------------------- ksoftirqd/0 3 668828.662844 12744 120 668828.662844 1148.742697 14295248.412972 kworker/0:0H 5 1780.632452 5 100 1780.632452 0.915527 2428.527832 rcu_bh 8 12.628673 2 120 12.628673 0.030517 0.030518 migration/0 9 0.000000 399 0 0.000000 187.866211 0.030517 kworker/u4:1 16 3362.363077 201 120 3362.363077 72.906491 7433.654788 kworker/0:1 52 668831.623049 7206 120 668831.623049 1035.125800 14296468.780426 writeback 275 238.256812 2 100 238.256812 0.061035 0.030518 bioset 277 244.287678 2 100 244.287678 0.061034 0.030518 kblockd 279 250.318545 2 100 250.318545 0.061036 0.030517 kswapd0 552 533.946299 3 120 533.946299 0.152588 103.240967 nfsiod 554 473.305109 2 100 473.305109 0.061036 0.030517 crypto 555 479.396659 2 100 479.396659 0.091553 0.030517 OMAP UART0 575 527.793717 2 100 527.793717 0.061035 0.061035 OMAP UART1 577 533.854750 2 100 533.854750 0.061036 0.030517 OMAP UART2 579 539.915782 2 100 539.915782 0.061035 0.030518 OMAP UART3 581 552.098882 2 100 552.098882 0.000000 0.061035 spi1 649 968.857220 3 120 968.857220 0.152588 0.152588 spi2 651 981.070836 2 120 981.070836 0.061034 0.030518 spi3 653 993.192900 2 120 993.192900 0.000000 0.061035 spi4 655 1005.375999 2 120 1005.375999 0.030517 0.030518 kpsmoused 694 1238.045075 2 100 1238.045075 0.061036 0.030517 irq/158-talert 706 0.000000 2 49 0.000000 0.366211 0.000000 deferwq 730 1384.852623 2 100 1384.852623 0.091553 0.030517 irq/39-TWL6030- 742 0.000000 2 49 0.000000 1.068115 0.000000 irq/151-twl6040 776 5.999997 2 49 5.999997 0.793457 0.000000 irq/89-48072000 779 0.000000 2 49 0.000000 0.061036 0.000000 irq/93-48060000 782 0.000000 2 49 0.000000 0.122070 0.000000 irq/94-48350000 788 0.000000 2 49 0.000000 0.122070 0.000000 kworker/0:1H 809 380628.904053 3018 100 380628.904053 505.493149 14107134.002707 upstart-udev-br 884 14849.067714 1123 120 14849.067714 498.809820 38619.323719 udevd 896 4948.481614 668 120 4948.481614 368.133548 5490.539550 udevd 1140 2599.121477 4 120 2599.121477 3.997803 0.000000 kworker/0:2 1615 3411.081929 3 120 3411.081929 0.640868 19.897461 dbus-daemon 1629 58044.480491 304 120 58044.480491 150.939951 3185970.214828 rsyslogd 1679 668566.974627 1084 120 668566.974627 11260.040283 14269129.852303 rs:main Q:Reg 1683 381884.264680 146 120 381884.264680 552.001943 14231655.883798 upstart-socket- 1743 14848.579433 221 120 14848.579433 52.886965 34331.695554 nmbd 1834 668796.790535 1455 120 668796.790535 2483.093268 14283383.087151 getty 1873 4977.536546 10 120 4977.536546 13.061522 0.000000 getty 1881 5006.922279 7 120 5006.922279 13.824462 2.929688 getty 1898 13273.101971 20 120 13273.101971 31.250000 12775.329589 irqbalance 1918 668722.339617 1641 120 668722.339617 5594.879138 14275445.953377 cron 1955 668328.823268 255 120 668328.823268 335.906977 14246798.889165 atd 1956 360099.936165 6 120 360099.936165 3.021240 10800118.621826 mysqld 2007 5674.303582 1 120 5674.303582 0.152588 0.000000 mysqld 2009 5675.561879 1 120 5675.561879 0.152587 0.000000 mysqld 2011 5675.053433 1 120 5675.053433 0.000000 0.000000 mysqld 2013 5674.775504 1 120 5674.775504 0.000000 0.000000 mysqld 2015 5675.008589 1 120 5675.008589 0.152588 0.000000 mysqld 2024 668831.696048 14074 120 668831.696048 12500.183090 14259236.908010 mysqld 2026 668796.698982 2846 120 668796.698982 1983.551015 14281165.191669 mysqld 2027 6691.770100 3 120 6691.770100 0.732421 1000.976563 mysqld 2052 6691.546710 1 120 6691.546710 0.793457 0.000000 libvirtd 1981 5444.877738 1 120 5444.877738 0.000000 0.000000 libvirtd 1983 5444.968627 1 120 5444.968627 0.152588 0.000000 libvirtd 1985 5445.243285 1 120 5445.243285 0.000000 0.000000 libvirtd 1991 5445.548948 1 120 5445.548948 0.000000 0.000000 postgres 2218 668834.796877 64567 120 668834.796877 70552.520660 14157241.424533 postgres 2220 668796.668465 8332 120 668796.668465 10573.760938 14259290.405313 apache2 2897 309936.461891 1 120 309936.461891 3.479004 0.000000 apache2 2900 309942.976298 1 120 309942.976298 3.570557 0.000000 apache2 2901 309944.990458 1 120 309944.990458 3.509521 0.000000 bash 3371 668837.562013 225 120 668837.562013 2406.188964 48741.851807 cpu#1 .nr_running : 1 .load : 1024 .nr_switches : 269118 .nr_load_updates : 130029 .nr_uninterruptible : 10 .next_balance : 1.399934 .curr->pid : 3416 .clock : 14299182.861328 .cpu_load[0] : 998 .cpu_load[1] : 499 .cpu_load[2] : 250 .cpu_load[3] : 131 .cpu_load[4] : 82 .yld_count : 2 .sched_count : 269213 .sched_goidle : 108355 .avg_idle : 5111702 .max_idle_balance_cost : 3708756 .ttwu_count : 141417 .ttwu_local : 130286 cfs_rq[1]: .exec_clock : 175200.378299 .MIN_vruntime : 0.000001 .min_vruntime : 376330.465410 .max_vruntime : 0.000001 .spread : 0.000000 .spread0 : -292507.096603 .nr_spread_over : 130 .nr_running : 1 .load : 1024 .runnable_load_avg : 998 .blocked_load_avg : 413 rt_rq[1]: .rt_nr_running : 0 .rt_throttled : 0 .rt_time : 0.000000 .rt_runtime : 950.000000 runnable tasks: task PID tree-key switches prio exec-runtime sum-exec sum-sleep ---------------------------------------------------------------------------------------------------------- init 1 313310.289516 3299 120 313310.289516 2455.017054 6104221.954363 kthreadd 2 6577.160196 58 120 6577.160196 5.462646 8008.483888 kworker/u4:0 6 376132.673205 2930 120 376132.673205 493.042018 14291930.480919 rcu_sched 7 376323.397295 14084 120 376323.397295 723.998898 14297275.360261 migration/1 10 0.000000 401 0 0.000000 850.799562 0.030517 ksoftirqd/1 11 376284.212726 7272 120 376284.212726 634.094247 14296060.028045 kworker/1:0 12 232.154164 6 120 232.154164 0.488281 232.757568 kworker/1:0H 13 3954.602298 6 100 3954.602298 0.457762 2448.822022 khelper 14 5.074196 2 100 5.074196 0.152589 0.030517 kdevtmpfs 15 6350.821406 145 120 6350.821406 34.027099 6938.079836 kworker/1:1 55 376324.556962 14214 120 376324.556962 1210.388161 14295621.337855 khubd 431 3992.571696 146 120 3992.571696 73.120116 2298.736572 rpciod 533 3186.886003 2 100 3186.886003 0.061036 0.030517 fsnotify_mark 553 6698.542889 5 120 6698.542889 0.610351 7465.240479 irq/88-48070000 733 0.000000 175 49 0.000000 37.597654 0.000000 mmcqd/0 798 376284.578939 31081 120 376284.578939 7339.965810 14286424.774125 kworker/1:1H 811 376284.153804 2016 100 376284.153804 467.559836 14295915.771461 jbd2/mmcblk0p2- 812 376284.853597 909 120 376284.853597 187.957750 14296129.089368 ext4-rsv-conver 813 3960.631760 2 100 3960.631760 0.091552 0.030518 udevd 1139 5073.299325 3 120 5073.299325 3.326416 0.000000 rsyslogd 1685 367855.641776 89 120 367855.641776 66.558837 14232167.999268 rsyslogd 1686 18583.825784 5 120 18583.825784 8.148193 35041.595459 smbd 1735 373866.679904 381 120 373866.679904 713.073724 14233558.624261 smbd 1750 7436.795409 1 120 7436.795409 3.997803 0.000000 sshd 1791 367855.611257 41 120 367855.611257 56.549075 14230944.915772 getty 1888 8379.423084 9 120 8379.423084 17.639160 0.000000 getty 1890 8397.461169 9 120 8397.461169 17.425537 0.000000 getty 1895 8438.145491 9 120 8438.145491 17.730713 0.000000 acpid 1914 8598.322557 4 120 8598.322557 9.460450 0.000000 mysqld 1967 10371.880479 128 120 10371.880479 366.973878 1735.992431 mysqld 2008 9233.960583 7 120 9233.960583 2.258300 475.158691 mysqld 2010 8867.063605 1 120 8867.063605 0.152588 0.000000 mysqld 2012 8866.341534 1 120 8866.341534 0.000000 0.000000 mysqld 2014 8867.467414 1 120 8867.467414 1.159668 0.000000 mysqld 2016 8866.296690 1 120 8866.296690 0.000000 0.000000 mysqld 2025 376285.463948 14148 120 376285.463948 19846.252467 14255057.739241 whoopsie 1972 319956.300764 20 120 319956.300764 45.135497 7200619.628905 gdbus 1998 8723.098042 8 120 8723.098042 4.394532 0.457763 libvirtd 1977 46500.443638 27 120 46500.443638 46.112063 3182319.610594 libvirtd 1980 8682.048136 1 120 8682.048136 0.000000 0.000000 libvirtd 1982 8681.762422 1 120 8681.762422 0.000000 0.000000 libvirtd 1984 8681.548135 1 120 8681.548135 0.000000 0.000000 libvirtd 1986 8681.548136 1 120 8681.548136 0.000000 0.000000 libvirtd 1989 8681.822793 2 120 8681.822793 0.274658 0.000000 libvirtd 1990 8681.578652 1 120 8681.578652 0.030517 0.000000 postgres 2022 376137.781608 1385 120 376137.781608 8902.221690 14270901.306141 postgres 2217 376284.365315 64617 120 376284.365315 68520.446801 14163715.789733 postgres 2219 376284.273762 15293 120 376284.273762 8413.848882 14260271.423355 apache2 2315 376284.151692 14024 120 376284.151692 8033.294679 14257380.950902 getty 2353 17387.058964 12 120 17387.058964 12.756348 2.380371 apache2 2896 293802.653959 8 120 293802.653959 2.899168 0.000000 apache2 2898 293807.600003 1 120 293807.600003 0.946045 0.000000 sshd 3243 374087.137122 31 120 374087.137122 168.395993 6727.355959 sshd 3370 376324.679034 263 120 376324.679034 360.321040 50774.353030 R cat 3416 376330.465410 4 120 376330.465410 9.033203 0.518799 > > I also traced curr_cost just to get an idea of the cost of idle_balance. > I get an average cost across all five cpus of around 7000. > > Morten > -- Thanks Alex ^ permalink raw reply [flat|nested] 16+ messages in thread
* [tip:sched/core] sched: Add statistic for newidle load balance cost 2014-01-23 10:49 ` Alex Shi 2014-01-23 12:32 ` Morten Rasmussen @ 2014-02-11 12:17 ` tip-bot for Alex Shi 1 sibling, 0 replies; 16+ messages in thread From: tip-bot for Alex Shi @ 2014-02-11 12:17 UTC (permalink / raw) To: linux-tip-commits; +Cc: linux-kernel, alex.shi, hpa, mingo, peterz, tglx Commit-ID: 37e6bae8395a94b4dd934c92b02b9408be992365 Gitweb: http://git.kernel.org/tip/37e6bae8395a94b4dd934c92b02b9408be992365 Author: Alex Shi <alex.shi@linaro.org> AuthorDate: Thu, 23 Jan 2014 18:39:54 +0800 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Tue, 11 Feb 2014 09:58:18 +0100 sched: Add statistic for newidle load balance cost Tracking rq->max_idle_balance_cost and sd->max_newidle_lb_cost. It's useful to know these values in debug mode. Signed-off-by: Alex Shi <alex.shi@linaro.org> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/52E0F3BF.5020904@linaro.org Signed-off-by: Ingo Molnar <mingo@kernel.org> --- kernel/sched/core.c | 9 ++++++--- kernel/sched/debug.c | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 3068f37..fb9764f 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4811,7 +4811,7 @@ set_table_entry(struct ctl_table *entry, static struct ctl_table * sd_alloc_ctl_domain_table(struct sched_domain *sd) { - struct ctl_table *table = sd_alloc_ctl_entry(13); + struct ctl_table *table = sd_alloc_ctl_entry(14); if (table == NULL) return NULL; @@ -4839,9 +4839,12 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd) sizeof(int), 0644, proc_dointvec_minmax, false); set_table_entry(&table[10], "flags", &sd->flags, sizeof(int), 0644, proc_dointvec_minmax, false); - set_table_entry(&table[11], "name", sd->name, + set_table_entry(&table[11], "max_newidle_lb_cost", + &sd->max_newidle_lb_cost, + sizeof(long), 0644, proc_doulongvec_minmax, false); + set_table_entry(&table[12], "name", sd->name, CORENAME_MAX_SIZE, 0444, proc_dostring, false); - /* &table[12] is terminator */ + /* &table[13] is terminator */ return table; } diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 31b908d..f3344c3 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -321,6 +321,7 @@ do { \ P(sched_goidle); #ifdef CONFIG_SMP P64(avg_idle); + P64(max_idle_balance_cost); #endif P(ttwu_count); ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [RFC PATCH 1/2] sched/update_avg: avoid negative time 2014-01-21 5:33 [RFC PATCH 1/2] sched/update_avg: avoid negative time Alex Shi 2014-01-21 5:33 ` [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost Alex Shi @ 2014-01-21 5:59 ` Alex Shi 2014-01-21 6:49 ` Michael wang 2 siblings, 0 replies; 16+ messages in thread From: Alex Shi @ 2014-01-21 5:59 UTC (permalink / raw) To: mingo, peterz, morten.rasmussen, vincent.guittot, daniel.lezcano, efault Cc: wangyun, linux-kernel, Alex Shi On 01/21/2014 01:33 PM, Alex Shi wrote: > rq->avg_idle try to reflect the average idle time between the cpu idle > and first wakeup. But in the function, it maybe get a negative value > if old avg_idle is too small. Then this negative value will be double > counted in next time calculation. Guess that is not the original purpose, > so recalibrate it to zero. Forget this patch, the avg_idle is impossible to get negative. Sorry for noise! -- Thanks Alex ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC PATCH 1/2] sched/update_avg: avoid negative time 2014-01-21 5:33 [RFC PATCH 1/2] sched/update_avg: avoid negative time Alex Shi 2014-01-21 5:33 ` [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost Alex Shi 2014-01-21 5:59 ` [RFC PATCH 1/2] sched/update_avg: avoid negative time Alex Shi @ 2014-01-21 6:49 ` Michael wang 2014-01-21 8:46 ` Alex Shi 2 siblings, 1 reply; 16+ messages in thread From: Michael wang @ 2014-01-21 6:49 UTC (permalink / raw) To: Alex Shi, mingo, peterz, morten.rasmussen, vincent.guittot, daniel.lezcano, efault Cc: linux-kernel Hi, Alex On 01/21/2014 01:33 PM, Alex Shi wrote: > rq->avg_idle try to reflect the average idle time between the cpu idle > and first wakeup. But in the function, it maybe get a negative value > if old avg_idle is too small. Then this negative value will be double > counted in next time calculation. Guess that is not the original purpose, > so recalibrate it to zero. > > Signed-off-by: Alex Shi <alex.shi@linaro.org> > --- > kernel/sched/core.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index 30eb011..af9121c6 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -1358,6 +1358,9 @@ static void update_avg(u64 *avg, u64 sample) > { > s64 diff = sample - *avg; > *avg += diff >> 3; > + > + if (*avg < 0) > + *avg = 0; This seems like won't happen... if 'diff' is negative, it's absolute value won't bigger than '*avg', not to mention we only use 1/8 of it. Regards, Michael Wang > } > #endif > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC PATCH 1/2] sched/update_avg: avoid negative time 2014-01-21 6:49 ` Michael wang @ 2014-01-21 8:46 ` Alex Shi 0 siblings, 0 replies; 16+ messages in thread From: Alex Shi @ 2014-01-21 8:46 UTC (permalink / raw) To: Michael wang, mingo, peterz, morten.rasmussen, vincent.guittot, daniel.lezcano, efault Cc: linux-kernel On 01/21/2014 02:49 PM, Michael wang wrote: > This seems like won't happen... > > if 'diff' is negative, it's absolute value won't bigger than '*avg', not > to mention we only use 1/8 of it. That's why I said 'sorry and forget this patch'. :( -- Thanks Alex ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2014-02-11 12:18 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-01-21 5:33 [RFC PATCH 1/2] sched/update_avg: avoid negative time Alex Shi 2014-01-21 5:33 ` [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost Alex Shi 2014-01-21 7:43 ` Jason Low 2014-01-21 8:44 ` Alex Shi 2014-01-22 8:24 ` Alex Shi 2014-01-22 16:09 ` Peter Zijlstra 2014-01-22 18:10 ` Jason Low 2014-01-23 6:49 ` Alex Shi 2014-01-23 9:54 ` Peter Zijlstra 2014-01-23 10:49 ` Alex Shi 2014-01-23 12:32 ` Morten Rasmussen 2014-01-23 14:43 ` Alex Shi 2014-02-11 12:17 ` [tip:sched/core] sched: Add statistic for newidle load balance cost tip-bot for Alex Shi 2014-01-21 5:59 ` [RFC PATCH 1/2] sched/update_avg: avoid negative time Alex Shi 2014-01-21 6:49 ` Michael wang 2014-01-21 8:46 ` Alex Shi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox