Sys-usb very slow read / write to external drive

Since a fresh install of 4.3, as a few have mentionned here, sys-usb is a lot slower than 4.2.4. I did follow the recommendation to stop and disable the minimal-usbvm but still, very slow transfer speeds. the througput was about 30mb/s for an external NVME. This estimated a copy of about 1 hour. Ran the same copy on a non qubes os computer with the same external NVME device and it copied in 15 minutes. The qubes backup also took a lot longer than I expected. This is not a super big file, we’re talking 134 Gigs. I know a lot of work has been done in sys-usb for 4.3 but the 4.2.4 version was really faster for me. Hopefully this will be adressed in a future update

Might be related to:

yeah that looks like it. Also, I just moved from an AMD machine to an Intel machine and have the same issue. Fresh install on intel with the default fedora-42 for sys-usb. minimal-usbvm is disabled and yet it’s very slow

This is a known pain point that several Qubes 4.3 users have reported. A few things worth understanding and trying:

Why it’s slower in 4.3

The sys-usb architecture changed in 4.3, with USB traffic now going through additional virtualization layers and potentially more overhead from the new qrexec/qubesdb handling. The tradeoff was made for security improvements, but it clearly has a throughput cost.

Things worth trying

The minimal-usbvm disable you already did is the main recommendation, but there are a few other avenues. You can check whether the USB controller is being passed through directly to sys-usb via PCI passthrough rather than emulated — if it’s not a clean passthrough, that alone can tank speeds significantly. In the Qubes device manager or via qvm-pci, verify your USB controller is directly assigned to sys-usb with the permissive flag if needed.

You can also try bumping the memory allocated to sys-usb, as low memory can cause the VM to thrash and slow I/O. 4GB instead of the default is worth testing.

Another thing to check is whether you’re copying through an intermediary qube. If data is flowing through dom0 or another VM as a relay rather than directly, that adds significant overhead.

The broader picture

Your comparison is pretty telling — 30 MB/s vs what should be several hundred MB/s for an NVMe over USB 3.x is a major regression. The 4x time difference (15 min vs ~60 min) suggests it’s not just minor overhead but something more fundamental in how the data path is routed.

It’s worth filing a bug report on the Qubes GitHub if you haven’t already, with your hardware details and the specific throughput numbers. The developers have been responsive to these kinds of benchmarked regressions, and your data point (especially the direct comparison) is exactly the kind of evidence that helps prioritize fixes.

1 Like

thanks for your detailed reply. I will go over it and see if anything helps. The controllers are passed directly to sys-usb as I see the usb devices in the devices always connected to the qube. I’ll have to check the permissive flag. I’ll also try increasing the the ram of sys-usb. Yes, it was passing via another qube as I thought that one of the changes in 4.3 was that sys-usb couldn’t mount disks directly anymore.

Speaking of 4.3 relases notes, one thing I will point is that nowhere in the release notes ( Qubes OS 4.3 release notes — Qubes OS Documentation ) is this complete revamping of sys-usb mentioned. There is a small portion that says that USBVM should improve performance but nothing else. It would have been nice to have a heads up before people upgraded to 4.3 as the changes described are clearly not trivial and have impacts on performance, as we see.

1 Like

That’s not the first post from @Theseus that looks like AI-generated content and that contains strange if not dangerous commands without any security warning.

Check that before following the advice: