Using Operating System Instrumentation and Event Logging to Support User-level Multiprocessor Schedulers

  • Forschungsthema:L4Ka
  • Typ:Diplomarbeit
  • Datum:24.03.2005
  • Betreuung:

    Prof. Dr. Frank Bellosa, Dr. Volkmar Uhlig

  • Bearbeitung:Jan Stoess
  • Links:PDF
  • Absract:

    This work presents a novel approach to support multiprocessor scheduling at userlevel. We propose to use system instrumentation and event logging to obtain runtime information relevant for scheduling, from different system sources such as the hardware, operating system components, or application programs.

    We instrument the system components with event log handlers that record scheduling data in designated log files held in memory. The user-level scheduler can analyze and evaluate these log files to base its processor allocation policies on. Our approach allows for flexible, efficient, and scalable accumulation of scheduler-relevant run-time characteristics; it was designed to be applicable both to user-level components, and to the safety-critical operating system kernel. To demonstrate our approach, we have developed a prototype logging infrastructure within a real-world, microkernel-based, component operating system. We successfully extract several run-time scheduling characteristics from different components, including timing properties and communication patterns from the microkernel, and shared-memory usage from a user-level device driver subsystem. Measurements indicate an undramatic overhead for logging, with baseline logging costs between about 26 and 275 clock cycles on an Intel 2.2 GHz Xeon Processor, and application-level overhead on driver throughput of about 3.8 percent for logging kernel-based communication, and about 10.5 percent for logging shared memory usage.


      author = { Jan St\"o{\ss}},
      title = { Using Operating System Instrumentation and Event Logging to Support User-level Multiprocessor Schedulers},
      type = {Diploma Thesis},
      address = {System Architecture Group, University of Karlsruhe, Germany},
      month = mar # "~24",
      year = 2005,
      url = {}