Resource management is a well known problem in almost every computing system ranging from embedded to High Performance Computing (HPC) and is useful to optimize multiple orthogonal system metrics such as power consumption, performance and reliability. To achieve such an optimization a resource manager must suitably allocate the available system resources - e.g. processing elements, memories and interconnect - to the running applications. This kind of process incurs in two main problems: a) system resources are usually shared between multiple applications and this induces resource contention; and b) each application requires a different Quality of Service, making it harder for the re- source manager to work in an application-agnostic mode. I...