Open Source

Processor and Memory Placement for Linux 2.4 ccNUMA systems.

CpuMemSets provides a Linux 2.4 kernel facility that enables system services and applications to specify on which CPUs they may be scheduled, and from which nodes they may allocate memory.

The default configuration makes all CPUs and all system memory available to all applications. The CpuMemSet facility can be used to restrict any process, process family or process virtual memory region to to a specified subset of the system CPUs and memory.

A command called 'runon' is provided that relies on CpuMemSets to enable a user to run a specified command on a specified list of CPUs. Both a C shared library and Python language module are provided to access the CpuMemSets system interface.

In the future, SGI anticipates providing additional facilities that provide other system services that provide convenient access to the CpuMemSets facility.

For further documentation and details, see the man pages for cpumemsets and runon. To use the Python interface:

    import cpumemsets
    print cpumemsets.__doc__

CpuMemSets is an SGI Open Source project, available from .

See Process Scheduling and Memory Placement Design Notes for the CpuMemSet Design Document. Earlier versions of these CPuMemSets Design Notes and associated email threads are available on the SourceForge Linux Scalability Effort (LSE) project, as Process Scheduling and Memory Placement - CpuMemSet Design Notes.

A public BitKeeper Repository containing the Linux kernel changes to support CpuMemSets is available at: .

The CpuMemSets facility is being provided to the Atlas Project for inclusion in 64-bit Linux on Intel's Itanium(tm) processor family.