numad is available since Fedora 17 and RHEL6.X. And it's not supported on s390[x] and ARM. --- configure.ac | 26 +++++++++++++++++++++----- libvirt.spec.in | 19 ++++++++++++++++++- src/qemu/qemu_process.c | 2 +- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/configure.ac b/configure.ac index 31f0835..ce9c0ff 100644 --- a/configure.ac +++ b/configure.ac @@ -1445,14 +1445,29 @@ AM_CONDITIONAL([HAVE_NUMACTL], [test "$with_numactl" != "no"]) AC_SUBST([NUMACTL_CFLAGS]) AC_SUBST([NUMACTL_LIBS]) -dnl Do we have numad? -if test "$with_qemu" = "yes"; then - AC_PATH_PROG([NUMAD], [numad], [], [/bin:/usr/bin:/usr/local/bin:$PATH]) +dnl numad +AC_ARG_WITH([numad], + AC_HELP_STRING([--with-numad], [use numad to manage CPU placement dynamically @<:@default=check@:>@]), + [], + [with_numad=check]) - if test -n "$NUMAD"; then - AC_DEFINE_UNQUOTED([NUMAD],["$NUMAD"], [Location or name of the numad program]) +if test "$with_numad" != "no" ; then + AC_PATH_PROG([NUMAD], [numad], [], [/bin:/usr/bin]) + if test -z "$NUMAD" ; then + if test "$with_numad" = "check"; then + with_numad="no" + else + AC_MSG_ERROR([You must install the 'numad' to manage CPU placement dynamically]) fi + else + with_numad="yes" + fi + if test "$with_numad" = "yes"; then + AC_DEFINE_UNQUOTED([HAVE_NUMAD], 1, [whether numad is available]) + AC_DEFINE_UNQUOTED([NUMAD],["$NUMAD"], [Location or name of the numad program]) + fi fi +AM_CONDITIONAL([HAVE_NUMAD], [test "$with_numad" != "no"]) dnl pcap lib LIBPCAP_CONFIG="pcap-config" @@ -2774,6 +2789,7 @@ AC_MSG_NOTICE([Warning Flags: $WARN_CFLAGS]) AC_MSG_NOTICE([ Readline: $lv_use_readline]) AC_MSG_NOTICE([ Python: $with_python]) AC_MSG_NOTICE([ DTrace: $with_dtrace]) +AC_MSG_NOTICE([ numad: $with_numad]) AC_MSG_NOTICE([ XML Catalog: $XML_CATALOG_FILE]) AC_MSG_NOTICE([ Init script: $with_init_script]) AC_MSG_NOTICE([Console locks: $with_console_lock_files]) diff --git a/libvirt.spec.in b/libvirt.spec.in index 072fd8e..78800c7 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -84,6 +84,7 @@ %define with_cgconfig 0%{!?_without_cgconfig:0} %define with_sanlock 0%{!?_without_sanlock:0} %define with_systemd 0%{!?_without_systemd:0} +%define with_numad 0%{!?_without_numad:0} # Non-server/HV driver defaults which are always enabled %define with_python 0%{!?_without_python:1} @@ -205,11 +206,19 @@ %define with_storage_disk 0 %endif -# Enable libpcap library %if %{with_qemu} %define with_nwfilter 0%{!?_without_nwfilter:%{server_drivers}} +# Enable libpcap library %define with_libpcap 0%{!?_without_libpcap:%{server_drivers}} %define with_macvtap 0%{!?_without_macvtap:%{server_drivers}} + +# numad is used to manage the CPU placement dynamically, +# it's not available on s390[x] and ARM. +%if 0%{?fedora} >= 17 || 0%{?rhel} >= 6 +%ifnarch s390 s390x %{arm} +%define with_numad 0%{!?_without_numad:%{server_drivers}} +%endif +%endif %endif %if %{with_macvtap} @@ -357,6 +366,9 @@ Requires(post): systemd-sysv Requires(preun): systemd-units Requires(postun): systemd-units %endif +%if %{with_numad} +Requires: numad +%endif # All build-time requirements %if 0%{?enable_autotools} @@ -690,6 +702,10 @@ of recent versions of Linux (and other OSes). %define _without_numactl --without-numactl %endif +%if ! %{with_numad} +%define _without_numad --without-numad +%endif + %if ! %{with_capng} %define _without_capng --without-capng %endif @@ -775,6 +791,7 @@ autoreconf -if %{?_without_storage_disk} \ %{?_without_storage_mpath} \ %{?_without_numactl} \ + %{?_without_numad} \ %{?_without_capng} \ %{?_without_netcf} \ %{?_without_selinux} \ diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 8915a9a..d0706b4 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -1633,7 +1633,7 @@ qemuProcessInitNumaMemoryPolicy(virDomainObjPtr vm) } #endif -#if defined(NUMAD) +#if HAVE_NUMAD static char * qemuGetNumadAdvice(virDomainDefPtr def) { -- 1.7.7.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list