mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 17:34:18 +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/virnetlink.c
|
||||
src/util/virnodesuspend.c
|
||||
src/util/virnuma.c
|
||||
src/util/virobject.c
|
||||
src/util/virpci.c
|
||||
src/util/virpidfile.c
|
||||
|
@ -104,6 +104,7 @@ UTIL_SOURCES = \
|
||||
util/virnetdevvportprofile.h util/virnetdevvportprofile.c \
|
||||
util/virnetlink.c util/virnetlink.h \
|
||||
util/virnodesuspend.c util/virnodesuspend.h \
|
||||
util/virnuma.c util/virnuma.h \
|
||||
util/virobject.c util/virobject.h \
|
||||
util/virpci.c util/virpci.h \
|
||||
util/virpidfile.c util/virpidfile.h \
|
||||
|
@ -1556,6 +1556,9 @@ nodeSuspendForDuration;
|
||||
virNodeSuspendGetTargetMask;
|
||||
|
||||
|
||||
# util/virnuma.h
|
||||
virNumaGetAutoPlacementAdvice;
|
||||
|
||||
# util/virobject.h
|
||||
virClassForObject;
|
||||
virClassForObjectLockable;
|
||||
|
@ -70,6 +70,7 @@
|
||||
#include "virnetdevtap.h"
|
||||
#include "virbitmap.h"
|
||||
#include "viratomic.h"
|
||||
#include "virnuma.h"
|
||||
|
||||
#define VIR_FROM_THIS VIR_FROM_QEMU
|
||||
|
||||
@ -1903,36 +1904,6 @@ qemuProcessInitNumaMemoryPolicy(virDomainObjPtr vm,
|
||||
}
|
||||
#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
|
||||
* NUMA nodeset into cpuset if @nodemask is not NULL, otherwise
|
||||
@ -3638,7 +3609,8 @@ int qemuProcessStart(virConnectPtr conn,
|
||||
VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO) ||
|
||||
(vm->def->numatune.memory.placement_mode ==
|
||||
VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO)) {
|
||||
nodeset = qemuGetNumadAdvice(vm->def);
|
||||
nodeset = virNumaGetAutoPlacementAdvice(vm->def->vcpus,
|
||||
vm->def->mem.cur_balloon);
|
||||
if (!nodeset)
|
||||
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