ITEC -  Operating Systems Group

Batch Scheduling for the L4Ka::Pistachio Microkernel

  • Subject:L4Ka
  • Type:Study Thesis
  • Date:15.01.2008
  • Supervisor:

    Prof. Dr. Frank Bellosa, Jan Stoess

  • Graduand:Andreas Mähler
  • Links:PDF
  • Abstract: 

    The L4 microkernel interface defines a dedicated system call to control thread scheduling parameters: Schedule. The current version of Schedule takes just one thread argument, which implies that only one thread can be modified per invocation. However, many applications (e.g. virtual machines or time-sharing systems) internally group threads together and manage them accordingly. Whenever large sets of threads (i.e. their scheduling parameters) must be manipulated, the necessary information cannot be passed to the kernel at once. This thesis proposes modifications to L4's scheduling interface, which allows a user-level scheduler to have the kernel set scheduling parameters for multiple threads at a single blow.

    In multiprocessor systems, manipulation of threads that reside on a CPU other than the scheduler thread?s (especially Processor migration, which is the most complex scheduling task) is performed by an in-kernel mechanism. In the current version of Pistachio, the mechanism is only designed for single threads (which is all it needs to do, because the interface can only deliver a single thread ID to the kernel level). The altered interface also makes it possible to introduce a new mechanism that is optimised to perform "batch scheduling" and therefore induces less overhead.

    The implementations of the proposed designs for the interface and the mechanism will be evaluated using a microbenchmark that sets certain scheduling parameters for a growing set of destination threads.

    BibTex: 

    @studythesis{maehler08batchscheduling,
      author = {Andreas Maehler},
      title = {Batch Scheduling for the L4Ka::Pistachio Microkernel},
      type = {Study Thesis},
      address = {System Architecture Group, University of Karlsruhe, Germany},
      month = jan # "~15",
      year = 2008
    }