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. In this scenario, resource management represents a critical and essential component in a computing system and should act at different levels to optimize the whole system while keeping it exible and versatile. In this paper we describe a multi-layer resource management strategy that operates at application, operating system and hardware level and tries to optimize resource allocation on embedded, desktop multi-core and HPC systems