Re: [libvirt] [PATCH 04/10] remove dependence on libnuma
On Thu, Nov 03, 2011 at 12:13:27PM +, Daniel P. Berrange wrote: On Thu, Nov 03, 2011 at 07:55:19PM +0800, Hu Tao wrote: Since we use cpuset to manage numa, we can safely remove dependence on libnuma. --- src/conf/domain_conf.c | 24 +-- src/conf/domain_conf.h |1 - src/qemu/qemu_process.c | 111 --- 3 files changed, 1 insertions(+), 135 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 6e2d421..0cf3bb7 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -583,11 +583,6 @@ VIR_ENUM_IMPL(virDomainTimerMode, VIR_DOMAIN_TIMER_MODE_LAST, paravirt, smpsafe); -VIR_ENUM_IMPL(virDomainNumatuneMemMode, VIR_DOMAIN_NUMATUNE_MEM_LAST, - strict, - preferred, - interleave); - VIR_ENUM_IMPL(virDomainStartupPolicy, VIR_DOMAIN_STARTUP_POLICY_LAST, default, mandatory, @@ -6834,20 +6829,6 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, %s, _(nodeset for NUMA memory tuning must be set)); goto error; } - -tmp = virXPathString(string(./numatune/memory/@mode), ctxt); -if (tmp) { -if ((def-numatune.memory.mode = -virDomainNumatuneMemModeTypeFromString(tmp)) 0) { -virDomainReportError(VIR_ERR_INTERNAL_ERROR, -_(Unsupported NUMA memory tuning mode '%s'), -tmp); -goto error; -} -VIR_FREE(tmp); -} else { -def-numatune.memory.mode = VIR_DOMAIN_NUMATUNE_MEM_STRICT; -} } n = virXPathNodeSet(./features/*, ctxt, nodes); @@ -10882,7 +10863,6 @@ virDomainDefFormatInternal(virDomainDefPtr def, virBufferAddLit(buf, /cputune\n); if (def-numatune.memory.nodemask) { -const char *mode; char *nodemask = NULL; virBufferAddLit(buf, numatune\n); @@ -10894,9 +10874,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, goto cleanup; } -mode = virDomainNumatuneMemModeTypeToString(def-numatune.memory.mode); -virBufferAsprintf(buf, memory mode='%s' nodeset='%s'/\n, - mode, nodemask); +virBufferAsprintf(buf, memory nodeset='%s'/\n, nodemask); VIR_FREE(nodemask); virBufferAddLit(buf, /numatune\n); } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index f74f4bb..ca68437 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1353,7 +1353,6 @@ typedef virDomainNumatuneDef *virDomainNumatuneDefPtr; struct _virDomainNumatuneDef { struct { char *nodemask; -int mode; } memory; /* Future NUMA tuning related stuff should go here. */ You can't remove this stuff from the XML - this is part of our public stability guarentee. The way it is modelled is not specific to libnuma anyway, so there shouldn't be this tie. diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 47164f7..5969b34 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -39,11 +39,6 @@ #include qemu_bridge_filter.h #include qemu_migration.h -#if HAVE_NUMACTL -# define NUMA_VERSION1_COMPATIBILITY 1 -# include numa.h -#endif - #include datatypes.h #include logging.h #include virterror_internal.h @@ -1314,109 +1309,6 @@ qemuProcessDetectVcpuPIDs(struct qemud_driver *driver, return 0; } - -/* - * Set NUMA memory policy for qemu process, to be run between - * fork/exec of QEMU only. - */ -#if HAVE_NUMACTL -static int -qemuProcessInitNumaMemoryPolicy(virDomainObjPtr vm) -{ -nodemask_t mask; -int mode = -1; -int node = -1; -int ret = -1; -int i = 0; -int maxnode = 0; -bool warned = false; - -if (!vm-def-numatune.memory.nodemask) -return 0; - -VIR_DEBUG(Setting NUMA memory policy); - -if (numa_available() 0) { -qemuReportError(VIR_ERR_INTERNAL_ERROR, -%s, _(Host kernel is not aware of NUMA.)); -return -1; -} - -maxnode = numa_max_node() + 1; - -/* Convert nodemask to NUMA bitmask. */ -nodemask_zero(mask); -for (i = 0; i VIR_DOMAIN_CPUMASK_LEN; i++) { -if (vm-def-numatune.memory.nodemask[i]) { -if (i NUMA_NUM_NODES) { -qemuReportError(VIR_ERR_INTERNAL_ERROR, -_(Host cannot support NUMA node %d), i); -return -1; -} -if (i maxnode !warned) { -
Re: [libvirt] [PATCH 04/10] remove dependence on libnuma
On Thu, Nov 03, 2011 at 07:55:19PM +0800, Hu Tao wrote: Since we use cpuset to manage numa, we can safely remove dependence on libnuma. --- src/conf/domain_conf.c | 24 +-- src/conf/domain_conf.h |1 - src/qemu/qemu_process.c | 111 --- 3 files changed, 1 insertions(+), 135 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 6e2d421..0cf3bb7 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -583,11 +583,6 @@ VIR_ENUM_IMPL(virDomainTimerMode, VIR_DOMAIN_TIMER_MODE_LAST, paravirt, smpsafe); -VIR_ENUM_IMPL(virDomainNumatuneMemMode, VIR_DOMAIN_NUMATUNE_MEM_LAST, - strict, - preferred, - interleave); - VIR_ENUM_IMPL(virDomainStartupPolicy, VIR_DOMAIN_STARTUP_POLICY_LAST, default, mandatory, @@ -6834,20 +6829,6 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, %s, _(nodeset for NUMA memory tuning must be set)); goto error; } - -tmp = virXPathString(string(./numatune/memory/@mode), ctxt); -if (tmp) { -if ((def-numatune.memory.mode = -virDomainNumatuneMemModeTypeFromString(tmp)) 0) { -virDomainReportError(VIR_ERR_INTERNAL_ERROR, -_(Unsupported NUMA memory tuning mode '%s'), -tmp); -goto error; -} -VIR_FREE(tmp); -} else { -def-numatune.memory.mode = VIR_DOMAIN_NUMATUNE_MEM_STRICT; -} } n = virXPathNodeSet(./features/*, ctxt, nodes); @@ -10882,7 +10863,6 @@ virDomainDefFormatInternal(virDomainDefPtr def, virBufferAddLit(buf, /cputune\n); if (def-numatune.memory.nodemask) { -const char *mode; char *nodemask = NULL; virBufferAddLit(buf, numatune\n); @@ -10894,9 +10874,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, goto cleanup; } -mode = virDomainNumatuneMemModeTypeToString(def-numatune.memory.mode); -virBufferAsprintf(buf, memory mode='%s' nodeset='%s'/\n, - mode, nodemask); +virBufferAsprintf(buf, memory nodeset='%s'/\n, nodemask); VIR_FREE(nodemask); virBufferAddLit(buf, /numatune\n); } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index f74f4bb..ca68437 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1353,7 +1353,6 @@ typedef virDomainNumatuneDef *virDomainNumatuneDefPtr; struct _virDomainNumatuneDef { struct { char *nodemask; -int mode; } memory; /* Future NUMA tuning related stuff should go here. */ You can't remove this stuff from the XML - this is part of our public stability guarentee. The way it is modelled is not specific to libnuma anyway, so there shouldn't be this tie. diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 47164f7..5969b34 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -39,11 +39,6 @@ #include qemu_bridge_filter.h #include qemu_migration.h -#if HAVE_NUMACTL -# define NUMA_VERSION1_COMPATIBILITY 1 -# include numa.h -#endif - #include datatypes.h #include logging.h #include virterror_internal.h @@ -1314,109 +1309,6 @@ qemuProcessDetectVcpuPIDs(struct qemud_driver *driver, return 0; } - -/* - * Set NUMA memory policy for qemu process, to be run between - * fork/exec of QEMU only. - */ -#if HAVE_NUMACTL -static int -qemuProcessInitNumaMemoryPolicy(virDomainObjPtr vm) -{ -nodemask_t mask; -int mode = -1; -int node = -1; -int ret = -1; -int i = 0; -int maxnode = 0; -bool warned = false; - -if (!vm-def-numatune.memory.nodemask) -return 0; - -VIR_DEBUG(Setting NUMA memory policy); - -if (numa_available() 0) { -qemuReportError(VIR_ERR_INTERNAL_ERROR, -%s, _(Host kernel is not aware of NUMA.)); -return -1; -} - -maxnode = numa_max_node() + 1; - -/* Convert nodemask to NUMA bitmask. */ -nodemask_zero(mask); -for (i = 0; i VIR_DOMAIN_CPUMASK_LEN; i++) { -if (vm-def-numatune.memory.nodemask[i]) { -if (i NUMA_NUM_NODES) { -qemuReportError(VIR_ERR_INTERNAL_ERROR, -_(Host cannot support NUMA node %d), i); -return -1; -} -if (i maxnode !warned) { -VIR_WARN(nodeset is out of range, there is only %d NUMA - nodes on host, maxnode); -warned = true; - } -nodemask_set(mask, i); -} -}