My research focuses on the design of system software: the software that sits between the applications and the hardware and provides virtualization, protection and resource management. I figure out how to make systems more performant, scalable and energy-efficient, how to gain better observability into its internal workings, how to bridge the gap between applications and hardware.
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.
While I continue to work on many research directions, my recent interest is memory and storage systems. I work on processing-in-memory, NVRAM and other evolving storage hardware, and its applications for deep learning, storage engines and data analytics systems. I am also interested in system software for accelerator-centric hardware.