|
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
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.
|