  Many HPC applications suffer from a bottleneck in the shared caches,
instruction execution units, I/O or memory bandwidth, even though the remaining
resources may be underutilized. It is hard for developers and runtime systems
to ensure that all critical resources are fully exploited by a single
application, so an attractive technique for increasing HPC system utilization
is to colocate multiple applications on the same server. When applications
share critical resources, however, contention on shared resources may lead to
reduced application performance.
  In this paper, we show that server efficiency can be improved by first
modeling the expected performance degradation of colocated applications based
on measured hardware performance counters, and then exploiting the model to
determine an optimized mix of colocated applications. This paper presents a new
intelligent resource manager and makes the following contributions: (1) a new
machine learning model to predict the performance degradation of colocated
applications based on hardware counters and (2) an intelligent scheduling
scheme deployed on an existing resource manager to enable application
co-scheduling with minimum performance degradation. Our results show that our
approach achieves performance improvements of 7% (avg) and 12% (max) compared
to the standard policy commonly used by existing job managers.
