[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/2] nvdimm: disable balloon
From: |
Igor Mammedov |
Subject: |
Re: [Qemu-devel] [PATCH 2/2] nvdimm: disable balloon |
Date: |
Wed, 27 Jan 2016 15:31:48 +0100 |
On Wed, 27 Jan 2016 16:24:29 +0300
"Denis V. Lunev" <address@hidden> wrote:
suggest to change subj to: don't use NVDIMM for balooning
> From: Vladimir Sementsov-Ogievskiy <address@hidden>
>
> 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>
> ---
> hw/mem/pc-dimm.c | 2 ++
> hw/virtio/virtio-balloon.c | 4 +++-
> qapi-schema.json | 5 ++++-
> 3 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
> index 4f30950..2ff9f95 100644
> --- a/hw/mem/pc-dimm.c
> +++ b/hw/mem/pc-dimm.c
> @@ -19,6 +19,7 @@
> */
>
> #include "hw/mem/pc-dimm.h"
> +#include "hw/mem/nvdimm.h"
> #include "qemu/config-file.h"
> #include "qapi/visitor.h"
> #include "qemu/range.h"
> @@ -178,6 +179,7 @@ int qmp_pc_dimm_device_list(Object *obj, void *opaque)
> di->size = object_property_get_int(OBJECT(dimm),
> PC_DIMM_SIZE_PROP,
> NULL);
> di->memdev = object_get_canonical_path(OBJECT(dimm->hostmem));
> + di->balloonable = (object_dynamic_cast(obj, TYPE_NVDIMM) ==
> NULL);
I don't think that balloonable is property of DIMM and that it should be
displayed by MemoryDeviceInfo.
I'd drop this + the last hunk and put check directly into get_current_ram_size()
in this patch.
And another path on top that adds 'type' to PCDIMMDeviceInfo and shows
it in hmp_info_memory_devices() so that management tools/users would be
able to distinguish entries.
>
> info->u.dimm = di;
> elem->value = info;
> diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
> index 6a4c4d2..0a3de75 100644
> --- a/hw/virtio/virtio-balloon.c
> +++ b/hw/virtio/virtio-balloon.c
> @@ -308,7 +308,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 (value->u.dimm->balloonable) {
> + size += value->u.dimm->size;
> + }
> break;
> default:
> break;
> diff --git a/qapi-schema.json b/qapi-schema.json
> index 8d04897..5934f81 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -3924,6 +3924,8 @@
> #
> # @hotpluggable: true if device if could be added/removed while machine is
> running
> #
> +# @balloonable: true if device take part in ballooning (since 2.6)
> +#
> # Since: 2.1
> ##
> { 'struct': 'PCDIMMDeviceInfo',
> @@ -3934,7 +3936,8 @@
> 'node': 'int',
> 'memdev': 'str',
> 'hotplugged': 'bool',
> - 'hotpluggable': 'bool'
> + 'hotpluggable': 'bool',
> + 'balloonable': 'bool'
> }
> }
>