qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 3/3] balloon: don't use NVDIMM for ballooning


From: Vladimir Sementsov-Ogievskiy
Subject: Re: [Qemu-devel] [PATCH 3/3] balloon: don't use NVDIMM for ballooning
Date: Wed, 3 Feb 2016 20:21:11 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0

On 03.02.2016 18:42, Markus Armbruster wrote:
Eric Blake <address@hidden> writes:

On 01/27/2016 11:51 PM, Vladimir Sementsov-Ogievskiy wrote:
NVDIMM for now is planned to use as a backing store for DAX filesystem
in the guest and thus this memory is excluded from guest memory
management and LRUs.

In this case libvirt running QEMU along with configured balloon almost
immediately inflates balloon and effectively kill the guest as
qemu counts nvdimm as part of the ram.

Counting dimm devices as part of the ram for ballooning was started from
commit 463756d03:
  virtio-balloon: Fix balloon not working correctly when hotplug memory

Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Signed-off-by: Denis V. Lunev <address@hidden>
CC: Stefan Hajnoczi <address@hidden>
CC: Xiao Guangrong <address@hidden>
CC: "Michael S. Tsirkin" <address@hidden>
CC: Igor Mammedov <address@hidden>
CC: Eric Blake <address@hidden>
CC: Markus Armbruster <address@hidden>
---
@@ -308,7 +309,9 @@ static ram_addr_t get_current_ram_size(void)
          if (value) {
              switch (value->type) {
              case MEMORY_DEVICE_INFO_KIND_DIMM:
-                size += value->u.dimm->size;
+                if (strcmp(value->u.dimm->type, TYPE_NVDIMM)) {
If you fix 2/3 to use a QAPI enum, then this will be an integer compare
instead of a strcmp().
Another option is to add a flag to the subtypes of TYPE_PC_DIMM, set it
for the subtypes that should be counted here, and accumulate the sizes
of devices where the flag is set.  Requires iterating directly over the
devices here (like qmp_pc_dimm_device_list() does under the hood) rather
than the MemoryDeviceInfoList returned by qmp_pc_dimm_device_list(),
It was my first approach but it was rejected)

As another option I can make a function iterating over the devices and return list of them, and then use it instead of qmp_pc_dimm_device_list.. Then, I'll have pointers to devices and can use object_dynamic_cast.

--
Best regards,
Vladimir




reply via email to

[Prev in Thread] Current Thread [Next in Thread]