]> git.proxmox.com Git - mirror_qemu.git/blame - docs/virtio-balloon-stats.txt
rbd: Fix bugs around -drive parameter "server"
[mirror_qemu.git] / docs / virtio-balloon-stats.txt
CommitLineData
045a7085
LC
1virtio balloon memory statistics
2================================
3
4The virtio balloon driver supports guest memory statistics reporting. These
5statistics are available to QEMU users as QOM (QEMU Object Model) device
6properties via a polling mechanism.
7
8Before querying the available stats, clients first have to enable polling.
9This is done by writing a time interval value (in seconds) to the
10guest-stats-polling-interval property. This value can be:
11
12 > 0 enables polling in the specified interval. If polling is already
13 enabled, the polling time interval is changed to the new value
14
15 0 disables polling. Previous polled statistics are still valid and
16 can be queried.
17
18Once polling is enabled, the virtio-balloon device in QEMU will start
19polling the guest's balloon driver for new stats in the specified time
20interval.
21
22To retrieve those stats, clients have to query the guest-stats property,
23which will return a dictionary containing:
24
25 o A key named 'stats', containing all available stats. If the guest
26 doesn't support a particular stat, or if it couldn't be retrieved,
27 its value will be -1. Currently, the following stats are supported:
28
29 - stat-swap-in
30 - stat-swap-out
31 - stat-major-faults
32 - stat-minor-faults
33 - stat-free-memory
34 - stat-total-memory
35
36 o A key named last-update, which contains the last stats update
37 timestamp in seconds. Since this timestamp is generated by the host,
38dbd48b
JT
38 a buggy guest can't influence its value. The value is 0 if the guest
39 has not updated the stats (yet).
045a7085
LC
40
41It's also important to note the following:
42
43 - Previously polled statistics remain available even if the polling is
44 later disabled
45
46 - As noted above, if a guest doesn't support a particular stat its value
47 will always be -1. However, it's also possible that a guest temporarily
48 couldn't update one or even all stats. If this happens, just wait for
49 the next update
50
51 - Polling can be enabled even if the guest doesn't have stats support
52 or the balloon driver wasn't loaded in the guest. If this is the case
38dbd48b 53 and stats are queried, last-update will be 0.
045a7085
LC
54
55 - The polling timer is only re-armed when the guest responds to the
56 statistics request. This means that if a (buggy) guest doesn't ever
57 respond to the request the timer will never be re-armed, which has
58 the same effect as disabling polling
59
60Here are a few examples. QEMU is started with '-balloon virtio', which
61generates '/machine/peripheral-anon/device[1]' as the QOM path for the
62balloon device.
63
64Enable polling with 2 seconds interval:
65
66{ "execute": "qom-set",
67 "arguments": { "path": "/machine/peripheral-anon/device[1]",
68 "property": "guest-stats-polling-interval", "value": 2 } }
69
70{ "return": {} }
71
72Change polling to 10 seconds:
73
74{ "execute": "qom-set",
75 "arguments": { "path": "/machine/peripheral-anon/device[1]",
76 "property": "guest-stats-polling-interval", "value": 10 } }
77
78{ "return": {} }
79
80Get stats:
81
82{ "execute": "qom-get",
83 "arguments": { "path": "/machine/peripheral-anon/device[1]",
84 "property": "guest-stats" } }
85{
86 "return": {
87 "stats": {
88 "stat-swap-out": 0,
89 "stat-free-memory": 844943360,
90 "stat-minor-faults": 219028,
91 "stat-major-faults": 235,
92 "stat-total-memory": 1044406272,
93 "stat-swap-in": 0
94 },
95 "last-update": 1358529861
96 }
97}
98
99Disable polling:
100
101{ "execute": "qom-set",
102 "arguments": { "path": "/machine/peripheral-anon/device[1]",
103 "property": "stats-polling-interval", "value": 0 } }
104
105{ "return": {} }