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的速度。