mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 21:34:54 +03:00
rename qemuGetNumadAdvice to virNumaGetAutoPlacementAdvice
qemuGetNumadAdvice will be used by LXC driver, rename it to virNumaGetAutoPlacementAdvice and move it to virnuma.c Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
This commit is contained in:
parent
26705e02c1
commit
763edb5ebe
@ -166,6 +166,7 @@ src/util/virnetdevtap.c
|
|||||||
src/util/virnetdevvportprofile.c
|
src/util/virnetdevvportprofile.c
|
||||||
src/util/virnetlink.c
|
src/util/virnetlink.c
|
||||||
src/util/virnodesuspend.c
|
src/util/virnodesuspend.c
|
||||||
|
src/util/virnuma.c
|
||||||
src/util/virobject.c
|
src/util/virobject.c
|
||||||
src/util/virpci.c
|
src/util/virpci.c
|
||||||
src/util/virpidfile.c
|
src/util/virpidfile.c
|
||||||
|
@ -104,6 +104,7 @@ UTIL_SOURCES = \
|
|||||||
util/virnetdevvportprofile.h util/virnetdevvportprofile.c \
|
util/virnetdevvportprofile.h util/virnetdevvportprofile.c \
|
||||||
util/virnetlink.c util/virnetlink.h \
|
util/virnetlink.c util/virnetlink.h \
|
||||||
util/virnodesuspend.c util/virnodesuspend.h \
|
util/virnodesuspend.c util/virnodesuspend.h \
|
||||||
|
util/virnuma.c util/virnuma.h \
|
||||||
util/virobject.c util/virobject.h \
|
util/virobject.c util/virobject.h \
|
||||||
util/virpci.c util/virpci.h \
|
util/virpci.c util/virpci.h \
|
||||||
util/virpidfile.c util/virpidfile.h \
|
util/virpidfile.c util/virpidfile.h \
|
||||||
|
@ -1556,6 +1556,9 @@ nodeSuspendForDuration;
|
|||||||
virNodeSuspendGetTargetMask;
|
virNodeSuspendGetTargetMask;
|
||||||
|
|
||||||
|
|
||||||
|
# util/virnuma.h
|
||||||
|
virNumaGetAutoPlacementAdvice;
|
||||||
|
|
||||||
# util/virobject.h
|
# util/virobject.h
|
||||||
virClassForObject;
|
virClassForObject;
|
||||||
virClassForObjectLockable;
|
virClassForObjectLockable;
|
||||||
|
@ -70,6 +70,7 @@
|
|||||||
#include "virnetdevtap.h"
|
#include "virnetdevtap.h"
|
||||||
#include "virbitmap.h"
|
#include "virbitmap.h"
|
||||||
#include "viratomic.h"
|
#include "viratomic.h"
|
||||||
|
#include "virnuma.h"
|
||||||
|
|
||||||
#define VIR_FROM_THIS VIR_FROM_QEMU
|
#define VIR_FROM_THIS VIR_FROM_QEMU
|
||||||
|
|
||||||
@ -1903,36 +1904,6 @@ qemuProcessInitNumaMemoryPolicy(virDomainObjPtr vm,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAVE_NUMAD
|
|
||||||
static char *
|
|
||||||
qemuGetNumadAdvice(virDomainDefPtr def)
|
|
||||||
{
|
|
||||||
virCommandPtr cmd = NULL;
|
|
||||||
char *output = NULL;
|
|
||||||
|
|
||||||
cmd = virCommandNewArgList(NUMAD, "-w", NULL);
|
|
||||||
virCommandAddArgFormat(cmd, "%d:%llu", def->vcpus,
|
|
||||||
VIR_DIV_UP(def->mem.cur_balloon, 1024));
|
|
||||||
|
|
||||||
virCommandSetOutputBuffer(cmd, &output);
|
|
||||||
|
|
||||||
if (virCommandRun(cmd, NULL) < 0)
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
|
||||||
_("Failed to query numad for the "
|
|
||||||
"advisory nodeset"));
|
|
||||||
|
|
||||||
virCommandFree(cmd);
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static char *
|
|
||||||
qemuGetNumadAdvice(virDomainDefPtr def ATTRIBUTE_UNUSED)
|
|
||||||
{
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("numad is not available on this host"));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Helper to prepare cpumap for affinity setting, convert
|
/* Helper to prepare cpumap for affinity setting, convert
|
||||||
* NUMA nodeset into cpuset if @nodemask is not NULL, otherwise
|
* NUMA nodeset into cpuset if @nodemask is not NULL, otherwise
|
||||||
@ -3638,7 +3609,8 @@ int qemuProcessStart(virConnectPtr conn,
|
|||||||
VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO) ||
|
VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO) ||
|
||||||
(vm->def->numatune.memory.placement_mode ==
|
(vm->def->numatune.memory.placement_mode ==
|
||||||
VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO)) {
|
VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO)) {
|
||||||
nodeset = qemuGetNumadAdvice(vm->def);
|
nodeset = virNumaGetAutoPlacementAdvice(vm->def->vcpus,
|
||||||
|
vm->def->mem.cur_balloon);
|
||||||
if (!nodeset)
|
if (!nodeset)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
61
src/util/virnuma.c
Normal file
61
src/util/virnuma.c
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* virnuma.c: helper APIs for managing numa
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011-2013 Red Hat, Inc.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include "virnuma.h"
|
||||||
|
#include "vircommand.h"
|
||||||
|
#include "virerror.h"
|
||||||
|
|
||||||
|
#define VIR_FROM_THIS VIR_FROM_NONE
|
||||||
|
|
||||||
|
#if HAVE_NUMAD
|
||||||
|
char *
|
||||||
|
virNumaGetAutoPlacementAdvice(unsigned short vcpus,
|
||||||
|
unsigned long long balloon)
|
||||||
|
{
|
||||||
|
virCommandPtr cmd = NULL;
|
||||||
|
char *output = NULL;
|
||||||
|
|
||||||
|
cmd = virCommandNewArgList(NUMAD, "-w", NULL);
|
||||||
|
virCommandAddArgFormat(cmd, "%d:%llu", vcpus,
|
||||||
|
VIR_DIV_UP(balloon, 1024));
|
||||||
|
|
||||||
|
virCommandSetOutputBuffer(cmd, &output);
|
||||||
|
|
||||||
|
if (virCommandRun(cmd, NULL) < 0)
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
|
_("Failed to query numad for the "
|
||||||
|
"advisory nodeset"));
|
||||||
|
|
||||||
|
virCommandFree(cmd);
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
char *
|
||||||
|
virNumaGetAutoPlacementAdvice(unsigned short vcpus ATTRIBUTE_UNUSED,
|
||||||
|
unsigned long long balloon ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("numad is not available on this host"));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#endif
|
28
src/util/virnuma.h
Normal file
28
src/util/virnuma.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* virnuma.h: helper APIs for managing numa
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011-2013 Red Hat, Inc.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __VIR_NUMA_H__
|
||||||
|
# define __VIR_NUMA_H__
|
||||||
|
|
||||||
|
char *virNumaGetAutoPlacementAdvice(unsigned short vcups,
|
||||||
|
unsigned long long balloon);
|
||||||
|
|
||||||
|
#endif /* __VIR_NUMA_H__ */
|
Loading…
Reference in New Issue
Block a user