Nome e qualifica del proponente del progetto: 
sb_p_2269752
Anno: 
2020
Abstract: 

Nowadays, computer architectures rely on multi-core processors, with out-of-order and speculative engines, often flanked by external elements such as GPUs and dedicated accelerators whose interoperability outlines the contemporary concept of heterogeneous systems. For its part, software has its own progression, most of the time determined by the currently rising topics (e.g. AI, Big Data) and the new hardware facilities which lead to new programming environments targeting better hw-sw cooperation. In such a complex world, understanding software structure and carefully analyzing its activity at runtime is a fundamental task to evaluate security, correctness, or efficiency issues. Instrumentation is the most employed execution analysis technique and operates at several abstraction levels according to the selected strategy. To enforce instrumentation, modern processors are provided with Performance Monitor Units (PMUs), special support for probing the cpu circuitry activity with a very negligible overhead also providing information that software instrumentation may just infer or never access.
The objective of this research project is to design on-line profiling methods, and their actual implementation, with the main aim of optimizing runtime monitoring execution of general applications and providing a dedicated tool for hardware contention resource among active workloads on system. Among all, in order to purse the portability of our solution among different architecture, despite the high PMUs heterogeneity, we will take advantage of the well-known Top-Down Analysis that defines a general methodology to study hardware response to particular code execution.
During this project, the hardware monitoring support will be seen as a vertical attribute of the profiler framework. Moreover, a strong focus will be posed on reducing perturbation and overhead generated by profiler activity to improve the effectiveness of any possible further data exploitation stages.

ERC: 
PE6_3
Componenti gruppo di ricerca: 
sb_cp_is_2921895
Innovatività: 

Actual PMU-aware profilers are based on third-party tools such as perf_events, which provide a complete interface to access PMU support on several architecture types but are not explicitly designed for on-line use since they introduce unaffordable runtime costs. Furthermore, such tools are meant to gather data according to user directives, which are not always aware of the sound metrics related to a specific hw/sw oriented optimization problem.
It is important to note that the tight correlation between accuracy and cost of profiling may cause the rising of the Heisen-monitoring effect. Such an effect reflects the singular phenomenon that the more closely you observe something, the more you affect it. Even though this phenomenon can be mitigated while observing a specific application execution in an isolated and ¿ideal¿ environment, it plays a completely different role in a system-wide context where the high contention among running processes may interfere and be affected by the profiling activity itself. We aim to keep as low as possible this side-effect by the combined use of PMUs and OS integrated functionalities that directly target specific analysis such as the runtime identification of hardware element access collision. Furthermore, we think that profiler must be the sole executive director of the profiling action demanded by the user, exposing to her/him just a minimal interface to receive a profiling session directive targeting the setup phase.
Each core is responsible to orchestrate its own PMUs whose data is often related to that core activity. However, when dealing with a system built upon shared resources, the action targeting an element such as the cache subsystem may cause side-effects to the code execution performed by other cores. We carefully identify these shared resources and the right way to observe their activity without perturbation of their work. Of course, this also requires cross-validation of the generated data and entails direct cooperation among active processors which, besides the coordination phase, have also to synchronize their profiling target on common elements to evaluate their influence. Cross-validation and core cooperation, especially when dealing with PMUs, is a set of new techniques that will advance the state of the art, also providing new techniques to generate data for the common software analysis carried out in offline-fashion.

This project aims to provide solutions for a set of problems related to continuous profiling and runtime detection of hardware resource contentions not tackled by the literature:
- The Framework is directly integrated inside the OS to lower down any penalty coming from accessing a privileged resource (generally allowed only at ring 0), also extending to a system-wide level of the whole profiling support.
- Although software monitoring techniques are a need, this project largely employs PMUs which are limited in modern commodity hardware. This requires a grain-fine orchestration and management of the available resources which has to be directly performed without relying upon external libraries to achieve the highest control degree (remove abstraction and unwanted side-effects).
- Providing information at runtime about the current hardware usage by the active workloads is a key point when dealing with system consolidation. Furthermore, this is extended to the entire system and not only to the footprint of a specific application making our solution applicable in a wider context.

All the source code will be available under an open-source license (e.g. GPLv3) and published on well-appreciated services such as GitHub, in order to ensure proper and fast dissemination of the results.

Codice Bando: 
2269752

© Università degli Studi di Roma "La Sapienza" - Piazzale Aldo Moro 5, 00185 Roma