Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost
On 01/23/2014 08:32 PM, Morten Rasmussen wrote: > On Thu, Jan 23, 2014 at 10:49:35AM +, 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-8 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 sobibo in cs us sy id wa 0 0 0 628420 48776 2450880011 4 39 26 0 0 99 0 0 0 0 628396 48776 24508800 0 0 79 44 0 0 100 0 1 0 0 628396 48776 24508800 0 0 64 39 0 0 100 0 0 0 0 628420 48776 24511200 0 0 47 27 0 1 99 0 0 0 0 628420 48776 24511200 0 0 53 31 0 0 100 0 0 0 0 628420 48776 24511200 0 0 47 30 0 0 100 0 0 0 0 628420 48776 24511200 0 0 44 31 0 0 100 0 0 0 0 628420 48776 24511200 0 0 58 39 0 0 100 0 0 0 0 628420 48776 24511200 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.00 .sysctl_sched_min_granularity: 1.50 .sysctl_sched_wakeup_granularity : 2.00 .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.01 .min_vruntime : 668837.562013 .max_vruntime : 0.01 .spread: 0.00 .spread0 : 0.00 .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.00 .rt_runtime: 950.00 runnable tasks: task PID tree-key switches prio exec-runtime sum-execsum-sleep -- ksoftirqd/0 3668828.662844 12744 120668828.662844 1148.742697 14295248.412972 kworker/0:0H 5 1780.632452 5 100 1780.632452 0.915527 2428.527832 rcu_bh 812.628673 2 12012.628673 0.030517 0.030518 migration/0 9 0.00
Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost
On Thu, Jan 23, 2014 at 10:49:35AM +, 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-8 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost
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 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 --- 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([10], "flags", >flags, sizeof(int), 0644, proc_dointvec_minmax, false); - set_table_entry([11], "name", sd->name, + set_table_entry([11], "max_newidle_lb_cost", + >max_newidle_lb_cost, + sizeof(long), 0644, proc_doulongvec_minmax, false); + set_table_entry([12], "name", sd->name, CORENAME_MAX_SIZE, 0444, proc_dostring, false); - /* [12] is terminator */ + /* [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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost
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 > 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 > --- > 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. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq-max_idle_balance_cost
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@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@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. -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq-max_idle_balance_cost
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@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@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 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq-max_idle_balance_cost
On Thu, Jan 23, 2014 at 10:49:35AM +, 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-8 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 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq-max_idle_balance_cost
On 01/23/2014 08:32 PM, Morten Rasmussen wrote: On Thu, Jan 23, 2014 at 10:49:35AM +, 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-8 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 sobibo in cs us sy id wa 0 0 0 628420 48776 2450880011 4 39 26 0 0 99 0 0 0 0 628396 48776 24508800 0 0 79 44 0 0 100 0 1 0 0 628396 48776 24508800 0 0 64 39 0 0 100 0 0 0 0 628420 48776 24511200 0 0 47 27 0 1 99 0 0 0 0 628420 48776 24511200 0 0 53 31 0 0 100 0 0 0 0 628420 48776 24511200 0 0 47 30 0 0 100 0 0 0 0 628420 48776 24511200 0 0 44 31 0 0 100 0 0 0 0 628420 48776 24511200 0 0 58 39 0 0 100 0 0 0 0 628420 48776 24511200 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.00 .sysctl_sched_min_granularity: 1.50 .sysctl_sched_wakeup_granularity : 2.00 .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.01 .min_vruntime : 668837.562013 .max_vruntime : 0.01 .spread: 0.00 .spread0 : 0.00 .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.00 .rt_runtime: 950.00 runnable tasks: task PID tree-key switches prio exec-runtime sum-execsum-sleep -- ksoftirqd/0 3668828.662844 12744 120668828.662844 1148.742697 14295248.412972 kworker/0:0H 5 1780.632452 5 100 1780.632452 0.915527 2428.527832 rcu_bh 812.628673 2 12012.628673 0.030517 0.030518 migration/0 9 0.00 399 0 0.00 187.866211 0.030517 kworker/u4:116 3362.363077 201 120
Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost
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 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 --- 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([6], "name", sd->name, CORENAME_MAX_SIZE, 0444, proc_dostring); - /* [7] is terminator */ + set_table_entry([7], "max_newidle_lb_cost", + >max_newidle_lb_cost, + sizeof(long), 0644, proc_doulongvec_minmax); + /* [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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost
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 > > 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 > > --- > > 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. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost
On Wed, Jan 22, 2014 at 04:24:13PM +0800, Alex Shi wrote: > From: Alex Shi > 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 > --- > 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() ? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost
On 01/21/2014 03:43 PM, Jason Low wrote: > On Mon, Jan 20, 2014 at 9:33 PM, Alex Shi wrote: >> It's useful to track this value in debug mode. >> >> Signed-off-by: Alex Shi >> --- >> 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 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 --- 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq-max_idle_balance_cost
On 01/21/2014 03:43 PM, Jason Low wrote: On Mon, Jan 20, 2014 at 9:33 PM, Alex Shi alex@linaro.org wrote: It's useful to track this value in debug mode. Signed-off-by: Alex Shi alex@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@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@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 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq-max_idle_balance_cost
On Wed, Jan 22, 2014 at 04:24:13PM +0800, Alex Shi wrote: From: Alex Shi alex@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@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() ? -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq-max_idle_balance_cost
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@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@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. -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq-max_idle_balance_cost
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@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@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 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost
On 01/21/2014 03:43 PM, Jason Low wrote: > On Mon, Jan 20, 2014 at 9:33 PM, Alex Shi wrote: >> It's useful to track this value in debug mode. >> >> Signed-off-by: Alex Shi >> --- >> 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 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 --- 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq-max_idle_balance_cost
On 01/21/2014 03:43 PM, Jason Low wrote: On Mon, Jan 20, 2014 at 9:33 PM, Alex Shi alex@linaro.org wrote: It's useful to track this value in debug mode. Signed-off-by: Alex Shi alex@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@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@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 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost
On Mon, Jan 20, 2014 at 9:33 PM, Alex Shi wrote: > It's useful to track this value in debug mode. > > Signed-off-by: Alex Shi > --- > 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)? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH 2/2] sched: add statistic for rq->max_idle_balance_cost
It's useful to track this value in debug mode. Signed-off-by: Alex Shi --- 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH 2/2] 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@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 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] sched: add statistic for rq-max_idle_balance_cost
On Mon, Jan 20, 2014 at 9:33 PM, Alex Shi alex@linaro.org wrote: It's useful to track this value in debug mode. Signed-off-by: Alex Shi alex@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)? -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/