Abstract
QEMU is a system emulator that can emulate multiple platforms. Although QEMU can simulate the multi-core, but is round robin sequential execution in single thread, so can’t use advantage of underlying multi-core hardware. PQEMU is designed the multi-thread QEMU, so can use advantage of underlying multi-core hardware. Currently PQEMU emulator support target ARM platform. We ported target x86_64 platform to PQEMU. X86_64 platform support up to 255 cores emulation. PQEMU all threads concurrently execution. Currently PQEMU do not protect interrupt controller, so 2 or more threads to access interrupt controller, can cause race condition. We will implement two kinds of design avoid race condition, in PQEMU. These two kinds of design are PQEMU-BUS and PQEMU-LOCKS. To evaluate the design, we emulate a target x86_64 platform by separately running QEMU, PQEMU-BUS and PQEMU-LOCKS on Dell PowerEdge R910 machine, and measure them interrupt latency. QEMU emulating more than 16 cores, will not booting Linux operating system. So, QEMU measure to 16 cores. PQEMU-BUS and PQEMU-LOCKS measure to 255 cores. The experimental results show that in emulation 16 cores, PQEMU-BUS and PQEMU-LOCKS external interrupt latency had separately decreased 6.08% and 45.92% compared to QEMU. PQEMU-BUS and PQEMU-LOCKS interprocessor interrupt latency had separately decreased 99.23% and 99.71% compared to QEMU. In emulation 255 cores, PQEMU-LOCKS external interrupt latency and interprocessor interrupt latency had separately decreased 30.49% and 43.44% compared to PQEMU-BUS. The results show that the two designs avoid the race condition, and the decreased interrupt latency. The results show, PQEMU-LOCKS interrupt latency less than PQEMU-BUS.