So, ich hatte endlich Zeit, mit dem Parameter ein wenig zu experimentieren.
Die schlechten Nachrichten vornweg: "qm migrate" kennt den Parameter nicht. Und der Parameter hat im Prinzip keinerlei Wirkung.
root@pve1-03:~# qm set 129 --migrate_downtime 0.05
update VM 129: -migrate_downtime 0.05
root@pve1-03:~# qm migrate 129 pve1-02 --migration_network 192.168.2.0/24 --migration_type insecure --online true --migrate_downtime 0.06
Unknown option: migrate_downtime
400 unable to parse option
qm migrate <vmid> <target> [OPTIONS]
root@pve1-03:~# qm migrate 129 pve1-02 --migration_network 192.168.2.0/24 --migration_type insecure --online true
2024-05-10 18:04:31 use dedicated network address for sending migration traffic (192.168.2.132)
2024-05-10 18:04:31 starting migration of VM 129 to node 'pve1-02' (192.168.2.132)
2024-05-10 18:04:31 starting VM 129 on remote node 'pve1-02'
2024-05-10 18:04:33 start remote tunnel
2024-05-10 18:04:34 ssh tunnel ver 1
2024-05-10 18:04:34 starting online/live migration on tcp:192.168.2.132:60000
2024-05-10 18:04:34 set migration capabilities
2024-05-10 18:04:34 migration downtime limit: 50 ms
2024-05-10 18:04:34 migration cachesize: 512.0 MiB
2024-05-10 18:04:34 set migration parameters
2024-05-10 18:04:34 start migrate command to tcp:192.168.2.132:60000
2024-05-10 18:04:35 migration active, transferred 110.4 MiB of 4.0 GiB VM-state, 147.1 MiB/s
2024-05-10 18:04:36 migration active, transferred 224.1 MiB of 4.0 GiB VM-state, 149.6 MiB/s
...
2024-05-10 18:04:52 migration active, transferred 2.0 GiB of 4.0 GiB VM-state, 144.7 MiB/s
2024-05-10 18:04:53 migration active, transferred 2.1 GiB of 4.0 GiB VM-state, 133.6 MiB/s
2024-05-10 18:04:54 migration active, transferred 2.2 GiB of 4.0 GiB VM-state, 132.4 MiB/s
2024-05-10 18:04:55 average migration speed: 195.9 MiB/s - downtime 106 ms
2024-05-10 18:04:55 migration status: completed
2024-05-10 18:04:59 migration finished successfully (duration 00:00:28)
Aber es kommt noch schlimmer. Ich habe für die Migration dann ein schnelleres Interface genutzt (mehr als die doppelte Bandbreite). Es wäre also zu erwarten, dass die Migration dann mit geringerer Downtime durchläuft, doch nope:
root@pve1-03:~# qm migrate 129 pve1-02 --migration_network 192.168.4.0/24 --migration_type insecure --online true
2024-05-10 19:20:57 use dedicated network address for sending migration traffic (192.168.4.132)
2024-05-10 19:20:57 starting migration of VM 129 to node 'pve1-02' (192.168.4.132)
2024-05-10 19:20:57 starting VM 129 on remote node 'pve1-02'
2024-05-10 19:20:59 start remote tunnel
2024-05-10 19:21:00 ssh tunnel ver 1
2024-05-10 19:21:00 starting online/live migration on tcp:192.168.4.132:60000
2024-05-10 19:21:00 set migration capabilities
2024-05-10 19:21:00 migration downtime limit: 10 ms
2024-05-10 19:21:00 migration cachesize: 512.0 MiB
2024-05-10 19:21:00 set migration parameters
2024-05-10 19:21:00 start migrate command to tcp:192.168.4.132:60000
2024-05-10 19:21:01 migration active, transferred 281.3 MiB of 4.0 GiB VM-state, 379.9 MiB/s
2024-05-10 19:21:02 migration active, transferred 563.0 MiB of 4.0 GiB VM-state, 470.0 MiB/s
2024-05-10 19:21:03 migration active, transferred 844.3 MiB of 4.0 GiB VM-state, 672.1 MiB/s
2024-05-10 19:21:04 migration active, transferred 1.1 GiB of 4.0 GiB VM-state, 656.6 MiB/s
2024-05-10 19:21:05 migration active, transferred 1.4 GiB of 4.0 GiB VM-state, 598.2 MiB/s
2024-05-10 19:21:06 migration active, transferred 1.7 GiB of 4.0 GiB VM-state, 328.6 MiB/s
2024-05-10 19:21:07 migration active, transferred 1.9 GiB of 4.0 GiB VM-state, 372.7 MiB/s
2024-05-10 19:21:08 migration active, transferred 2.3 GiB of 4.0 GiB VM-state, 293.8 MiB/s
2024-05-10 19:21:09 average migration speed: 457.0 MiB/s - downtime 113 ms
2024-05-10 19:21:09 migration status: completed
2024-05-10 19:21:12 migration finished successfully (duration 00:00:15)
Es sieht irgendwie danach aus, als kommt da irgendwann der Punkt, wo das System sagt: "Und nun rüber mit dem Rest!" und das gesetzte Downtime-Limit keinerlei Bedeutung mehr hat
Übrigens, wenn ich den Quelltext von QemuMigrate.pm richtig verstehe, wird das vorgegebene Limit nicht eingehalten, obwohl es zuvor gar nicht (intern) erhöht wurde, denn dann müsste im Output irgendwas von "auto-increased downtime to continue migration" enthalten sein ...
Sieht also doch ganz stark nach einem Bug aus und nicht im QemuMigrate.pm, sondern irgendwo in den Serverprozessen, die die Migration tatsächlich durchführen.
Ein paar Tests blieben auch unter 100ms Downtime (wenn migrate_downtime <= 50ms gesetzt), aber das Verhalten ist in dieser Hinsicht völlig undeterministisch und insbesondere hat kein einziger Test das eingestellte Limit auch nur annähernd erreicht.