Why are Apple Silicon VMs so different?

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • lima

    Linux virtual machines, with a focus on running containers

  • For Linux, and if you only need to run CLI tools, I've been very happy with Lima [0]. It runs x86-64 and ARM VMs using QEMU, but can also run ARM VMs using vz [1] (Apple virtualization framework[2]) that is very performant. Also, along with the project colima [3] you can easily start Docker/Podman/Kubernetes instances, totally substituting Docker Desktop for me.

    For desktop environments (Linux/Windows) I've used UTM [4] with mixed success. Although it's been almost a year since last time I used it, so maybe it runs better now

    There's also Parallels, and people say it's a good product, but it's around USD/EUR 100, and I haven't tested it as I don't have that need.

    And there's VMWare Fusion but... who likes VMWare? ;)

      [0] - https://lima-vm.io

  • kvm-guest-drivers-windows

    Windows paravirtualized drivers for QEMU\KVM

  • There's mature VirtIO drivers for just about everything already, under the virtio-win umbrella: https://github.com/virtio-win/kvm-guest-drivers-windows

    My desktop PC is using libvirt+qemu (on an Arch host. I use Arch, btw) to PCI passthru my RTX 4090 GPU to a Windows guest. I installed the guest initially with emulated SATA for the main drive. Once Windows was up and running, I installed virtio-win and the guest is now using virtIO accelerated drivers for the network interface, main disk. I'm also sharing some filesystems using virtio-fs.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • qemu

  • Add `ENV ERL_FLAGS="+JPperf true"` to your Dockerfile and it will build just fine cross platform. The flag just changes some things during build time and won’t affect runtime performance.

    [1] https://gitlab.com/qemu-project/qemu/-/issues/1034

  • burrito

    Wrap your application in a BEAM Burrito!

  • syncthing

    Open Source Continuous File Synchronization

  • Syncthing has had on their roadmap for 9.5 years to support iOS but hasn’t due to lack of interest by the developers to devote the time to make it.

    https://github.com/syncthing/syncthing/issues/102

    macOS is supported though.

    And Syncthing via 3rd parties does support iOS.

  • UnnaturalScrollWheels

    Invert scroll direction for physical scroll wheels while maintaining "Natural" scrolling for trackpads on MacOS

  • For gaming, you want to use Crossover or the FOSS Whisky app. Parallels only runs Arm Windows which then emulates x86. This is much much slower than using Wine to translate system calls and Apple's Game Porting Toolkit to handle the Vulkan or DirectX graphics. Crossover and Whisky take care of the internals of those for you. Give those a shot, I think you'll find it much better than a full VM. In my experience some games do run better this way than the MacOS versions, though that's usually because the Mac client wasn't compiled for Apple Silicon and so Rosetta is emulating. Unfortunately, I'm pretty sure WOW is already Apple Silicon native, so you probably won't get better performance this way.

    For the mouse stuff, try a USB mouse if you're not already using one, combined with https://github.com/ther0n/UnnaturalScrollWheels

    That works really well for me to get a Windows-like mouse curve.

    TLDR skip the emulation and go for translation layers via Crossover, Whisky, and GPT. It'll be much faster. The mouse thing is separate and has nothing to do with the graphics layer.

    ------

    Personally though, I'd just pay $20 a month for Geforce Now. It is much much faster than even the highest end Mac.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts