Using a SSD greatly speeded up VMWare on my iMac

Fusion Drive is too slow to run VMs. Buy a SSD.

Using a SSD greatly speeded up VMWare on my iMac

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.