qemu-server/PVE/QemuServer
Friedrich Weber 95f1de689e vm start: set higher timeout if using PCI passthrough
The default VM startup timeout is `max(30, VM memory in GiB)` seconds.
Multiple reports in the forum [0] [1] and the bug tracker [2] suggest
this is too short when using PCI passthrough with a large amount of VM
memory, since QEMU needs to map the whole memory during startup (see
comment #2 in [2]). As a result, VM startup fails with "got timeout".

To work around this, set a larger default timeout if at least one PCI
device is passed through. The question remains how to choose an
appropriate timeout. Users reported the following startup times:

ref | RAM | time  | ratio (s/GiB)
---------------------------------
[1] | 60G |  135s |  2.25
[1] | 70G |  157s |  2.24
[1] | 80G |  277s |  3.46
[2] | 65G |  213s |  3.28
[2] | 96G | >290s | >3.02

The data does not really indicate any simple (e.g. linear)
relationship between RAM and startup time (even data from the same
source). However, to keep the heuristic simple, assume linear growth
and multiply the default timeout by 4 if at least one `hostpci[n]`
option is present, obtaining `4 * max(30, VM memory in GiB)`. This
covers all cases above, and should still leave some headroom.

[0]: https://forum.proxmox.com/threads/83765/post-552071
[1]: https://forum.proxmox.com/threads/126398/post-592826
[2]: https://bugzilla.proxmox.com/show_bug.cgi?id=3502

Suggested-by: Fiona Ebner <f.ebner@proxmox.com>
Signed-off-by: Friedrich Weber <f.weber@proxmox.com>
2023-10-06 18:12:07 +02:00
..
Agent.pm tree wide cleanup of s/return undef/return/ 2020-10-16 16:20:05 +02:00
CGroup.pm add PVE::QemuServer::Cgroup 2020-11-24 12:00:33 +01:00
Cloudinit.pm cloudinit: restore previous default for package upgrades 2023-06-21 12:40:58 +02:00
CPUConfig.pm cpuconfig: add missing qemu 8.0 cpu models 2023-06-19 17:02:00 +02:00
Drive.pm drive: Fix typo in description of efitype 2023-09-06 11:55:11 +02:00
Helpers.pm vm start: set higher timeout if using PCI passthrough 2023-10-06 18:12:07 +02:00
ImportDisk.pm api: support VM disk import 2022-04-04 16:41:13 +02:00
Machine.pm cfg2cmd: fix +pveN machine types with pxe 2021-04-18 17:58:56 +02:00
Makefile introduce QMPHelpers module 2023-09-18 17:08:48 +02:00
Memory.pm add memory parser 2023-09-18 17:08:48 +02:00
Monitor.pm mon_cmd: add explicit return 2019-11-30 17:24:55 +01:00
OVF.pm parse ovf: untaint path when calling file_size_info 2022-03-11 10:45:59 +01:00
PCI.pm enable cluster mapped PCI devices for guests 2023-06-16 16:24:02 +02:00
QMPHelpers.pm introduce QMPHelpers module 2023-09-18 17:08:48 +02:00
USB.pm enable cluster mapped USB devices for guests 2023-06-16 16:24:02 +02:00