qemu-devel
[Top][All Lists]
Advanced

[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'
>            }
>  }
>  




reply via email to

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