[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] credit based scheduler

On Thu, Jun 22, 2006 at 12:26:02PM +0200, Molle Bestefich wrote:
> To explain myself a bit more, I was wondering whether the scheduler
> conceptually can be said to work a little like this (VCPUs mapped to
> CPUs in a "ring-fashion"):
> (VCPUs = A, B, C)
> Time     CPU1  CPU2
> 0ms      A     B
> 30ms     B     C
> 60ms     C     A
> 90ms     A     B
> 120ms    B     C
> ...etc...
> This would give 30ms slices with a time-to-wait for scheduling of 30ms.

Here, you're moving something that is already running from
one CPU to another. The credit scheduler won't do this. It
moves something that is on a CPU's runq but hasn't had a
chance to run on that CPU.

> Or perhaps more like this:
> Time     CPU1  CPU2
> 0ms      A     B
> 30ms     A     C
> 60ms     B     C
> 90ms     B     A
> 120ms    C     A
> ...etc...
> Which gives 60ms slices (warmer cache, yummi) but still with a
> time-to-wait for scheduling of 30ms.
> The latter obviously being a better algorithm, cache-wise...

The credit scheduler behaves like this latter example:

Basically, once a VCPU has ran two consecutive time-slices,
its physical CPU goes and looks for a VCPU on the other CPU's
runq which hasn't yet ran its fair share. It's the very act
of running two consecutive time-slices on a PCPU while two
other VCPUs are time-slicing on the other PCPU which causes
the fair share imbalance which then causes the migration.

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.