Skip to contentSkip to conversation

Performance degredation with latest scheduler code

PATCH Martin J. Bligh 1 participant 1 message Jun 10, 2004 Scheduler

lore
Share & tools
lore
#0 lore raw

Something messed with the sched peformance between the last copy I picked up (2.6.5_rc3_mm1) and the stuff that got checked into mainline. I lose about 17% througput on SDET at high loads, though it's slightly better at VERY low loads (less processes than nodes). (OK, I'm kind of *assuming* it's the scheduler, though that seems like by far the most obvious candidate)

Kernbench is worse at lower loads (processes ~= 2x CPUs)

Kernbench: (make -j N vmlinux, where N = 2 x num_cpus)

                              Elapsed      System        User         CPU
           2.6.6-rc3-mjb3       44.90       79.80      586.18     1483.67
           2.6.7-rc1-mjb1       45.34      101.04      574.67     1489.00

But actually a bit better at very high loads ...

Kernbench: (make -j vmlinux, maximal tasks)

                              Elapsed      System        User         CPU
           2.6.6-rc3-mjb3       45.56       91.59      590.72     1497.67
           2.6.7-rc1-mjb1       44.24       89.98      574.73     1503.33

Diffprofile for kernbench (lower load)

     14605    11.2% total
      6027   154.2% __copy_from_user_ll
      2908    64.8% __copy_to_user_ll
      2148   241.6% finish_task_switch
      1441   248.0% __wake_up
...
     -1714    -3.4% default_idle
     -1962   -11.5% do_anonymous_page

What the hell happened there? I'd guess it's the balance on wake stuff, but removing it doesn't seem to help ... this was the part of the diff I did to try to revert stuff, which didn't help:

include/linux/sched.h 2004-06-10 09:43:03.000000000 -0700 renamed from include/linux/sched.h 2004-05-27 16:22:38.000000000 -0700 +3 -8
@@ -630,10 +630,7 @@ struct sched_domain {
        .cache_nice_tries       = 1,                    \
        .per_cpu_gain           = 100,                  \
        .flags                  = SD_BALANCE_NEWIDLE    \
-                               | SD_BALANCE_EXEC       \
-                               | SD_BALANCE_CLONE      \
-                               | SD_WAKE_AFFINE        \
-                               | SD_WAKE_BALANCE,      \
+                               | SD_WAKE_AFFINE,       \
        .last_balance           = jiffies,              \
        .balance_interval       = 1,                    \
        .nr_balance_failed      = 0,                    \
@@ -646,15 +643,13 @@ struct sched_domain {
        .parent                 = NULL,                 \
        .groups                 = NULL,                 \
        .min_interval           = 8,                    \
-       .max_interval           = 32,                   \
+       .max_interval           = 256*fls(num_online_cpus()),\
        .busy_factor            = 32,                   \
        .imbalance_pct          = 125,                  \
        .cache_hot_time         = (10*1000000),         \
        .cache_nice_tries       = 1,                    \
        .per_cpu_gain           = 100,                  \
-       .flags                  = SD_BALANCE_EXEC       \
-                               | SD_BALANCE_CLONE      \
-                               | SD_WAKE_BALANCE,      \
+       .flags                  = SD_BALANCE_EXEC,      \
        .last_balance           = jiffies,              \
        .balance_interval       = 1,                    \
        .nr_balance_failed      = 0,                    \