My story of using Linux libvirt/KVM to get an ad hoc remote desktop

December 7, 2022

The other day, I was working from home and wanted to bisect Firefox versions with mozregression (in order to chase down my Firefox window to tab bug). This normally works okay, but this time around there were two intertwined problems with it. The first was that mozregression's downloads were unusually slow, even for my home DSL link. The second is that having Firefox start up at random, delayed times is kind of disruptive to what else I was doing. The second factor is always there, but unpredictably slow downloads make it worse (when they're fast enough, I don't try to do anything else during a mozregression run).

My work Fedora machine has better bandwidth for downloads, but running Firefox remotely over SSH's X forwarding is at best painful and the better bandwidth wouldn't necessarily help if some of the problems were on Mozilla's side. Then I had an idea: my work machine also has a number of Fedora installs in VMs that run under libvirt. So I fired up a Fedora VM, used virt-viewer to log into its desktop, installed mozregression (via pipx), and ran everything inside my libvirt remote'd VM desktop session. When the downloads were running slow, I could switch to working on other things and Firefox starting at some unpredictable point wouldn't disrupt me, because it was all contained in the virt-viewer remote desktop window.

(I was expecting the remote desktop itself to be decidedly slow, but it was actually pretty usable and definitely faster than running Firefox over 'ssh -X' would have been, partly because Firefox can want to make a lot of small X requests.)

Using a libvirt VM this way feels simultaneously strange and perfectly sensible. On the one hand, it worked well; on the other hand, it's using a giant and peculiar machine to mostly get remote X for a single program (although not entirely; something like xpra would still have had the 'unpredictable interruptions' problem).

I'll probably do this again, for mozregression and anything else like this. For mozregression, the experience of not being interrupted by it wanting me to check a new Firefox build is sufficiently appealing that I may use a Fedora VM desktop the next time around even if I'm at work at the time.

PS: The one issue I ran into is that on Fedora /tmp is a tmpfs, and this has the usual problem. My Fedora VMs only have 4 GB of RAM, and mozregression puts all of the Firefox builds it downloads over the course of the bisection in /tmp; the combination filled up /tmp and caused a spurious and fortunately recoverable mozregression failure until I realized what was wrong and deleted some things.

(This elaborates on a Fediverse post I made.)

Written on 07 December 2022.
« Why being able to partially distrust a Certificate Authority is good
Python version upgrades and deprecations »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Wed Dec 7 22:05:05 2022
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.