|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 16/23] libxl: disallow memory relocation when vNUMA is enabled
On Thu, 2015-02-26 at 15:55 +0000, Wei Liu wrote:
> Disallow memory relocation when vNUMA is enabled, because relocated
> memory ends up off node. Further more, even if we dynamically expand
> node coverage in hvmloader, low memory and high memory may reside
> in different physical nodes, blindly relocating low memory to high
> memory gives us a sub-optimal configuration.
>
> Introduce a function called libxl__vnuma_configured and use it.
>
> Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> Cc: Konrad Wilk <konrad.wilk@xxxxxxxxxx>
> ---
> Changes in v6:
> 1. Introduce a helper function.
> ---
> tools/libxl/libxl_dm.c | 6 ++++--
> tools/libxl/libxl_internal.h | 1 +
> tools/libxl/libxl_vnuma.c | 5 +++++
> 3 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
> index 8599a6a..7b09512 100644
> --- a/tools/libxl/libxl_dm.c
> +++ b/tools/libxl/libxl_dm.c
> @@ -1365,13 +1365,15 @@ void libxl__spawn_local_dm(libxl__egc *egc,
> libxl__dm_spawn_state *dmss)
> libxl__sprintf(gc, "%s/hvmloader/bios", path),
> "%s", libxl_bios_type_to_string(b_info->u.hvm.bios));
> /* Disable relocating memory to make the MMIO hole larger
> - * unless we're running qemu-traditional */
> + * unless we're running qemu-traditional and vNUMA is not
> + * configured. */
> libxl__xs_write(gc, XBT_NULL,
> libxl__sprintf(gc,
> "%s/hvmloader/allow-memory-relocate",
> path),
> "%d",
> -
> b_info->device_model_version==LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL);
> +
> b_info->device_model_version==LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL
> &&
> + !libxl__vnuma_configured(b_info));
> free(path);
> }
>
> diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
> index e93089a..d04b6aa 100644
> --- a/tools/libxl/libxl_internal.h
> +++ b/tools/libxl/libxl_internal.h
> @@ -3413,6 +3413,7 @@ int libxl__vnuma_build_vmemrange_hvm(libxl__gc *gc,
> libxl_domain_build_info *b_info,
> libxl__domain_build_state *state,
> struct xc_hvm_build_args *args);
> +bool libxl__vnuma_configured(const libxl_domain_build_info *b_info);
>
> _hidden int libxl__ms_vm_genid_set(libxl__gc *gc, uint32_t domid,
> const libxl_ms_vm_genid *id);
> diff --git a/tools/libxl/libxl_vnuma.c b/tools/libxl/libxl_vnuma.c
> index a0576ee..6af3cde 100644
> --- a/tools/libxl/libxl_vnuma.c
> +++ b/tools/libxl/libxl_vnuma.c
> @@ -17,6 +17,11 @@
> #include "libxl_arch.h"
> #include <stdlib.h>
>
> +bool libxl__vnuma_configured(const libxl_domain_build_info *b_info)
> +{
> + return b_info->num_vnuma_nodes != 0;
> +}
> +
> /* Sort vmemranges in ascending order with "start" */
> static int compare_vmemrange(const void *a, const void *b)
> {
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |