 045a70857a
			
		
	
	
		045a70857a
		
	
	
	
	
		
			
			Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
		
			
				
	
	
		
			105 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| virtio balloon memory statistics
 | |
| ================================
 | |
| 
 | |
| The virtio balloon driver supports guest memory statistics reporting. These
 | |
| statistics are available to QEMU users as QOM (QEMU Object Model) device
 | |
| properties via a polling mechanism.
 | |
| 
 | |
| Before querying the available stats, clients first have to enable polling.
 | |
| This is done by writing a time interval value (in seconds) to the
 | |
| guest-stats-polling-interval property. This value can be:
 | |
| 
 | |
|   > 0  enables polling in the specified interval. If polling is already
 | |
|        enabled, the polling time interval is changed to the new value
 | |
| 
 | |
|   0    disables polling. Previous polled statistics are still valid and
 | |
|        can be queried.
 | |
| 
 | |
| Once polling is enabled, the virtio-balloon device in QEMU will start
 | |
| polling the guest's balloon driver for new stats in the specified time
 | |
| interval.
 | |
| 
 | |
| To retrieve those stats, clients have to query the guest-stats property,
 | |
| which will return a dictionary containing:
 | |
| 
 | |
|   o A key named 'stats', containing all available stats. If the guest
 | |
|     doesn't support a particular stat, or if it couldn't be retrieved,
 | |
|     its value will be -1. Currently, the following stats are supported:
 | |
| 
 | |
|       - stat-swap-in
 | |
|       - stat-swap-out
 | |
|       - stat-major-faults
 | |
|       - stat-minor-faults
 | |
|       - stat-free-memory
 | |
|       - stat-total-memory
 | |
| 
 | |
|   o A key named last-update, which contains the last stats update
 | |
|     timestamp in seconds. Since this timestamp is generated by the host,
 | |
|     a buggy guest can't influence its value
 | |
| 
 | |
| It's also important to note the following:
 | |
| 
 | |
|  - Previously polled statistics remain available even if the polling is
 | |
|    later disabled
 | |
| 
 | |
|  - As noted above, if a guest doesn't support a particular stat its value
 | |
|    will always be -1. However, it's also possible that a guest temporarily
 | |
|    couldn't update one or even all stats. If this happens, just wait for
 | |
|    the next update
 | |
| 
 | |
|  - Polling can be enabled even if the guest doesn't have stats support
 | |
|    or the balloon driver wasn't loaded in the guest. If this is the case
 | |
|    and stats are queried, an error will be returned
 | |
| 
 | |
|  - The polling timer is only re-armed when the guest responds to the
 | |
|    statistics request. This means that if a (buggy) guest doesn't ever
 | |
|    respond to the request the timer will never be re-armed, which has
 | |
|    the same effect as disabling polling
 | |
| 
 | |
| Here are a few examples. QEMU is started with '-balloon virtio', which
 | |
| generates '/machine/peripheral-anon/device[1]' as the QOM path for the
 | |
| balloon device.
 | |
| 
 | |
| Enable polling with 2 seconds interval:
 | |
| 
 | |
| { "execute": "qom-set",
 | |
|              "arguments": { "path": "/machine/peripheral-anon/device[1]",
 | |
| 			 "property": "guest-stats-polling-interval", "value": 2 } }
 | |
| 
 | |
| { "return": {} }
 | |
| 
 | |
| Change polling to 10 seconds:
 | |
| 
 | |
| { "execute": "qom-set",
 | |
|              "arguments": { "path": "/machine/peripheral-anon/device[1]",
 | |
| 			 "property": "guest-stats-polling-interval", "value": 10 } }
 | |
| 
 | |
| { "return": {} }
 | |
| 
 | |
| Get stats:
 | |
| 
 | |
| { "execute": "qom-get",
 | |
|   "arguments": { "path": "/machine/peripheral-anon/device[1]",
 | |
|   "property": "guest-stats" } }
 | |
| {
 | |
|     "return": {
 | |
|         "stats": {
 | |
|             "stat-swap-out": 0,
 | |
|             "stat-free-memory": 844943360,
 | |
|             "stat-minor-faults": 219028,
 | |
|             "stat-major-faults": 235,
 | |
|             "stat-total-memory": 1044406272,
 | |
|             "stat-swap-in": 0
 | |
|         },
 | |
|         "last-update": 1358529861
 | |
|     }
 | |
| }
 | |
| 
 | |
| Disable polling:
 | |
| 
 | |
| { "execute": "qom-set",
 | |
|              "arguments": { "path": "/machine/peripheral-anon/device[1]",
 | |
| 			 "property": "stats-polling-interval", "value": 0 } }
 | |
| 
 | |
| { "return": {} }
 |