• Peter Zijlstra's avatar
    sched: Provide sched_set_fifo() · 7318d4cc
    Peter Zijlstra authored
    SCHED_FIFO (or any static priority scheduler) is a broken scheduler
    model; it is fundamentally incapable of resource management, the one
    thing an OS is actually supposed to do.
    
    It is impossible to compose static priority workloads. One cannot take
    two well designed and functional static priority workloads and mash
    them together and still expect them to work.
    
    Therefore it doesn't make sense to expose the priority field; the
    kernel is fundamentally incapable of setting a sensible value, it
    needs systems knowledge that it doesn't have.
    
    Take away sched_setschedule() / sched_setattr() from modules and
    replace them with:
    
      - sched_set_fifo(p); create a FIFO task (at prio 50)
      - sched_set_fifo_low(p); create a task higher than NORMAL,
    	which ends up being a FIFO task at prio 1.
      - sched_set_normal(p, nice); (re)set the task to normal
    
    This stops the proliferation of randomly chosen, and irrelevant, FIFO
    priorities that dont't really mean anything anyway.
    
    The system administrator/integrator, whoever has insight into the
    actual system design and requirements (userspace) can set-up
    appropriate priorities if and when needed.
    
    Cc: airlied@redhat.com
    Cc: alexander.deucher@amd.com
    Cc: awalls@md.metrocast.net
    Cc: axboe@kernel.dk
    Cc: broonie@kernel.org
    Cc: daniel.lezcano@linaro.org
    Cc: gregkh@linuxfoundation.org
    Cc: hannes@cmpxchg.org
    Cc: herbert@gondor.apana.org.au
    Cc: hverkuil@xs4all.nl
    Cc: john.stultz@linaro.org
    Cc: nico@fluxnic.net
    Cc: paulmck@kernel.org
    Cc: rafael.j.wysocki@intel.com
    Cc: rmk+kernel@arm.linux.org.uk
    Cc: sudeep.holla@arm.com
    Cc: tglx@linutronix.de
    Cc: ulf.hansson@linaro.org
    Cc: wim@linux-watchdog.org
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: default avatarIngo Molnar <mingo@kernel.org>
    Tested-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    7318d4cc
core.c 202 KB