Just some Internet guy

He/him/them 🏳️‍🌈

  • 0 Posts
  • 3 Comments
Joined 1Y ago
cake
Cake day: Jun 25, 2023

help-circle
rss

We’ve been using vector rendering for decades, this isn’t new at all. This just makes it better because supposedly now it can be offloaded to the GPU.

From the OS’s perspective it doesn’t care: it hands a rectangle to the application to render into along with some metadata like what scaling to render as. Then the application does what it needs to do to get the pixels in there.

This would be handled entirely in Qt, in this case, but any competing toolkit can also implement something similar and all.


Using VirtualBox is also how you get the impression virtual machines are slow and heavy. It served us well but it’s essentially obsolete at this point.

The virtio devices and drivers are much better overall and optimized for performance. VirtualBox is optimized to be user friendly and run most operating systems easily. It’s compatible but to do so, it relies a lot on emulating existing hardware. Virtio devices often rely on either shared memory for zero copy, or at least DMA and exposes higher level APIs. No point encoding and decoding SATA commands when you can just move raw data in and out of the VM.

We also have hardware with native VM support, so multiple VMs can talk directly to the network without going through the host at all. VirtualBox can’t make use of those either, as it requires IOMMU and the same stuff that powers VFIO.

KVM + QEMU is where it’s at. There’s also cloud-hypervisor which is supposed to be even better for cloud use cases.


It’s VMs. The overhead is not nearly as bad as you think it is, especially with the highly tuned cloud hypervisors. I’ve seen dual EPYC monsters running 300+ VMs. Server CPUs are basically designed for that kind of workload these days.

Virtualization tech is really, really good. On my desktop, I have a VM that runs Windows+SteamOS with a passed through GPU, game on it and everything. You wouldn’t know it’s a VM. The overhead is so low that I just let it run in the background most of the time. When it’s idling it basically just occupies RAM. You can’t really feel the VM on the host either, everything is as responsive as usual. As long as there’s enough resources for everyone, you can barely tell it’s a VM or not.

Modern CPUs have extensions to handle it at the processor level, and most operating systems have good paravirtualized devices, so there’s not a whole lot of overhead left other than the guest kernel and processes.