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

Gao feng gaofeng at cn.fujitsu.com
Thu Mar 21 01:21:03 UTC 2013


On 2013/03/20 19:14, Osier Yang wrote:
> 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. :-)
> 

Yes, it's my fault.. thanks for your advice :)

>> +virNumaSetupMemoryPolicy;
>>
> 
> Others look good, ACK.
> 

Thanks!




More information about the libvir-list mailing list