performance: 0.989 virtual: 0.950 boot: 0.937 graphic: 0.929 files: 0.869 device: 0.818 ppc: 0.757 architecture: 0.755 mistranslation: 0.728 user-level: 0.690 hypervisor: 0.667 PID: 0.641 VMM: 0.623 network: 0.614 semantic: 0.610 i386: 0.603 x86: 0.600 register: 0.582 vnc: 0.580 peripherals: 0.577 risc-v: 0.576 assembly: 0.562 debug: 0.529 TCG: 0.519 kernel: 0.501 KVM: 0.489 permissions: 0.479 arm: 0.431 socket: 0.431 qemu-system-mips64el 70 times slower than qemu -ppc64, -riscv64, -s390x Description of problem: I installed Debian 12 inside a `qemu-system-mips64el` virtual machine. The performances are awfully slow, roughly 70 times slower than other qemu targets on the same host, namely ppc64, riscv64, s390x. The idea is to recompile and test an open source project on various platforms. Using a command such as `time make path/to/bin/file.o`, I compiled one single source file on the host and within qemu for various targets. The same source file, inside the same project, is used in all cases. The results are shown below (the "x" number between parentheses is the time factor compared to the compilation on the host). - Host (native): 0m1.316s - qemu-system-ppc64: 0m31.622s (x24) - qemu-system-riscv64: 0m40.691s (x31) - qemu-system-s390x: 0m43.459s (x33) - qemu-system-mips64el: 48m33.587s (x2214) The compilation of the same source is 24 to 33 times slower on the first three emulated targets, compared to the same compilation on the host, which is understandable. However, the same compilation on the mips64el target is 2214 time slower than the host, roughly 70 times slower than other emulated targets. Why do we have such a tremendous difference between qemu mips64el and other targets? Additional information: For reference, here are the other qemu to boot the other targets. Guest OS are Debian 12 or Ubuntu 22. ``` qemu-system-ppc64 -smp 8 -m 8192 -nographic ... qemu-system-riscv64 -machine virt -smp 8 -m 8192 -nographic ... qemu-system-s390x -machine s390-ccw-virtio -cpu max,zpci=on -smp 8 -m 8192 -nographic ... ``` The other targets use `-smp 8` while qemu-system-mips64el does not support smp. However, the test compiles one single source file and does not (or marginally) use more than one CPU. Arguably, each compilation addresses a different target, uses a different backend, and the compilation time is not necessarily identical. OK, but 70 times slower seems way too much for this.