Efficient resource management is a growing problem due to the ever increasing scale and complexity of computational systems and the applications that use them. Modern multicore systems offer abundant compute resources to exploit application-level parallelism. The multiple compute cores within a single system share resources such as processor pipelines, caches, interconnects, and memory, presenting opportunities for efficient data sharing and resource utilization. These multicore systems are regularly employed in large clusters and clouds, hosting a multitude of applications and services simultaneously. While a tremendous amount of research has been aimed at solving various problems in offering infrastructure as a service, managing multiple applications and achieving high utilization and efficiency remains a challenge. The quest to increase utilization may result in higher resource contention and correspondingly unpredictable and often significantly degraded performance. Moreover, the degree of data and resources sharing among different cores is nonuniform, and is dependent on the architecture and applications involved. Identifying and enabling the efficient and synergistic sharing of data and resources while also minimizing resource contention and saturation is the key to simultaneously achieving higher utilization and resource efficiency.
In this dissertation, we argue that it is possible to provide efficient and deterministic performance in both individual and distributed multicore systems using a holistic approach that simultaneously guides application resource acquisition and manages hardware resources and task placement. Our resource management strategy combines information from the execution environment with application-defined quality of service targets to achieve overall system efficiency while meeting individual application progress guarantees. We demonstrate that aggregate information from low overhead hardware performance counters is sufficient to characterize individual application resource demands and bottlenecks specific to the execution environment. Using this information, we develop a hierarchical resource management strategy that can: monitor performance critical architectural resources and control task placement for optimal use of these resources; understand application bottlenecks, scalability, and parallel efficiency to reallocate resources while guaranteeing quality of service; and consolidate the above information from individual machines into a shared state to guide resource reservation in a distributed setting in order to simultaneously improve utilization and efficiency by reducing resource contention and saturation.
Reception to follow on TUESDAY, April 30, 2019 at 12:00pm in Wegmans Hall 3rd Floor Atrium
Advisor: Prof. Sandhya Dwarkadas (Computer Science)
Committee: Prof. Michael Scott (Computer Science), Prof. Michael Huang (Electrical & Computer Engineering), Dr. Kai Shen (Google)