Re: Scheduler improvements, take 1001, Patch 2/5

2012-10-15 Thread Otto Moerbeek
On Mon, Oct 15, 2012 at 04:01:29PM +0100, Stuart Henderson wrote: > On 2012/10/15 16:18, David Coppa wrote: > > On Sun, Oct 14, 2012 at 4:53 PM, Gregor Best wrote: > > > On Sun, Oct 14, 2012 at 11:05:36AM +0200, David Coppa wrote: > > >> On Tue, Oct 9, 2012 at 6:21 PM, Gregor Best wrote: > > >>

Re: Scheduler improvements, take 1001, Patch 2/5

2012-10-15 Thread Stefan Fritsch
On Monday 15 October 2012, Stuart Henderson wrote: > Best to send the diff, with the accompanying text, in the same > email, and make sure they still all apply, I tried testing some of > these but didn't manage to get them to apply (either some > conflicting change, or they were in the wrong order

Re: Scheduler improvements, take 1001, Patch 2/5

2012-10-15 Thread Stuart Henderson
On 2012/10/15 16:18, David Coppa wrote: > On Sun, Oct 14, 2012 at 4:53 PM, Gregor Best wrote: > > On Sun, Oct 14, 2012 at 11:05:36AM +0200, David Coppa wrote: > >> On Tue, Oct 9, 2012 at 6:21 PM, Gregor Best wrote: > >> > This patch simply halves the timeslice processes get until they are > >> >

Re: Scheduler improvements, take 1001, Patch 2/5

2012-10-15 Thread David Coppa
On Sun, Oct 14, 2012 at 4:53 PM, Gregor Best wrote: > On Sun, Oct 14, 2012 at 11:05:36AM +0200, David Coppa wrote: >> On Tue, Oct 9, 2012 at 6:21 PM, Gregor Best wrote: >> > This patch simply halves the timeslice processes get until they are >> > preempted. This patch is standalone and the rest o

Re: Scheduler improvements, take 1001, Patch 2/5

2012-10-14 Thread Bob Beck
Gregor you would perhaps get better feedback if it were easier to discern where your patches are and what each one is doing. If you can't be inclined to keep the subjects matching the diffs and are sending stuff out with subjects like "scheduler improvement diff X" instead of something like "reduc

Re: Scheduler improvements, take 1001, Patch 2/5

2012-10-14 Thread Gregor Best
On Sun, Oct 14, 2012 at 11:05:36AM +0200, David Coppa wrote: > On Tue, Oct 9, 2012 at 6:21 PM, Gregor Best wrote: > > This patch simply halves the timeslice processes get until they are > > preempted. This patch is standalone and the rest of the patches does not > > depend on it, but I figured I'd

Re: Scheduler improvements, take 1001, Patch 2/5

2012-10-14 Thread David Coppa
On Tue, Oct 9, 2012 at 6:21 PM, Gregor Best wrote: > This patch simply halves the timeslice processes get until they are > preempted. This patch is standalone and the rest of the patches does not > depend on it, but I figured I'd throw it in anyway. > > -- > Gregor Best > Didn't get this patc

Re: Scheduler improvements, take 1001, Patch 5/5

2012-10-13 Thread Philip Guenther
On Tue, Oct 9, 2012 at 9:27 AM, Gregor Best wrote: > This patch moves struct schedstate_percpu to kernel land, which I think > is cleaner than exposing structures for scheduler state to userland, > especially since grepping for 'schedstate' in /usr/src yielded no > results outside of /usr/src/sys.

Re: Scheduler improvements, take 1001, Patch 5/5

2012-10-09 Thread Gregor Best
This patch moves struct schedstate_percpu to kernel land, which I think is cleaner than exposing structures for scheduler state to userland, especially since grepping for 'schedstate' in /usr/src yielded no results outside of /usr/src/sys. I have not seen negative impact from this, but I haven't y

Re: Scheduler improvements, take 1001, Patch 4/5

