Linux Driver for fine-grain and low overhead access to on-chip performance counters
In recent years, energy-efficiency is becoming a key challenge in the High Performance Computing (HPC) domain. Indeed, while the demand for more powerful supercomputers is constantly increasing, integrated computing architectures are facing power/thermal challenges that are limiting the performance benefits of technology scaling. Optimizing for energy efficiency requires methods of correlating the application execution with fine-grain power measurements as well as architectural events. Current processors like Intel processors embeds performance counters to monitor online the energy consumption and other architectural parameters. However the software libraries which wraps these performance counters becomes bulky and lead to significant overheads when accessed with high-frequency to track fast workload variations. Currently HPC infrastructure monitoring system samples these values with periods above the seconds to limit this overhead. However most of this overhead is linked to traversing the user-space to kernel space interface more than the direct access to the counter. The Linux O.S. has already an IO subsystem which allows to efficiently move time traces from the kernel space to the user-space by implementing SWf as well as poll and interrupt methods. However this is only used to interface with external monitors and not with the internal per-core architectural performance counters.
Goal of this Project → Implementation and testing of a Linux Device Driver for handling the architectural performance counters as an IO device. This project allows the student to get practical experience with the Linux Kernel Programming, the IO Linux Subsystem widely used in Linux Based SoCs for handling the ADCs and on the use of architectural performance counters.
- Good knowledge of C and C++ programming.
- Good computer architecture and real-time system background.
- Good knowledge of control systems.
- 40% Theory
- 40% Implementation
- 20% Testing
Detailed Task Description