[libvirt] [PATCH RESEND 1/2] NUMA: cleanup for numa related codes

Osier Yang jyang at redhat.com
Wed Mar 20 11:14:09 UTC 2013


On 2013年03月20日 11:35, Gao feng wrote:
> Intend to reduce the redundant code,use virNumaSetupMemoryPolicy
> to replace virLXCControllerSetupNUMAPolicy and
> qemuProcessInitNumaMemoryPolicy.
> 
> This patch also moves the numa related codes to the
> file virnuma.c and virnuma.h
> 
> Signed-off-by: Gao feng<gaofeng at cn.fujitsu.com>
> ---
>   src/conf/domain_conf.c   |  31 ++++--------
>   src/conf/domain_conf.h   |  25 +---------
>   src/libvirt_private.syms |   9 ++--
>   src/lxc/lxc_controller.c | 116 +------------------------------------------
>   src/qemu/qemu_cgroup.c   |   4 +-
>   src/qemu/qemu_driver.c   |   6 +--
>   src/qemu/qemu_process.c  | 123 +--------------------------------------------
>   src/util/virnuma.c       | 126 +++++++++++++++++++++++++++++++++++++++++++++++
>   src/util/virnuma.h       |  30 +++++++++++
>   9 files changed, 182 insertions(+), 288 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index a1cfc76..fa70329 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -690,11 +690,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",
> @@ -709,12 +704,6 @@ VIR_ENUM_IMPL(virDomainDiskTray, VIR_DOMAIN_DISK_TRAY_LAST,
>                 "closed",
>                 "open");
> 
> -VIR_ENUM_IMPL(virDomainNumatuneMemPlacementMode,
> -              VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_LAST,
> -              "default",
> -              "static",
> -              "auto");
> -
>   VIR_ENUM_IMPL(virDomainRNGModel,
>                 VIR_DOMAIN_RNG_MODEL_LAST,
>                 "virtio");
> @@ -9852,7 +9841,7 @@ virDomainDefParseXML(virCapsPtr caps,
>                       int placement_mode = 0;
>                       if (placement) {
>                           if ((placement_mode =
> -                             virDomainNumatuneMemPlacementModeTypeFromString(placement))<  0) {
> +                             virNumaTuneMemPlacementModeTypeFromString(placement))<  0) {
>                               virReportError(VIR_ERR_XML_ERROR,
>                                              _("Unsupported memory placement "
>                                                "mode '%s'"), placement);
> @@ -9862,18 +9851,18 @@ virDomainDefParseXML(virCapsPtr caps,
>                           VIR_FREE(placement);
>                       } else if (def->numatune.memory.nodemask) {
>                           /* Defaults to "static" if nodeset is specified. */
> -                        placement_mode = VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_STATIC;
> +                        placement_mode = VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_STATIC;
>                       } else {
>                           /* Defaults to "placement" of<vcpu>  if nodeset is
>                            * not specified.
>                            */
>                           if (def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC)
> -                            placement_mode = VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_STATIC;
> +                            placement_mode = VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_STATIC;
>                           else
> -                            placement_mode = VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO;
> +                            placement_mode = VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_AUTO;
>                       }
> 
> -                    if (placement_mode == VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_STATIC&&
> +                    if (placement_mode == VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_STATIC&&
>                           !def->numatune.memory.nodemask) {
>                           virReportError(VIR_ERR_XML_ERROR, "%s",
>                                          _("nodeset for NUMA memory tuning must be set "
> @@ -9882,13 +9871,13 @@ virDomainDefParseXML(virCapsPtr caps,
>                       }
> 
>                       /* Ignore 'nodeset' if 'placement' is 'auto' finally */
> -                    if (placement_mode == VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO)
> +                    if (placement_mode == VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_AUTO)
>                           virBitmapFree(def->numatune.memory.nodemask);
> 
>                       /* Copy 'placement' of<numatune>  to<vcpu>  if its 'placement'
>                        * is not specified and 'placement' of<numatune>  is specified.
>                        */
> -                    if (placement_mode == VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO&&
> +                    if (placement_mode == VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_AUTO&&
>                           !def->cpumask)
>                           def->placement_mode = VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO;
> 
> @@ -9907,7 +9896,7 @@ virDomainDefParseXML(virCapsPtr caps,
>            * and 'placement' of<vcpu>  is 'auto'.
>            */
>           if (def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO) {
> -            def->numatune.memory.placement_mode = VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO;
> +            def->numatune.memory.placement_mode = VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_AUTO;
>               def->numatune.memory.mode = VIR_DOMAIN_NUMATUNE_MEM_STRICT;
>           }
>       }
> @@ -14818,7 +14807,7 @@ virDomainDefFormatInternal(virDomainDefPtr def,
>           virBufferAsprintf(buf, "<memory mode='%s' ", mode);
> 
>           if (def->numatune.memory.placement_mode ==
> -            VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_STATIC) {
> +            VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_STATIC) {
>               nodemask = virBitmapFormat(def->numatune.memory.nodemask);
>               if (nodemask == NULL) {
>                   virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> @@ -14829,7 +14818,7 @@ virDomainDefFormatInternal(virDomainDefPtr def,
>               virBufferAsprintf(buf, "nodeset='%s'/>\n", nodemask);
>               VIR_FREE(nodemask);
>           } else if (def->numatune.memory.placement_mode) {
> -            placement = virDomainNumatuneMemPlacementModeTypeToString(def->numatune.memory.placement_mode);
> +            placement = virNumaTuneMemPlacementModeTypeToString(def->numatune.memory.placement_mode);
>               virBufferAsprintf(buf, "placement='%s'/>\n", placement);
>           }
>           virBufferAddLit(buf, "</numatune>\n");
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index bfc37a0..6d856a3 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -47,6 +47,7 @@
>   # include "device_conf.h"
>   # include "virbitmap.h"
>   # include "virstoragefile.h"
> +# include "virnuma.h"
> 
>   /* forward declarations of all device types, required by
>    * virDomainDeviceDef
> @@ -1605,14 +1606,6 @@ enum virDomainCpuPlacementMode {
>       VIR_DOMAIN_CPU_PLACEMENT_MODE_LAST
>   };
> 
> -enum virDomainNumatuneMemPlacementMode {
> -    VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_DEFAULT = 0,
> -    VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_STATIC,
> -    VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO,
> -
> -    VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_LAST
> -};
> -
>   typedef struct _virDomainTimerCatchupDef virDomainTimerCatchupDef;
>   typedef virDomainTimerCatchupDef *virDomainTimerCatchupDefPtr;
>   struct _virDomainTimerCatchupDef {
> @@ -1701,18 +1694,6 @@ virDomainVcpuPinDefPtr virDomainVcpuPinFindByVcpu(virDomainVcpuPinDefPtr *def,
>                                                     int nvcpupin,
>                                                     int vcpu);
> 
> -typedef struct _virDomainNumatuneDef virDomainNumatuneDef;
> -typedef virDomainNumatuneDef *virDomainNumatuneDefPtr;
> -struct _virDomainNumatuneDef {
> -    struct {
> -        virBitmapPtr nodemask;
> -        int mode;
> -        int placement_mode; /* enum virDomainNumatuneMemPlacementMode */
> -    } memory;
> -
> -    /* Future NUMA tuning related stuff should go here. */
> -};
> -
>   typedef struct _virBlkioDeviceWeight virBlkioDeviceWeight;
>   typedef virBlkioDeviceWeight *virBlkioDeviceWeightPtr;
>   struct _virBlkioDeviceWeight {
> @@ -1802,7 +1783,7 @@ struct _virDomainDef {
>           virDomainVcpuPinDefPtr emulatorpin;
>       } cputune;
> 
> -    virDomainNumatuneDef numatune;
> +    virNumaTuneDef numatune;
> 
>       /* These 3 are based on virDomainLifeCycleAction enum flags */
>       int onReboot;
> @@ -2397,8 +2378,6 @@ VIR_ENUM_DECL(virDomainGraphicsSpicePlaybackCompression)
>   VIR_ENUM_DECL(virDomainGraphicsSpiceStreamingMode)
>   VIR_ENUM_DECL(virDomainGraphicsSpiceClipboardCopypaste)
>   VIR_ENUM_DECL(virDomainGraphicsSpiceMouseMode)
> -VIR_ENUM_DECL(virDomainNumatuneMemMode)
> -VIR_ENUM_DECL(virDomainNumatuneMemPlacementMode)
>   VIR_ENUM_DECL(virDomainHyperv)
>   VIR_ENUM_DECL(virDomainRNGModel)
>   VIR_ENUM_DECL(virDomainRNGBackend)
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index dc01bfa..8890859 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -252,10 +252,6 @@ virDomainNetRemove;
>   virDomainNetTypeToString;
>   virDomainNostateReasonTypeFromString;
>   virDomainNostateReasonTypeToString;
> -virDomainNumatuneMemModeTypeFromString;
> -virDomainNumatuneMemModeTypeToString;
> -virDomainNumatuneMemPlacementModeTypeFromString;
> -virDomainNumatuneMemPlacementModeTypeToString;
>   virDomainObjAssignDef;
>   virDomainObjCopyPersistentDef;
>   virDomainObjGetPersistentDef;
> @@ -1557,7 +1553,12 @@ virNodeSuspendGetTargetMask;
> 
> 
>   # util/virnuma.h
> +virDomainNumatuneMemModeTypeFromString;
> +virDomainNumatuneMemModeTypeToString;
> +virNumaTuneMemPlacementModeTypeFromString;
> +virNumaTuneMemPlacementModeTypeToString;
>   virNumaGetAutoPlacementAdvice;

Not alphabetically sorted. Just for your reference, I have an
alias like below to build after every changing:

alias $name="make && make syntax-check && make check"

This helps me a lot as  I'm careless enough to make mistakes
just like what you do. :-)

> +virNumaSetupMemoryPolicy;
> 

Others look good, ACK.




More information about the libvir-list mailing list