Automatically Detecting Shared Library Functions for Native Acceleration in Emulation
Emulation allows programs to be run on machines of different architectures, and is more widespread than ever since Apple released the ‘Rosetta’ emulation tool as they transitioned to M1 Macbooks. However, the performance of emulated programs is usually much worse than running a ‘native’ version of the program that has been optimised for that machine’s architecture. This project extended existing research that seeks to improve emulation performance in cases where programs use common libraries – if a native version of the library is already on the machine, we should call the native library instead of translating the library to speed up the emulation. This project modified the QEMU emulator to automatically detect all of the shared library functions used by a program so that they could be called natively to improve the performance of the emulated program, reducing the manual set-up required, and achieving as much as 31-times speedup compared to manually curated native calls.
Keywords
Emulation, Shared Libraries, QEMU, Systems Programming, Performance, Optimisation, Operating Systems, Architecture
Staff
[Tom Spink]{tcs6}