summary refs log tree commit diff stats
path: root/results/classifier/118/performance/2193
blob: 99960f9f5a8e213bb5ef03e7a1e4976dc71bf23c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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.