Research
We work at the boundary between systems, hardware, and the realities of running software at scale. Below are the threads of work currently active in the lab.
SuperHuge — making huge pages real
Huge pages can dramatically reduce address-translation overhead, yet years after the hardware became ubiquitous, huge pages remain unused for large classes of workloads — most notably executable code. SuperHuge tackles the structural barriers that block adoption (binary layouts, page-cache semantics, loader mechanics) and develops practical mechanisms — userspace, kernel, and binary-rewriting — that let real programs benefit without giving up file-backed memory, debugging, or cross-process sharing.
Diagnostics and root-cause analysis
System-call failures are often cryptic, and existing comparative-analysis tools require successful executions you don’t have. Our work uses symbolic execution and probe-point control-flow tracing to synthesize comparable executions and pinpoint the precise predicate responsible for a failure. See DeepErr.
Memory disaggregation and far memory
Far memory is finally practical, but using it well still requires unhappy compromises between programmer effort and runtime overhead. Our work on Eden and Hugifier-adjacent paging shows that small annotations and disciplined system support can deliver near-app-integrated performance without rewriting applications.