
Source: GitLab Docs $ fio -randrepeat=1 -ioengine=libaio -direct=1 -gtod_reduce=1 -name=test -bs=4k -iodepth=64 -readwrite=randrw -rwmixread=75 -size=512M -filename=fio_test This is a standard way to measure I/O performance.

All commands were run within a filesystem shared with the host as described above. The data shown in the following section uses the Parallels Hypervisor. Parallels Desktop was tested under both the Apple Hypervisor and the Parallels Hypervisor, yielding similar results. Parallels Desktop mounts shared directories under /media/psf. Parallels Desktop 16: The other of the two main commercial virtual machine environments for macOS hosts.

VMware Fusion versions 8.5.10 and 11.5.7 were both tested. VMware Fusion uses HGFS as its filesystem adapter. VMware Fusion: One of the two main commercial virtual machine environments for macOS hosts. Note that the Vagrant version used in testing is a bit old, and it sits on top of VMware 8. However, Vagrant ships its own filesystem adapter based on NFS, which makes it interesting to benchmark. Vagrant: Vagrant is not itself a virtualization environment it must sit on top of one. $ docker -versionĭocker Desktop for Mac, osxfs: This is an older filesystem for Docker Desktop for Mac, which is intended to be replaced by gRPC FUSE. Extensive discussion about the pros and cons of this adapter can be found in this GitHub thread. However, it uses a custom filesystem adapter called gRPC FUSE. $ multipass -versionĭocker Desktop for Mac, gRPC FUSE: Like Multipass, Docker Desktop for Mac also sits on top of HyperKit.

On macOS, it uses HyperKit for its virtualization environment and SSHFS for its file system adapter. Multipass: Solution from Canonical, the makers of Ubuntu, to spin up quick Ubuntu Server instances. MethodologyĪll tests were run on a mid-2015 MacBook Pro with a 2.8 GHz Intel Core i7 running macOS 10.14.6.

Below, I call the different approaches to shared folders “filesystem adapters”. There are many ways that different providers attempt to solve the problem of shared folders, and this is what my benchmarks were focused on. However, shared folders between the host and VM continue to be a major bottleneck. Modern virtual machines have near-native performance on CPU and Memory. On my MacBook Pro, my preferred setup for software development is to use Mac-native development tools like Sublime Text 3 or VSCode paired with a Linux VM running in the background. In this post, I compare multiple solutions to this problem, with a focus on how they perform with I/O operations. Running a Linux VM from my MacBook Pro is how I spend much of my time during software development. Comparing Linux Environments on macOS Host
