ProcessAccounting

Last edit July 9, 2010
ProcessAccounting describes generally the resource distribution within a software system, where a 'resource' is any precious and limited commodity that can be distributed. Example resources: CPU time, HDD space, RAM. For a laptop, one might also add power and energy consumption, and heat production. Within a POSIX or Windows OS, one might need to add File Handles to that list.

A goal for ProcessAccounting is to achieve it without sacrificing safety, performance, or security. Performance is sacrificed if resources are under-utilized because they are being "reserved". Safety is sacrificed if resources are unavailable when required, or if they can be revoked without well-defined revocation behavior on part of the process from which the resource was revoked. Security is sacrificed if process A can delay process B to a degree that service B is effectively denied without having authority to do so, as might happen if process A holds a lock upon which process B is waiting.

These contentious forces make ProcessAccounting one of the huge, untamed frontiers for possibly massive improvements in ComputerScience.

A good design for ProcessAccounting would help with:
  • RealTime programming - programs that have an upper-bound on time to achieve certain behaviors.
  • Well-timed programs - programs that have a lower-bound on time to achieve or begin certain behaviors (i.e. multi-media programs, actuation programs)
  • Embedded systems - systems that have tightly managed memory resources
  • Safety-critical systems - i.e. medical devices, sensors and actuation for vehicles (i.e. anti-lock breaks)
  • Multi-user systems - i.e. shared multi-user OperatingSystems, or open distributed programming languages.

Existing designs involve:
  • priority specifications - for resources that can be safely revoked (like CPU time), priority specification allows a process with higher priority to control the resource or to have a larger slice of it.
  • quotas - upper-limits on resources "held" by particular processes. This one runs into many challenges, such as the possibility that multiple processes share or partake of a resource, and the issue of what to do when the quota is reached (crash? that's not safe).
  • reservation - ensuring that a resource will be available or will be offered for some time-slot in the future. Reservation often runs into performance challenges.

Related to ProcessAccounting is SystemAdministration, which determines which process-configurations are running and policies for distributing resources to them.