Messages in this thread | | | From | Marc-Christian Petersen <> | Subject | Re: [PATCH] Interactivity bits | Date | Wed, 9 Jul 2003 12:59:53 +0200 |
| |
On Wednesday 09 July 2003 11:49, Guillaume Chazarain wrote:
Hi Guillaume,
> --- linux-2.5.74-bk6/kernel/sched.c.old 2003-07-09 10:08:01.000000000 +0200 > +++ linux-2.5.74-bk6/kernel/sched.c 2003-07-09 11:27:23.000000000 +0200 > @@ -68,10 +68,10 @@ > */ > #define MIN_TIMESLICE ( 10 * HZ / 1000) > #define MAX_TIMESLICE (200 * HZ / 1000) > -#define CHILD_PENALTY 50 > -#define PARENT_PENALTY 100 > +#define CHILD_PENALTY 80 > +#define PARENT_PENALTY 90 > #define EXIT_WEIGHT 3 > -#define PRIO_BONUS_RATIO 25 > +#define PRIO_BONUS_RATIO 45 > #define INTERACTIVE_DELTA 2 > #define MAX_SLEEP_AVG (10*HZ) > #define STARVATION_LIMIT (10*HZ) > @@ -88,13 +88,13 @@ > * We scale it linearly, offset by the INTERACTIVE_DELTA delta. > * Here are a few examples of different nice levels: > * > - * TASK_INTERACTIVE(-20): [1,1,1,1,1,1,1,1,1,0,0] > - * TASK_INTERACTIVE(-10): [1,1,1,1,1,1,1,0,0,0,0] > - * TASK_INTERACTIVE( 0): [1,1,1,1,0,0,0,0,0,0,0] > - * TASK_INTERACTIVE( 10): [1,1,0,0,0,0,0,0,0,0,0] > - * TASK_INTERACTIVE( 19): [0,0,0,0,0,0,0,0,0,0,0] > + * TASK_INTERACTIVE(-20): [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0] > + * TASK_INTERACTIVE(-10): [1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0] > + * TASK_INTERACTIVE( 0): [1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0] > + * TASK_INTERACTIVE( 10): [1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] > + * TASK_INTERACTIVE( 19): [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] > * > - * (the X axis represents the possible -5 ... 0 ... +5 dynamic > + * (the X axis represents the possible -9 ... 0 ... +9 dynamic > * priority range a task can explore, a value of '1' means the > * task is rated interactive.) > * > @@ -303,9 +303,9 @@ > * priority but is modified by bonuses/penalties. > * > * We scale the actual sleep average [0 .... MAX_SLEEP_AVG] > - * into the -5 ... 0 ... +5 bonus/penalty range. > + * into the -9 ... 0 ... +9 bonus/penalty range. > * > - * We use 25% of the full 0...39 priority range so that: > + * We use 50% of the full 0...39 priority range so that: > * > * 1) nice +19 interactive tasks do not preempt nice 0 CPU hogs. > * 2) nice -20 CPU hogs do not get preempted by nice 0 tasks. > @@ -347,9 +347,9 @@ > */ > static inline void activate_task(task_t *p, runqueue_t *rq) > { > - long sleep_time = jiffies - p->last_run - 1; > + long sleep_time = jiffies - p->last_run; > > - if (sleep_time > 0) { > + if (p->state == TASK_INTERRUPTIBLE && sleep_time) { > int sleep_avg; > > /* >
I can't see & feel any good difference with this applied on top of .74-mm3 (slightly modified to apply)
> --- linux-2.5.74-mm3/kernel/sched.c.old 2003-07-09 09:14:50.000000000 +0200 > +++ linux-2.5.74-mm3/kernel/sched.c 2003-07-09 11:39:56.000000000 +0200 > @@ -71,7 +71,7 @@ > #define CHILD_PENALTY 80 > #define PARENT_PENALTY 100 > #define EXIT_WEIGHT 3 > -#define PRIO_BONUS_RATIO 25 > +#define PRIO_BONUS_RATIO 45 > #define INTERACTIVE_DELTA 2 > #define MIN_SLEEP_AVG (HZ) > #define MAX_SLEEP_AVG (10*HZ) > @@ -386,9 +386,9 @@ > */ > static inline void activate_task(task_t *p, runqueue_t *rq) > { > - long sleep_time = jiffies - p->last_run - 1; > + long sleep_time = jiffies - p->last_run; > > - if (sleep_time > 0) { > + if (p->state == TASK_INTERRUPTIBLE && sleep_time) { > unsigned long runtime = jiffies - p->avg_start; > > /* >
And I even cannot see and feel any good difference with that one ontop of .74-mm3.
It's more worse than w/o:
Before the patch: mplayer was able to play a movie in fullscreen w/o any framedrops while "make -j2 bzImage modules"
With the patch: mplayer stops for ~0.5 seconds every 5 seconds while "make -j2 bzImage modules"
You said the "long sleep_time = jiffies - p->last_run;" change helps mplayer? Not in my case ;)
- Celeron 1,3GHz - 512MB RAM - 1GB SWAP (2 IDE disks, ~512MB on each disk) - ATA100 Maxtor 60GB HDD - ATA100 Fujitsu 40GB
ciao, Marc
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |