Re: [patch] CFS scheduler, -v7

From: Balbir Singh
Date: Mon Apr 30 2007 - 14:31:27 EST


Ingo Molnar wrote:
i'm pleased to announce release -v7 of the CFS scheduler patchset. (The main goal of CFS is to implement "desktop scheduling" with as high quality as technically possible.)

The CFS patch against v2.6.21 (or against v2.6.20.8) can be downloaded from the usual place:

http://redhat.com/~mingo/cfs-scheduler/


Hi, Ingo,

I needed the following fixes on my powerpc box to fix all warnings
generated by the compiler out during compilation. Without these fixes, I was
seeing negative values in /proc/sched_debug on my box. I still see a
negative value for "waiting"

task PID tree-key delta waiting switches prio wstart-fair sum-exec sum-wait
-------------------------------------------------------------------------------------------------------------------
R bash 5594 69839216478 6238568 -6238568 1617 120 -69832977910 66377151352 27173793



I've started on cfs late (with -v7), hopefully I'll catch up.
More questions, feedback will follow.

--
Warm Regards,
Balbir Singh
Linux Technology Center
IBM, ISTL
Index: linux-2.6.21/kernel/sched_debug.c
===================================================================
--- linux-2.6.21.orig/kernel/sched_debug.c 2007-04-30 23:17:10.000000000 +0530
+++ linux-2.6.21/kernel/sched_debug.c 2007-04-30 23:49:40.000000000 +0530
@@ -45,13 +45,13 @@
SEQ_printf(m, "%14s %5d %12Ld %11Ld %10Ld %9Ld %5d "
"%13Ld %13Ld %13Ld\n",
p->comm, p->pid,
- p->fair_key, p->fair_key - rq->fair_clock,
- p->wait_runtime,
- p->nr_switches,
+ (long long)p->fair_key, (long long)p->fair_key - rq->fair_clock,
+ (long long)p->wait_runtime,
+ (long long)p->nr_switches,
p->prio,
- p->wait_start_fair - rq->fair_clock,
- p->sum_exec_runtime,
- p->sum_wait_runtime);
+ (long long)p->wait_start_fair - rq->fair_clock,
+ (long long)p->sum_exec_runtime,
+ (long long)p->sum_wait_runtime);
}

static void print_rq(struct seq_file *m, struct rq *rq, u64 now)
@@ -83,7 +83,7 @@

SEQ_printf(m, "\ncpu: %d\n", cpu);
#define P(x) \
- SEQ_printf(m, " .%-22s: %Ld\n", #x, (u64)(rq->x))
+ SEQ_printf(m, " .%-22s: %Lu\n", #x, (unsigned long long)(rq->x))

P(nr_running);
P(raw_weighted_load);
@@ -110,7 +110,7 @@
int cpu;

SEQ_printf(m, "Sched Debug Version: v0.02\n");
- SEQ_printf(m, "now at %Ld nsecs\n", (unsigned long long)now);
+ SEQ_printf(m, "now at %Lu nsecs\n", (unsigned long long)now);

for_each_online_cpu(cpu)
print_cpu(m, cpu, now);
Index: linux-2.6.21/kernel/sched.c
===================================================================
--- linux-2.6.21.orig/kernel/sched.c 2007-04-30 23:42:04.000000000 +0530
+++ linux-2.6.21/kernel/sched.c 2007-04-30 23:49:44.000000000 +0530
@@ -229,7 +229,7 @@
unsigned long long t0, t1;

#define P(F) \
- buffer += sprintf(buffer, "%-25s:%20Ld\n", #F, p->F)
+ buffer += sprintf(buffer, "%-25s:%20Ld\n", #F, (long long)p->F)

P(wait_start);
P(wait_start_fair);
@@ -248,22 +248,22 @@

t0 = sched_clock();
t1 = sched_clock();
- buffer += sprintf(buffer, "%-25s:%20Ld\n", "clock-delta", t1-t0);
- buffer += sprintf(buffer, "%-25s:%20Ld\n",
- "rq-wait_runtime", this_rq->wait_runtime);
- buffer += sprintf(buffer, "%-25s:%20Ld\n",
- "rq-fair_clock", this_rq->fair_clock);
- buffer += sprintf(buffer, "%-25s:%20Ld\n",
- "rq-clock", this_rq->clock);
- buffer += sprintf(buffer, "%-25s:%20Ld\n",
- "rq-prev_clock_raw", this_rq->prev_clock_raw);
- buffer += sprintf(buffer, "%-25s:%20Ld\n",
- "rq-clock_max_delta", this_rq->clock_max_delta);
- buffer += sprintf(buffer, "%-25s:%20u\n",
- "rq-clock_warps", this_rq->clock_warps);
- buffer += sprintf(buffer, "%-25s:%20u\n",
- "rq-clock_unstable_events",
- this_rq->clock_unstable_events);
+ buffer += sprintf(buffer, "%-25s:%20Ld\n", "clock-delta",
+ (long long)t1-t0);
+ buffer += sprintf(buffer, "%-25s:%20Ld\n", "rq-wait_runtime",
+ (long long)this_rq->wait_runtime);
+ buffer += sprintf(buffer, "%-25s:%20Ld\n", "rq-fair_clock",
+ (long long)this_rq->fair_clock);
+ buffer += sprintf(buffer, "%-25s:%20Ld\n", "rq-clock",
+ (long long)this_rq->clock);
+ buffer += sprintf(buffer, "%-25s:%20Ld\n", "rq-prev_clock_raw",
+ (long long)this_rq->prev_clock_raw);
+ buffer += sprintf(buffer, "%-25s:%20Ld\n", "rq-clock_max_delta",
+ (long long)this_rq->clock_max_delta);
+ buffer += sprintf(buffer, "%-25s:%20u\n", "rq-clock_warps",
+ this_rq->clock_warps);
+ buffer += sprintf(buffer, "%-25s:%20u\n", "rq-clock_unstable_events",
+ this_rq->clock_unstable_events);
return buffer;
}