i440fx still the default?

ALFi

Member
Nov 9, 2022
7
4
8
the i440fx chipset in qemu is very old.
the successor Q35 (released from intel in 2007) is available in QEMU since ~2012.

in QEMU 8.2 they even started to remove versions of the i440fx
"The old machine types pc-i440fx-1.4 to pc-i440fx-1.7 have been removed; use a newer machine type instead"

so the assumption is that other versions of the i440fx will also be dropped in the future (i mean the 440 has limitations, hence they build the Q35 not for fun in QEMU).

even the proxmox documentation warns about this:
"Very old machine versions might become deprecated in QEMU. For example, this is the case for versions 1.4 to 1.7 for the i440fx machine type. It is expected that support for these machine versions will be dropped at some point."

yet when creating a VM in proxmox the i440fx is the default, isn't it time to change the default to Q35, so that the average (unaware) user has less pain in the future when the 440 is removed completely?
 
I ask myself this question.
I always use q35.
Later change is not that big deal.
 
The old machine types pc-i440fx-1.4 to pc-i440fx-1.7 have been removed; use a newer machine type instead

This is in reference to those specific releases of i440fx - meaning 1.4 and 1.7 - not the i440fx family.

The current i440fx release is in the 4.x range.

Why use one... or the other?

It appears that the reason i440fx is used is simply that it is more widely used, and the additional features of q35 are rarely needed.

It doesn't appear that either is more performant for virtio-*, and it's not clear that either is more performant in general. It seems that from one release to another, or one specific setup to another, one is sometimes slightly better.

It seems that q35 should be more performant for native device passthrough... but with the way the device emulation actually works, in practice... that's not clear.

The presentation introducing the q35 doesn't mention anything about a performance advantage:
https://www.linux-kvm.org/images/0/06/2012-forum-Q35.pdf
It sounds more like an argument of "as devs, we want funner stuff to work with" to me.

The only actual benchmark I could find was this:
- https://browser.geekbench.com/v5/cpu/compare/4589842?baseline=4589992
- https://browser.geekbench.com/v5/cpu/4589842
- https://browser.geekbench.com/v5/cpu/4589992
It gives a slight edge to the q35 at some tasks, but it DRASTICLY underperforms i440fx at others.
HOWEVER, there's no date, version number, etc (possibly 2020/2021 based on the kernel version).

The anecdotal reviews contradict one another - some saying the i440fx was better, even at GPU - others saying the q35 was better - especially at idling (not exactly the best measure, but... meh).

It does seem that the only reason i440fx is the default is that switching the default would mean that fewer things would work by default - meaning that, given no flags or options, having something that did work on i440fx switch to q35 on the next boot could cause a failure mode.

Which to pick?

Without any reliable benchmarks and only anecdotal reviews...

- probably the i440fx for single core VMs, especially single-core machine learning
- possibly the q35 for native passthru and multi-core VMs
- (the benchmarks seem... random)

See
- https://www.qemu.org/docs/master/system/qemu-manpage.html
- https://wiki.qemu.org/Features/Q35
- https://www.qemu.org/docs/master/system/i386/pc.html
- https://wiki.qemu.org/Documentation/Platforms/PC
- https://wiki.qemu.org/Features/Version3.0
- https://github.com/search?q=repo:qemu/qemu i440fx-&type=code
- https://forum.proxmox.com/threads/q35-vs-i440fx.112147/
- https://mathiashueber.com/performance-tweaks-gaming-on-virtual-machines/
- https://altechnative.net/virtualized-windows-10-i440fx-vs-q35/
- https://forum.level1techs.com/t/i44...16-3-0-on-i440fx-chipset-is-this-right/155212
 
Last edited:
  • Like
Reactions: Daniel_Dog