Leveraging MPST in Linux to Achieve Power-Performance GoalsMichael Jantz (email@example.com)
Recent computing trends include an increased focus on power and energy consumption and a need to support multi-tenant use cases, leading to a need to multiplex hardware efficiently and without performance interference. Advances in allocating CPU, storage and network resources have made it possible to meet competing service quality objectives while reducing power or energy demands. In comparison to other resources, however, it is challenging to obtain precise control over distribution of memory capacity, bandwidth, or power, when virtualizing and multiplexing system memory. That is because these effects intimately depend upon the results of activity across multiple layers of the vertical execution stack, which are often not available in any individual component. As data-intensive computing continues to raise demands on memory, adaptive approaches are needed for improving power efficiency and performance isolation in the scheduling of memory.
We describe an approach that improves collaboration between applications, the Linux kernel, and hardware memory subsystem (controllers and the DIMMs) in order to balance power and performance objectives, and we present details of its implementation using the Linux 2.6.32 kernel (x64) as base. The implementation employs ACPI memory power state table (MPST) to organize system memory into power domains according to rank information. An application programming interface (API) in our implementation allows applications to efficiently communicate various provisioning goals concerning groups of virtual ranges to the kernel. The kernel biases allocation and reclamation algorithms in line with the provisioning goals. The goals may vary over time; thus at one time, the applications may request high power efficiency; and at another time, they may ask for bandwidth or capacity reservations, and so on. In this work, we will describe the framework, the changes for incorporating MPST information, policy modifications, and examples and use cases for invoking the new capabilities.