2012-10-09 Thread Gregor Best
This patch uses the previous one to take CPU topology into account when calculating the cost of moving a process between CPUs. This is only done on amd64 at the moment, and the cost factors are guesses right now, but it's a start. -- Gregor Best

Re: Scheduler improvements, take 1001, Patch 3/5

2012-10-09 Thread Gregor Best
This patch simply imports Christiano's code for detecting CPU topology, as posted on tech@ a while (more than two months) ago. I took it verbatim and didn't change anything yet. -- Gregor Best

Re: Scheduler improvements, take 1001, Patch 2/5

2012-10-09 Thread Gregor Best
This patch simply halves the timeslice processes get until they are preempted. This patch is standalone and the rest of the patches does not depend on it, but I figured I'd throw it in anyway. -- Gregor Best

Re: Scheduler improvements, take 1001, Patch 1/5

2012-10-09 Thread Gregor Best
As requested, I'll write down a few comments on each patch. So, here goes: This is the initial commit, it replaces the multiple FIFO queues that were used before with one RB-tree per CPU as a runqueue. The RB-tree is used because it offers operations such as min(), insert() and remove() in O(log n

Re: Scheduler improvements, take 1001, Patch 3/5

2012-10-09 Thread Gregor Best
diff --git a/arch/amd64/amd64/identcpu.c b/arch/amd64/amd64/identcpu.c index c597bb0..982c2bb 100644 --- a/arch/amd64/amd64/identcpu.c +++ b/arch/amd64/amd64/identcpu.c @@ -210,6 +210,8 @@ void (*setperf_setup)(struct cpu_info *); void via_nano_setup(struct cpu_info *ci); +void cpu_topology(st

Re: Scheduler improvements, take 1001, Patch 4/5

2012-10-09 Thread Gregor Best
diff --git a/arch/amd64/include/cpu.h b/arch/amd64/include/cpu.h index 12e48d6..99501a1 100644 --- a/arch/amd64/include/cpu.h +++ b/arch/amd64/include/cpu.h @@ -102,9 +102,11 @@ struct cpu_info { u_int32_t ci_cflushsz; u_int64_t ci_tsc_freq; +#define ARCH_HAVE_CPU_TOPO

Re: Scheduler improvements, take 1001, Patch 5/5

2012-10-09 Thread Gregor Best
diff --git a/sys/sched.h b/sys/sched.h index fb01f21..1784ee2 100644 --- a/sys/sched.h +++ b/sys/sched.h @@ -69,8 +69,10 @@ #ifndef_SYS_SCHED_H_ #define_SYS_SCHED_H_ +#ifdef _KERNEL #include #include +#endif /* * Posix defines a which may want to include @@ -88,11 +90

Re: Scheduler improvements, take 1001, Patch 1/5

2012-10-09 Thread Gregor Best
diff --git a/kern/kern_clock.c b/kern/kern_clock.c index 843965b..f598afc 100644 --- a/kern/kern_clock.c +++ b/kern/kern_clock.c @@ -233,7 +233,7 @@ hardclock(struct clockframe *frame) if (stathz == 0) statclock(frame); - if (--ci->ci_schedstate.spc_rrticks <= 0) +

Re: Scheduler improvements, take 1001, Patch 1/5

2012-10-09 Thread Gregor Best
diff --git a/kern/sched_bsd.c b/kern/sched_bsd.c index 172bb8f..c7121dc 100644 --- a/kern/sched_bsd.c +++ b/kern/sched_bsd.c @@ -77,12 +77,12 @@ scheduler_start(void) timeout_set(&schedcpu_to, schedcpu, &schedcpu_to); - rrticks_init = hz / 10; + rrticks_init = hz / 20;

Scheduler improvements, take 1001

2012-10-09 Thread Gregor Best
(By popular request as a new thread). Hi people, I've tried splitting my scheduler patch into smaller fragments, and here's the result. I changed a few things people mentioned over the last few days, such as the following: 1) sys/proc.h now includes sys/tree.h, which should make libc builds