1
0
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:
Gao feng 2013-03-18 17:04:01 +08:00 committed by Eric Blake
parent 26705e02c1
commit 763edb5ebe
6 changed files with 97 additions and 31 deletions

View File

@ -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

View File

@ -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 \

View File

@ -1556,6 +1556,9 @@ nodeSuspendForDuration;
virNodeSuspendGetTargetMask; virNodeSuspendGetTargetMask;
# util/virnuma.h
virNumaGetAutoPlacementAdvice;
# util/virobject.h # util/virobject.h
virClassForObject; virClassForObject;
virClassForObjectLockable; virClassForObjectLockable;

View File

@ -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
View 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
View 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__ */