Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 25 Jan 2003 22:24:59 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Julian Elischer <julian@elischer.org>
Cc:        Jeff Roberson <jroberson@chesapeake.net>, Steve Kargl <sgk@troutmask.apl.washington.edu>, Robert Watson <rwatson@FreeBSD.ORG>, Gary Jennejohn <garyj@jennejohn.org>, arch@FreeBSD.ORG
Subject:   Re: New scheduler - Interactivity fixes
Message-ID:  <200301260624.h0Q6OxSl025784@apollo.backplane.com>
References:   <Pine.BSF.4.21.0301252214300.89171-100000@InterJet.elischer.org>

next in thread | previous in thread | raw e-mail | index | archive | help
    Although...  it might be even better if we could specify no schedulers
    in the kernel build and then load one as a boot-time module.   Or if
    we could load several schedulers at compile-time (i.e. all their 
    functions and globals would be static and they would register via
    a SYS entry) and allow the scheduler to be selected with a boot-time
    variable.

    That might dovetail into a methodology to allow schedulers to be
    switched on the fly.  I've thought about that a bit and it occurs to
    me that run-time switching a scheduler does not require that a common
    runq methodology be used.  Instead we simply have an API call that
    allows the kernel to 'collect' all the queued KSEs into a single queue 
    and then reallocate their sub-structures and re-add them to the new
    scheduler.

    /*
     * Ask the scheduler to pull off all the KSEs on its runq or runqs
     * (for all cpu's) and place them in colq.  The kernel will call this
     * function prior to switching to a new scheduler.  The scheduler
     * is also expected to cleanup any other auxillary management it
     * had initialized.
     */
    void
    sched_collect(struct rqhead *colq)
    {
    }

    /*
     * Ask the scheduler to emplace all the KSEs on colq back onto the
     * appropriate scheduler-specific run queue.  This function is called
     * after the kernel initializes the new scheduler and assigns new
     * empty substructures to the KSE,KSEGs,etc... as per the new scheduler.
     */
    void
    sched_restore(struct rqhead *colq)
    {
    }

							-Matt

:(Julian)
:I think that the option should be set up so that no option gives the 
:current scheduler.
:
:On Sun, 26 Jan 2003, Jeff Roberson wrote:
:
:> In a moment I'm adding some config options to handle this.  I sent some
:> mail out to current@ and I'm adding a line to updating.  This has all gone
:> through re.  You will be required to specify one of SCHED_4BSD or
:> SCHED_ULE (new name for sched_smp) in your config file.  I went away from
:> sched_smp because it should be a very effective up scheduler as well.
:> 
:> Cheers,
:> Jeff

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200301260624.h0Q6OxSl025784>