1. 动机#
iOS版UTM因为缺乏Hypervisor,虚拟机执行效能低下。 在不越狱的情况下,唯一一个能加速虚拟机执行速度的就是「JIT」加速技术了。 但是iOS 17之后启用JIT加速非常复杂,一定得靠电脑,而且使用的时候还不能拔掉线。 不禁让人怀疑是否值得花时间启用JIT? JIT对UTM虚拟机的性能来说真的那重要吗? 跑纯文字UTM Linux虚拟机值不值得启用JIT呢? 这篇文章将试图回答这些问题。
UTM有许多版本,「UTM」需要侧载,并且用电脑启用JIT。 「UTM HV」是设计给TrollStore使用的。 UTM HV本身就有启用JIT,无论有无通过TrollStore启动皆然。 而「UTM SE」是拔除所有JIT加速的最慢速版本,完全不能使用JIT,这样做目的是为了能成功在App Store上架。
我将对比「UTM启用JIT」和「UTM SE」这两个版本的UTM,执行同一个Linux虚拟机的速度差异。 本实验主要是看JIT的有无对虚拟机效能的影响,以此得出来的数值可作为后进参考,让你知道值不值得启用JIT。
2. 实验方法#
- 装置:iPad Air 6 M2
- 系统版本:iOS 18.0.1
- UTM版本:4.5.4
- 虚拟机:UTM Gallery的Debian 11 ARM64。 CPU分配8核心,启用强制多核心,RAM分配2048MB。 开机后系统套件更新到最新。
关于我怎么安装两个UTM的:使用 Feather iOS侧载UTM IPA,Bundle ID跟App Store的版本不一样,再于App Store下载UTM SE。 UTM测试完之后,用文件APP到UTM的文件夹,分享.utm文件到另一个UTM SE即可完成虚拟机复制。
JIT启用方法:通过SideJITServer连着线启用。
3. 比较启用JIT前后的速度#
使用UTM Gallery提供的Debian 11映像文件做对比,测试开机、Docker执行速度、Unixbench跑分。 虽然没有GPU加速,但还是能测试X11图形程序效能,从点击响应时间来看是否堪用。
启动速度比较,从虚拟机开机到出现LightDM登录画面:
- 有JIT:40秒
- 无JIT:140秒
Docker指令执行hello-world所耗费时间比较:
- 有JIT:3秒
- 无JIT:14秒
Unixbench 5.1.3分数测试CPU性能,使用指令测试,分数越高越好:sudo NUMBER_OF_PROCESSORS=8 ./Run whets dhry
- 有JIT:754
- 无JIT:129
根据 postmarketOS Wiki,754这个数字大约是接近Qualcomm Snapdragon 210的效能,但因为QEMU的CPU是模拟的,实际上Apple M2的分数不可能这么低,与实机比较并不准确。
运行图形程序GIMP的速度比较 :
- 有JIT:启动约15秒,启动后按钮点选速度一秒内就有回应,堪用。
- 无JIT:启动约100秒,启动后按钮点击速度平均要等5秒,堪用… 吗?
至于浏览器吗,有JIT加速的虚拟机开Chromium看网页勉强可以,但播放720p的Youtube视频依然卡的要命,因此不要强求了。
4.结论#
这下知道JIT的厉害了吧!
有JIT开机40秒 vs 没JIT开机140秒,这还是在较新的iOS设备执行的结果,旧款装置UTM JIT的差距更大。
我另外在iPhone SE 1 (支持TrollStore)测试,结果就是启用JIT的UTM虚拟机两分钟内开机,而UTM SE光开机就花了20分钟以上。
JIT技术确实是在不越狱的情况下,大幅提升UTM虚拟机效能的方式。 但是由于JIT启用过程不方便,依然没有实用性,没了电脑就只剩慢乎乎的UTM SE能用。 从上面的结果知道了,UTM SE的效能几乎很难撑得起图形界面,只能够用于跑纯文字的Linux虚拟机。 又,根据Unixbench结果,即使是纯文字虚拟机,UTM SE性能依然会大幅下降,比不上UTM JIT的速度。