Measurement study of ARM hypervisors
Measuring the performance of both micro and macro level workloads on KVM and Xen on ARMv8 hardware. To analyze the overhead from virtualization, we leveraged several available tools including perf, ftrace and tcpdump. We also instrumented KVM to evaulate the costs of exits from the VM to the hypervisor such as hypercalls, page faults, interrupts, IO accesses and instruction emulation. The work led to a publication in ISCA 2016 about ARM hypervisor designs, and architectural implications on virtualization performance.
Optimizing KVM/ARM performance
We hacked KVM/ARM, a Type-2 hypervisor and made it run as a Type-1 Xen like hypervisor, to reduce the overhead of world switches from double traps.
Memory Management for Tessellation OS
Tessellation is a manycore OS targeted at the resource management challenges of client devices, including the need for real-time and QoS guarantees. I implemented a primitive memory management framework (runtime library for two-level scheduling in memory resource) for Tessellation OS. I also worked on 64-bit and PAE porting for Tessellation.
ARMvisor is a KVM based hypervisor that runs on ARM v6 and v7 platforms without hardware virtualization features. Since the ISA is not virtualizable, we patched the guest’s software to trap each sensitive instruction to the hypervisor. ARMvisor adopts shadow paging with memory tracing (rmap) to efficiently virtualize the MMU, and uses QEMU to emulate the I/O devices. ARMvisor supports VMs running paravirtualized linux kernel as well as Android OS on ARM hardware.