Messages in this thread | | | Date | Fri, 4 Dec 2009 10:54:08 +0100 | From | Ingo Molnar <> | Subject | Re: [RFC][PATCH] sched: fix GENTLE_FAIR_SLEEPERS dependency |
| |
* Suresh Jayaraman <sjayaraman@suse.de> wrote:
> The newly introduced GENTLE_FAIR_SLEEPERS does not seem to have any > effect without FAIR_SLEEPERS. Fix sysctl.sched_features to reflect > this. Without this change, a user who sets GENTLE_FAIR_SLEEPERS > without FAIR_SLEEPERS would assume gentle sleeper fairness which > is not guaranteed. > > Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de> > --- > > Index: linux-2.6/kernel/sched.c > =================================================================== > --- linux-2.6.orig/kernel/sched.c > +++ linux-2.6/kernel/sched.c > @@ -761,10 +761,22 @@ sched_feat_write(struct file *filp, cons > int len = strlen(sched_feat_names[i]); > > if (strncmp(cmp, sched_feat_names[i], len) == 0) { > - if (neg) > + if (neg) { > sysctl_sched_features &= ~(1UL << i); > - else > + /* > + * GENTLE_FAIR_SLEEPERS have no effect without > + * FAIR_SLEEPERS. > + */ > + if (strncmp(cmp, "FAIR_SLEEPERS", > + strlen("FAIR_SLEEPERS")) == 0) > + sysctl_sched_features &= ~(1UL << i+1); > + } else { > sysctl_sched_features |= (1UL << i); > + if (strncmp(cmp, "GENTLE_FAIR_SLEEPERS", > + strlen("GENTLE_FAIR_SLEEPERS")) > + == 0) > + sysctl_sched_features |= (1UL << i-1); > + } > break; > } > }
There's a lot of other dependencies between scheduler features so it's possible to change it without it having an effect on the scheduler.
sched_features is really a development/debugging facility, you have to know what you are doing.
Might be worth adding a comment to the feature definition place itself in the source - explain what it does and how it makes sense (and how it doesnt).
Ingo
| |