SGI Logo
How to Buy | Resellers | Company Info | CareersSearchHome
[Products][Industries][Developers][Services and Support][Serious Fun]
Open Source
CpuMemSets FAQ

What are CpuMemSets?
How do I install CpuMemSets on a Linux system?
How do I setup up the initial CpuMemSets configuration?
Are there any tuning variables for CpuMemSets?
How does a system administrator alter default memsets or maps?
How does a system administrator enable a service or application to modify its map?
How does a system administrator uses cmsBulkRemap()?
How does a system administrator construct a sorted memory list?


What are CpuMemSets?

    CpuMemSets provides a new Linux 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.

    See further CpuMemSets Overview

How do I install CpuMemSets on a Linux system?

    The CpuMemSets facility will be automatically included in future SGI ccNUMA Linux/Intel systems, including the kernel support, the user level library (libcpumemsets.so) used to access this facility from C language programs, a Python module (cpumemsets) for access from a scripting environment. and a 'runon' command for controlling which CPUs and memory nodes an application may be allowed to use.

    If you wish to work with this facility on other systems, please obtain the kernel patch and user code from one of the locations described on the CpuMemSets Overview page.

How do I setup up the initial CpuMemSets configuration?

    No setup is required. All processes, all memory regions and the kernel are automatically provided a default CpuMemSet, which includes all CPUs and memory nodes in the system.

Are there any tuning variables for CpuMemSets?

    You can change this default CpuMemSet to only include the first CPU and first memory node by providing the additional option
      cpumemset_minimal=1

    on the kernel boot command line (accessible via elilo). This is useful if you intend to dedicate portions of your system CPUs or memory to particular tasks.

How does a system administrator alter default memsets or maps?

    Currently one may use the C language interface provided by the library (libcpumemsets), the Python interface provided by the module (cpumemsets), or the 'runon' command.

    SGI anticipates providing additional facilities, over time, that leverage this CpuMemSets facility to provide additional convenient means to control CPU and memory usage.

How does a system administrator enable a service or application to modify its map?

    Any service or application with sufficient privilege may alter its cpumemset (either the set or map). The basic CpuMemSet facility requires root privilege. Additional facilities that SGI may provide later may have alternative permission structures to meet other user needs.

How does a system administrator uses cmsBulkRemap()?

    This facility was removed from the current implementations of CpuMemSets, due to certain implementation difficulties. We are still considering alternative mechanisms to meet similar needs.

How does a system administrator construct a sorted memory list?

    The current kernel memory allocation facility does not make use of the order of memory, beyond trying on the current faulting node first ('first-touch'). So presently, there is no practical advantage to sorting the memory lists specified by CpuMemSets.

    The system API provided by the CpuMemSets facility takes a list, not a bit-mask, of CPUs and memory nodes, so one can change the order in which CPUs and nodes are specified in these lists, should it ever make a difference on kernel scheduling or allocation behaviour.

 


Products Industries Developers Support Serious Fun