small scheduler hack/patch

Terry Lambert tlambert2 at
Fri Jul 11 03:55:10 PDT 2003

Marcel Moolenaar wrote:
> On Thu, Jul 10, 2003 at 03:03:41PM -0700, Julian Elischer wrote:
> > it comes I think from the fact that some hardware treats things as
> > bitmaps. (?)
> I have to guess that a bitmap is a natural way to represent sets
> when the sets aren't large and that this is why we use bitmaps.
> We have a need to send an IPI to multiple CPUs, which is expressed
> nicely with bitmaps.

Many CISC processors support the necessary instructions for an
implementation of the magic "bit-fu" necessary to do things like
finding the first bit, counting bits, etc., in O(log2).  If you
are trying to perform set operations (union, disunion, intersect,
least common member, greatest common member, etc.), then bitmaps
are a much more natural represntation for this than it would first

If you read back over the excerpt I posted from the Intel manual,
you'll see that you can send IPIs to *groups* of processors, and
this wording was pretty explicitly chosen, rather than saying

As one example, you could add a processor to the "idle group", in
Julian's latest patch, and then IPI the idle group.  This would
wake up the processors that were idle, in case the event that
resulted in one process going on the run queue was responsible for
other processes going on the run queue at the same time.

Another example would be adding a processor to the "power managed"
group, and actually powering down its private support circuitry to
save electricity when, for example you were on a 4 CPU system, and
only had a 25% capacity processing load.

There's a lot of gold in that mine...

-- Terry

More information about the freebsd-current mailing list