Description:
This work is targeted towards partitionable NUMA based shared
memory systems. In such systems we expect multiple partitions to
run their own operating system image, fault isolated from each other
via hardware firewalls (e.g. NUMA switch protection). In such systems
we want to move resources on-the-fly between running OS images,
without shutting down the OS. This enables an adaptation of resource
assignment due to changing workloads. We have been prototyping this
work on a 4x4way FJST NUMA system. Essentially this work enables
hotswappability of all resources.
The functionalities that we are adding to the LINUX source are:
- Basic NUMA capabilities
- Dynamic Resource Migration Support
Under the extensions to support NUMA we have developed the following
capabilities:
- CPU affinity: this allows the kernel or an application to
define via a cpu-mask on which CPUs a particular process must
execute. The scheduler has been modified to observe the specified
affinity mask.
- Memory affinity: similar to cpu affinity, an application
can specify from which node to allocate memory from. We provide
here a patch that allows the simulation of a multinode system
from the memory perspective. It exercises the initial NUMA memory
support and it provides an experimentation base for the memory
affinity work. Parts of this was co-developed with Kanoj Sarcar
of SGI.
- NUMA bringup code: we fixed various bugs related to TLB
invalidation protocol and cacheability of MMIO regions. These
were integrated into the base kernel 2.3.42.
- Debugging Support: We moved the GDB and the KDB debugging
support to 2.3.99-pre5.
The Dynamic Resource Migration Support focuses on dynamic addition
and removal of memory, cpu and I/O. It is currently in progress
and no patches are made available at this time.
|