  In modern data centers, energy usage represents one of the major factors
affecting operational costs. Power capping is a technique that limits the power
consumption of individual systems, which allows reducing the overall power
demand at both cluster and data center levels. However, literature power
capping approaches do not fit well the nature of important applications based
on first-class multi-thread technology. For these applications performance may
not grow linearly as a function of the thread-level parallelism because of the
need for thread synchronization while accessing shared resources, such as
shared data. In this paper we consider the problem of maximizing the
application performance under a power cap by dynamically tuning the
thread-level parallelism and the power state of the CPU-cores. Based on
experimental observations, we design an adaptive technique that selects in
linear time the optimal combination of thread-level parallelism and CPU-core
power state for the specific workload profile of the multi-threaded
application. We evaluate our proposal by relying on different benchmarks,
configured to use different thread synchronization methods, and compare its
effectiveness to different state-of-the-art techniques.
