qemu/tests
Daniel P. Berrangé 1456e90653 hw/virtio: reset virtio balloon stats on machine reset
When a machine is first booted, all virtio balloon stats are initialized
to their default value -1 (18446744073709551615 when represented as
unsigned).

They remain that way while the firmware is loading, and early phase of
guest OS boot, until the virtio-balloon driver is activated. Thereafter
the reported stats reflect the guest OS activity.

When a machine reset is performed, however, the virtio-balloon stats are
left unchanged by QEMU, despite the guest OS no longer updating them,
nor indeed even still existing.

IOW, the mgmt app keeps getting stale stats until the guest OS starts
once more and loads the virtio-balloon driver (if ever). At that point
the app will see a discontinuity in the reported values as they sudden
jump from the stale value to the new value. This jump is indigituishable
from a valid data update.

While there is an "last-updated" field to report on the freshness of
the stats, that does not unambiguously tell the mgmt app whether the
stats are still conceptually relevant to the current running workload.

It is more conceptually useful to reset the stats to their default
values on machine reset, given that the previous guest workload the
stats reflect no longer exists. The mgmt app can now clearly identify
that there are is no stats information available from the current
executing workload.

The 'last-updated' time is also reset back to 0.

IOW, on every machine reset, the virtio stats are in the same clean
state they were when the macine first powered on.

A functional test is added to validate this behaviour with a real
world guest OS.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20250204094202.2183262-1-berrange@redhat.com>
Acked-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2025-02-21 07:18:42 -05:00
..
avocado tests/functional: Convert the vnc test 2025-01-02 07:44:28 +01:00
bench tests/bench: Rename test_akcipher_keys.inc -> test_akcipher_keys.c.inc 2024-09-20 10:08:24 +03:00
data tests: acpi: update expected blobs 2025-01-15 13:07:25 -05:00
decode tests/: spelling fixes 2023-09-08 13:08:52 +03:00
docker dockerfiles: Remove 'MAINTAINER' entry in debian-tricore-cross.docker 2025-01-11 11:22:01 +00:00
fp tests/fp: Set default NaN pattern explicitly 2024-12-11 15:31:04 +00:00
functional hw/virtio: reset virtio balloon stats on machine reset 2025-02-21 07:18:42 -05:00
guest-debug tests/tcg: Stop using exit() in the gdbstub testcases 2024-11-18 15:54:34 +00:00
image-fuzzer image-fuzzer: Use OSerror.strerror instead of tuple subscript 2019-11-05 16:36:11 +01:00
include tests: add missing generated sources to testqapi 2020-10-17 10:45:50 -04:00
keys tests/vm: Add Haiku test based on their vagrant images 2020-11-17 09:45:24 +01:00
lcitool tests/lcitool: remove temp workaround for debian mips64el 2025-01-11 11:22:01 +00:00
migration-stress tests/migration: Disambiguate guestperf vs. a-b 2024-12-12 10:25:39 -03:00
multiboot Remove superfluous .gitignore files 2020-10-13 12:48:17 +02:00
perf/block/qcow2 tests/perf: Test lseek influence on qcow2 block-status 2019-06-04 15:20:41 +02:00
qapi-schema tests/qapi-schema: Drop temporary 'prefix' 2024-09-10 13:22:47 +02:00
qemu-iotests python: disable too-many-positional-arguments warning 2024-11-25 11:03:14 +01:00
qtest tests/qtest/vhost-user-test: Use modern virtio for vhost-user tests 2025-02-21 07:18:42 -05:00
rocker tests: Avoid non-portable 'echo -ARG' 2017-07-11 17:45:00 +02:00
tcg tests/tcg/aarch64: force qarma5 for pauth-3 test 2025-01-13 12:35:34 +00:00
tsan block: remove AioContext locking 2023-12-21 22:49:27 +01:00
uefi-test-tools tests/data/uefi-boot-images: Add RISC-V ISO image 2024-07-03 18:14:06 -04:00
unit Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
vm tests/vm: allow interactive login as root 2025-01-11 11:22:01 +00:00
vmstate-static-checker-data hw: Replace anti-social QOM type names 2021-03-19 15:18:43 +01:00
dbus-vmstate-daemon.sh tests: add dbus-vmstate-test 2020-01-06 18:41:32 +04:00
Makefile.include tests/functional: enable pre-emptive caching of assets 2024-09-04 10:52:29 +02:00
meson.build tests/migration: Disambiguate guestperf vs. a-b 2024-12-12 10:25:39 -03:00
test-qht-par.c
vhost-user-bridge.c error handling: Use RETRY_ON_EINTR() macro where applicable 2023-01-09 13:50:47 +01:00