NUMA machines require applications to layout memory in a more careful way than in traditional UMA machines because of different memory latency and bandwidth for memory on different nodes. For applications running on bare metal machines, the underlying NUMA topology of the machine rarely changes, but for applications running on a virtualized environment, there is more flexibility of the underlying topology. In some virtualization systems, the topology is neither exposed nor maintained by the virtualization system, yielding unpredictable performance. In others, the guest VM is “pinned” to particular resources, reducing flexibility.
A virtual machine can obtain or give away CPU or memory resources through the Linux hot-plug functionality, which allows adding or removing physical resources to/from a running OS. This functionality can enable the virtualization system and the guest to collaborate in order to modify the underlying NUMA topology as the system load changes.
This raises challenges for applications running in the guest to cope with NUMA topology change at runtime. Our research focuses on building a topology-free NUMA library that allows applications to express their intentions, rather than manually placing all threads and memory. When the topology changes, the system will automatically adjust the memory and thread layout to preserve the application’s intentions.
- Runhua Zhang