Open Source
Linux PAGG and Job

Process Aggregates (PAGG)

PAGG consists of modifications to the linux kernel that allows developers to implement Process AGGregates as loadable kernel modules. A process aggregate is defined as a collection of processes that are all members of the same set. A set would be implemented as a container for the member processes. For instance, process sessions and groups could have been implemented as process aggregates.

While using PAGG, a child process inherits membership, or attachment, to same process aggregate containers as the parent process. When a process inherits membership, the process aggregate containers are updated concerning the new process member. Likewise, when a process exits, the process aggregate containers to which it is attached are updated to reflect that the process has left the set of members.

PAGG features:

  • Child inherits attachment to the same PAGG containers as the parent.
  • PAGG Containers are updated when new processes are attached (eg. during process forks).
  • PAGG Containers are updated when a process is detached (eg. when a process exits).

See the kernel changes document that further describes the proposed changes for implementing process aggregates.

In addition to the PAGG feature patch, this project also provides a loadable kernel module and a PAM module to implement a PAGG based job container.


A job is a group of related processes all descended from a point of entry process and identified by a unique job identifier (jid). A job can contain multiple process groups or sessions, and all processes in one of these subgroups can only be contained within a single job. However, not every process on the system is part of a job. That is, only processes which are started by a login initiator like login, rlogin, rsh and so on, get assigned a job ID. In the Linux environment, jobs are created via a PAM module. Jobs on Linux are provided using a loadable kernel module.

Job features:

  • A job is an inescapable container, but not all processes on a system need be members of a job.
  • Each new process inherits the jid from its parent process.
  • All point of entry processes (job initiators via a PAM session) create a new job.

This job container is used used by the Comprehensive System Accounting (CSA) project to implement job level accounting on Linux.

The PAGG and job container patches are available for download here. See the CSA project for CSA patches.