[ANNOUNCE]: PAGG & Job module for Linux 2.4.0

From: Sam Watters (watters@sgi.com)
Date: Wed Jan 24 2001 - 16:39:21 EST


Los Alamos National Laboratory (LANL) and SGI collaborated
to provide an accounting solution called Comprehensive System
Accounting (CSA). CSA is for demanding Linux users who require the
ability to track system resource utilization and charge back the cost
of those resources used to the actual users who consume them. To
accomplish this task, CSA performs job level accounting, as opposed to
the more familiar process level accounting (for CSA information see,
http://oss.sgi.com/projects/csa). CSA requires that a job container for
processes be made available on Linux.

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/



This archive was generated by hypermail 2b29 : Wed Jan 31 2001 - 21:00:20 EST