1
xuan_lengyue 2022-10-08 09:45:13 +08:00
一个是 WINE ,一个是模拟器,肯定不一样的。
有些 QEMU 能做的事 WINE 做不了。 |
2
tool2d OP |
3
podel 2022-10-08 10:07:02 +08:00
很多 Windows API 都能转成 ARM 原生指令集?
|
4
tool2d OP @podel ExaGear 有两个模块,一个是把 x86 指令转成 arm 指令。
另一个模块是 wine ,负责模拟 windows api 环境。后者和 ExaGear 关系不大,是开源社区在维护的。 也不是所有指令都能翻译,游戏用到了 AVX 指令就没办法翻译了。 |
5
edimetia3d 2022-10-08 10:16:03 +08:00
mark. 我也很好奇. 有没有了解的同学?
感觉 qemu 应该是一个虚拟机, 会有一个 loop 来 dispatch instruction? exagear 这样的方案应该是动态转译指令,然后直接 JIT 的用 native CPU 来跑? |
6
0o0O0o0O0o 2022-10-08 10:18:27 +08:00 via iPhone
关于为什么比 QEMU 快,应该能在这里找到一些看起来合理的类似产品的解释:
https://www.zhihu.com/question/48522805 至于 Android 上的 QEMU 如何快起来应该可以看这里: https://twitter.com/kdrag0n/status/1492712401262710784 |
7
podel 2022-10-08 10:21:04 +08:00
ExaGear 应该跟 ARM 版本的 Windows 10/11 差不多。
正常的程序 其实内部有很多的 Windows 系统调用的。 直接 QEMU 的话,所有的 Windows API 都是 ARM 模拟的所以慢。 但是一部分 计算用翻译,WIN API 换成原生 ARM 这样速度就会快很多。 速度上 应该是 原生 X86WIN > Windows on ARM >= ExaGear > 纯 QEMU |
8
mxT52CRuqR6o5 2022-10-08 11:15:07 +08:00
qemu 里跑 superpi ,隔着一层操作系统,我对 jit 能做到多少效果表示怀疑
ExaGear 里跑的话,理论上 jit 可以直接感知到程序,能更好的 jit |
9
ysc3839 2022-10-08 13:04:09 +08:00 via Android
你测试 qemu 是跑完整系统?没有经过 Wine ?那没有可比性呀,都没做到控制变量。
|
10
Red54 2022-10-08 14:10:31 +08:00
ExaGear 没有运行完整系统,要对比的话应该用 QEMU 的用户模式( User Mode )运行 X86 的 WINE 来对比。
|
11
flynaj 2022-10-08 14:41:44 +08:00 1
qemu TCG 是最慢的 性能顺序 kvm, xen, hax, hvf, nvmm, whpx ,tcg
|
12
tool2d OP @ysc3839 昨晚测试的时候,用 Qemu 跑了三个 x86 系统,分别是 WinPE, TinyCoreLinux, WinXP 。
其中 WinXP 速度最快,Linux 最慢,原因不明。因为运行实在太慢,就没进一步测试 wine 了。 感觉 super pi 就是浮点运算,也没涉及太多的图形和系统 API ,所以觉得 wine 这个变量影响应该不会太大。 |
13
tool2d OP |
14
7c00 2022-10-08 16:14:08 +08:00
我这里提供一个案例,termux 里跑 solc 编译任务。
原生不到 100ms: qemu user mode 运行 x86 要 800ms: |
15
7c00 2022-10-08 16:23:59 +08:00
这是 fish 的 time ,看走眼了,原生是 200 多 ms ,看起来差距也不是特别大
|
16
kkocdko 2022-10-08 17:07:57 +08:00
也许可以推断出楼主对现代虚拟化技术栈很不熟悉。
|
17
tool2d OP @7c00 我也试了一下用 usermode 来运行 superpi, 从结果来看,x86 elf 运行速度比 windows exe 还要慢。
看来 qemu 的 system mode 和 user mode 区别,仅仅只是环境而已。 而且 usermode 不能启用 tcg 加速?那真的是裸奔上阵,超勇。 |
18
secondwtq 2022-10-08 22:21:02 +08:00
不建议只跑一个 benchmark 。
|
19
zhhww57 2022-10-09 01:02:20 +08:00
是用的 qemu-static-i386? 你试试看这样,本地运行个 x server ,然后用 qemu-static-i386 运行一下 x86 的 wine ,图形界面会连 x server ,测一下
|
20
Red54 2022-10-09 11:04:07 +08:00
|
21
Red54 2022-10-09 11:06:23 +08:00
|
24
tool2d OP |
25
Red54 2022-10-09 14:12:24 +08:00
|
26
tool2d OP @Red54 强烈怀疑这台机器配置了 arm 版本的 kvm ,你看看有没有 /sys/module/kvm 目录呢?
用户模式运行速度也太快了。 我用别人编译版本的 qemu-i386 ,什么加速参数都加不了,就非常卡顿。 |
28
tool2d OP @Red54 QEMU 的纯 CPU 软件模式能跑那么快?我不信啊。
一点没硬件加速的 QEMU ,运行比蜗牛还慢。但是只有 KVM/HAXM ,那就是本质的飞跃。 近期有国产的 ARM 芯片,就是用到了 KVM ,理论上速度应该和你贴图差不多。 |
29
tool2d OP |