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.
Let's summarize the benefits the proposed project:
- Better portability with applications that are written for the Irix operating system and use the jobs API to set resource limits.
- More flexible way of setting resource limits for complex systems made up from various processes.
- Further possible features based on the jobs facility. For example, we have the mac_partition(4) module to put processes into partitions and apply access restrictions. A collective access restriction for jobs would be another interesting idea.
TODO and Milestones
- 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.
- 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).
- Jun 16- Jul 16: Implement collective resource limits in the ULE scheduler and provide API to manipulate resource limits, like setjlimit(2), getjlimit(2).
- Jul 17- Jul 22: Benchmarking of processes assigned to jobs and normal processes. Measuring overhead and looking for optimization possibilities.
- Jul 23 - Jul 31: Implementation of miscallenous userland features, like jobs-aware ps(1).
- Aug 1 - Aug 16:Testing, code review, code style, documentation.