On 20/11/2007, Micah Dowty <[EMAIL PROTECTED]> wrote: > On Tue, Nov 20, 2007 at 06:57:55AM +0100, Ingo Molnar wrote: > > > > * Micah Dowty <[EMAIL PROTECTED]> wrote: > > > > > > this one is being triggered whenever a cpu becomes idle (schedule() > > > > --> idle_balance() --> load_balance_newidle()). > > > > > > > > (this flag is a bit #1 == 2) > > > > > > > > cat /proc/sys/kernel/sched_domain/cpu0/domain0/flags > > > > > > Hmm. I don't have this file on my system: > > > > > > [EMAIL PROTECTED]:/proc/sys/kernel/sched_domain/cpu0/domain0# ls > > > busy_factor busy_idx forkexec_idx idle_idx imbalance_pct > > > max_interval min_interval newidle_idx wake_idx > > > [EMAIL PROTECTED]:/proc/sys/kernel/sched_domain/cpu0/domain0# uname -a > > > Linux micah-64 2.6.23.1 #1 SMP Fri Nov 2 12:25:47 PDT 2007 x86_64 > > > GNU/Linux > > > > > > Is there a config option I'm missing? > > > > yes, CONFIG_SCHED_DEBUG. > > I have that one. I even posted the /proc/sched_debug output :)
ah ok, try applying this patch on top of 2.6.23.1. btw., what's your system? If I recall right, SD_BALANCE_NEWIDLE is on by default for all configs, except for NUMA nodes. (attached a white-space non-damaged version) --- --- kernel/sched.c-old 2007-11-20 22:33:22.000000000 +0100 +++ kernel/sched.c 2007-11-20 22:37:07.000000000 +0100 @@ -5306,7 +5306,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(14); + struct ctl_table *table = sd_alloc_ctl_entry(12); set_table_entry(&table[0], "min_interval", &sd->min_interval, sizeof(long), 0644, proc_doulongvec_minmax); @@ -5326,10 +5326,10 @@ sd_alloc_ctl_domain_table(struct sched_d sizeof(int), 0644, proc_dointvec_minmax); set_table_entry(&table[8], "imbalance_pct", &sd->imbalance_pct, sizeof(int), 0644, proc_dointvec_minmax); - set_table_entry(&table[10], "cache_nice_tries", + set_table_entry(&table[9], "cache_nice_tries", &sd->cache_nice_tries, sizeof(int), 0644, proc_dointvec_minmax); - set_table_entry(&table[12], "flags", &sd->flags, + set_table_entry(&table[10], "flags", &sd->flags, sizeof(int), 0644, proc_dointvec_minmax); return table; --- > > --Micah > > -- Best regards, Dmitry Adamushko
--- kernel/sched.c-old 2007-11-20 22:33:22.000000000 +0100 +++ kernel/sched.c 2007-11-20 22:37:07.000000000 +0100 @@ -5306,7 +5306,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(14); + struct ctl_table *table = sd_alloc_ctl_entry(12); set_table_entry(&table[0], "min_interval", &sd->min_interval, sizeof(long), 0644, proc_doulongvec_minmax); @@ -5326,10 +5326,10 @@ sd_alloc_ctl_domain_table(struct sched_d sizeof(int), 0644, proc_dointvec_minmax); set_table_entry(&table[8], "imbalance_pct", &sd->imbalance_pct, sizeof(int), 0644, proc_dointvec_minmax); - set_table_entry(&table[10], "cache_nice_tries", + set_table_entry(&table[9], "cache_nice_tries", &sd->cache_nice_tries, sizeof(int), 0644, proc_dointvec_minmax); - set_table_entry(&table[12], "flags", &sd->flags, + set_table_entry(&table[10], "flags", &sd->flags, sizeof(int), 0644, proc_dointvec_minmax); return table;