Collective limits on set of processes (a.k.a. jobs)

The SGI Irix operating system introduces the concept of jobs, which are set of processes handled as a unit. The Irix API provides system calls to set collective resource limits on jobs, which are then enforced by jobs-aware schedulers. The concept of project IDs and ideas offer the same functionality on Solaris.

This application proposes the implementation of kernel-level and userland support with an Irix-compatible interface for better portability. The implementation should also provide the Solaris API or at least not prevent the further addition of that interface. The efficiency of the implementation is considered a crucial point of this project. Processes, which are not part of a job should not suffer any performance impact and the overhead should be kept minimal when jobs are used.

Project Deliverables

Let's summarize the benefits the proposed project:

TODO and Milestones

  1. Apr 26 - May 29: Reading the existing code on process resource limits and scheduler. Get an understanding of its working. Reading the Irix and Solaris APIs.
  2. May 29 - Jun 15: Implement kernel-level data structures and calls to manipulate jobs, like makenewjob(2), killjob(2), getjid(2), waitjob(2), setwaitjobpid(2).
  3. Jun 16- Jul 16: Implement collective resource limits in the ULE scheduler and provide API to manipulate resource limits, like setjlimit(2), getjlimit(2).
  4. Jul 17- Jul 22: Benchmarking of processes assigned to jobs and normal processes. Measuring overhead and looking for optimization possibilities.
  5. Jul 23 - Jul 31: Implementation of miscallenous userland features, like jobs-aware ps(1).
  6. Aug 1 - Aug 16:Testing, code review, code style, documentation.

GáborSoC2010 (last edited 2010-06-09T07:41:13+0000 by GáborKövesdán)