Research

My research focuses on building systems that meet the demanding requirements of modern datacenters. Over my career, I have worked on distributed systems, operating systems, and networking. I am particularly passionate about make it easier for programmers to build applications for new environments or hardware with higher-level abstractions or stronger guarantees without trading off performance. Some recent research directions are listed below.

Kernel-bypass Datapath OS Design. I/O devices have rapidly outpaced the performance of software in recent decades. As a result, the CPU has become the primary bottleneck in many datacenter applications. The emerging era of microsecond-scale applications demands new operating system abstractions and architectures. By rethinking the OS’s role in the age of kernel-bypass devices, we can provide unified abstractions across heterogeneous hardware platforms while maintaining strong guarantees for applications. This requires co-design of scheduling, memory management, and I/O handling at nanosecond timescales, enabling applications to run efficiently across different devices without modification.

Microsecond-scale Performance via Co-design. Hardware and software have traditionally evolved along separate paths, but emerging requirements demand tight integration. Co-design across system layers enables us to eliminate redundant abstractions and overheads that accumulate when components are designed in isolation. By co-optimizing serialization with networking hardware, load balancing with switch capabilities, and system stacks with accelerator architectures, we can unlock new levels of performance and flexibility. This approach also enables more elegant solutions to otherwise complex distributed systems problems.

Sustainability and Resilience. Beyond maximizing raw performance, modern datacenters must address fundamental constraints around energy consumption, carbon emissions, and operational resilience. Building sustainable systems requires making the costs of energy and carbon visible to application developers and system designers, enabling them to make informed tradeoffs between performance and environmental impact. Similarly, as systems become more complex and geographically distributed, resilience to failures—both planned and unplanned—becomes critical. Research in this space explores how to design software and systems that gracefully adapt to resource constraints, failures, and changing operational requirements.