Using a SSD greatly speeded up VMWare on my iMac
Fusion Drive is too slow to run VMs. Buy a SSD.
Hi, it’s Takuya. I’m using VMWare on macOS to build my app called Inkdrop for Windows and Linux. But I had a big problem that my virtual machines (especially Windows) are so sluggish. The mouse cursor often becomes sandglass whenever I click somewhere. It’s almost unusable.
So I set up an AWS EC2 instance(m5.large) for Windows build but it was annoying that I have to launch and stop the instance every time and I sometimes forgot to stop it. Besides, I felt uneasy to use it because it costs hourly ($0.124/h).
I’ve tried a lot of tips that I found on the internet for improving the VMWare performance but those all only solved a little or nothing. Still unusable. So I decided to install a SSD and that worked drastically to solve this issue. My iMac has a Fusion Drive but it seems to be not optimized for VMs. I would like to share my tips to solve VMWare’s performance issue.
Performance with Fusion Drive
I ran winsat
command to check the random read/write speeds:λ winsat disk -drive c -write -ran
Windows システム評価ツール
> 実行中: 機能の列挙 ''
> 実行時間 00:00:00.00
> 実行中: 記憶域の評価 '-drive c -write -ran'
> 実行時間 00:00:14.98
> Disk Random 16.0 Write 1.95 MB/s
> 合計実行時時間 00:00:15.39λ winsat disk -drive c -read -ran
Windows システム評価ツール
> 実行中: 機能の列挙 ''
> 実行時間 00:00:00.00
> 実行中: 記憶域の評価 '-drive c -read -ran'
> 実行時間 00:00:10.97
> Disk Random 16.0 Read 1.57 MB/s
> 合計実行時時間 00:00:11.05
Read speed is 1.95 MB/s and write speed is 1.57 MB/s…too slow.
Time for building my app took 7m 37.9s.
Performance with SSDC:\WINDOWS\system32>winsat disk -drive c -write -ran
Windows System Assessment Tool
> Running: Feature Enumeration ''
> Run Time 00:00:00.00
> Running: Storage Assessment '-drive c -write -ran'
> Run Time 00:00:00.42
> Dshow Video Encode Time 0.00000 s
> Dshow Video Decode Time 0.00000 s
> Media Foundation Decode Time 0.00000 s
> Disk Random 16.0 Write 332.60 MB/s
> Total Run Time 00:00:00.58C:\WINDOWS\system32>winsat disk -drive c -read -ran
Windows システム評価ツール
> 実行中: 機能の列挙 ''
> 実行時間 00:00:00.00
> 実行中: 記憶域の評価 '-drive c -read -ran'
> 実行時間 00:00:00.20
> Dshow ビデオ エンコード時間 0.00000 s
> Dshow ビデオ デコード時間 0.00000 s
> メディア ファンデーション デコード時間 0.00000 s
> Disk Random 16.0 Read 444.36 MB/s 8.2
> 合計実行時時間 00:00:00.25
Read speed has been increased to 332.60 MB/s and write became 444.36 MB/s. Cool! It is working quite well without seeing sandglass cursor so far.
Time for building my app took 4m 50.2s. It got shrunk about 3 minutes — Not bad.
VMWare Configurations
I found that Bus type setting of Hard Disk affects VM’s I/O a lot. It was set as IDE on my VM but SCSI worked much better.
Installing an external SSD via Thunderbolt
What I bought are WD BLACK SN750 NVMe 500GB (¥13,169):
And a SSD case that supports Thunderbolt 3 by TREBLEET (¥14,899):
Unpack them…
Put the SSD on the case:
And then, connect it to the mac. It worked well as I expected.
Cool! I’m happy that I could avoid buying another computer just for building my app for other platforms.
Conclusion
Buy a SSD if you are on Fusion Drive. It doesn’t cost so much in comparison with spending a looooooot of time to tweak VMWare configurations.