Alexandra Fedorova

Research overview

My research focuses on the design of system software: the software that manages the hardware and decides how to allocate its resources to applications. We are investigating how to make system software more performant, scalable and and energy-efficient, how to gain better observability into its internal workings, how to bridge the gap between applications and hardware. We are looking for ways to use semantic information in the application (i.e., what the application is actually trying to do) as hints for allocating hardware resources, such as CPU cores and memory.

In the past, my students and I focused on operating system scheduling and memory management algorithms that reduce contention for hardware resources. This work culminated in techniques for intelligent placement of virtual containers on physical hardware, to ensure predictable performance and energy efficiency. We are working with a major cloud provider to incorporate these techniques into their infrastructure management software.

Our recent much-talked-about paper revealed surprising bugs in the Linux scheduler that inadvertently prevented runnable threads from using idle cores. This work also exposed a chasm between the performance tools available to system builders and the tools that are actually needed to detect and diagnose these kinds of problems.

While I continue to work on many directions in systems research, my recent passion is building better performance tools. Performance debugging is hard and impacts developer productivity. To diagnose performance bugs, developers use sampling profilers and execution tracing (via application logs). Profiling is easy to use, requires no understanding of the source code and can immediately produce useful insights into performance. Yet, with sampling as the underlying mechanism, profilers are limited in the insight that they can provide. Execution tracing can bridge the information gap, but it is currently done manually and in application-specific ways. Our goal is to make execution tracing automatic and application-agnostic, so that just like profiling it can be used by anyone new to the source base to get immediate insight into performance characteristics and to actually gain comprehension of the code at the same time. Our performance tool suite DINAMITE can be downloaded here.


To get a more in-depth idea about specific research projects, take a look at my publications.