A job is defined as a group of related processes, all descended from a
point of entry process and identified by a unique job ID. A job can
contain multiple process groups, session, and processes. The job acts
as a process containment mechanism and a process is not allowed to
escape from the job container.
To provide a job container on Linux, we are proposing a generalized
mechanism for providing process containers. We call this mechanism
Process Aggregates, or PAGGs. PAGG will allow job containers to be
provided as a Linux kernel module, greatly lessening the impact of
providing jobs on the base Linux kernel. In addition, other developers
can use PAGG to provide additional process container types. In
addition to the job module using PAGG, we expect to provide a PAGG
module to further assist with managing parallel process applications
such as MPI applications in the near future.
PAGG consists of a set of kernel changes that provide functions for
modules to register and unregister as providers of process aggregate
containers. The registration functions operate in much the same manner
as those currently provided for filesystems, block and character
devices, symbol tables, and execution domains.
The code changes are organized so that compiling them into the kernel is
optional. In cases where PAGG support is compiled into the kernel, but
no PAGG modules are in use, the added burden to the kernel consists of
the execution of an additional if statment at process fork and another
at process exit.
In addition to the registration functions, the PAGG changes provide
hooks for updating process aggregate containers when processes fork and
exit. In addition, a new paggctl system call is proposed to allow the
following types of services:
1) creation of a new pagg container
2) signal all processes that are attached to the pagg container
3) wait for the completion of all processes in the pagg container
4) future resource limit capabilities based upon pagg container
Each pagg module would handle their own paggctl requests.
Please see http://oss.sgi.com/projects/pagg for information on the
proposed kernel changes and further description of what PAGG is and why
we are proposing this work. This page has a link to download the patch,
module, and commands source. If you just want to ftp it directly you
can get it at ftp://oss.sgi.com/projects/pagg/download.
A description of these kernel changes is provided at the PAGG project
home page (http://oss.sgi.com/projects/pagg) or you may access it
directly at http://oss.sgi.com/projects/pagg/pagg-lkd.txt.
Currenlty, we have only implemented this on the i386 architecture. And
ia64 version will soon be out as well. We are going to make an attempt
to
get it working on the other arhitectures, but we don't have the
facilities to test on all of the architectures. Once we have all the
architectures covered and this goes through a period of comments, we
would like to try to get the resulting patch included in the Linux base
source.
So, here is the job container. We are now working on implementing
job-based limits. Any comments and guidance concerning the PAGG and
Jobs work would be greatly appreciated.
-- Sam Watters Resource Mgmt Team SGI watters@sgi.com watters@sgi.com (651)683-5647 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/