• O
    qemu: Support numad · 0f8e7ae3
    Osier Yang 提交于
    numad is an user-level daemon that monitors NUMA topology and
    processes resource consumption to facilitate good NUMA resource
    alignment of applications/virtual machines to improve performance
    and minimize cost of remote memory latencies. It provides a
    pre-placement advisory interface, so significant processes can
    be pre-bound to nodes with sufficient available resources.
    
    More details: http://fedoraproject.org/wiki/Features/numad
    
    "numad -w ncpus:memory_amount" is the advisory interface numad
    provides currently.
    
    This patch add the support by introducing a new XML attribute
    for <vcpu>. e.g.
    
      <vcpu placement="auto">4</vcpu>
      <vcpu placement="static" cpuset="1-10^6">4</vcpu>
    
    The returned advisory nodeset from numad will be printed
    in domain's dumped XML. e.g.
      <vcpu placement="auto" cpuset="1-10^6">4</vcpu>
    
    If placement is "auto", the number of vcpus and the current
    memory amount specified in domain XML will be used for numad
    command line (numad uses MB for memory amount):
      numad -w $num_of_vcpus:$current_memory_amount / 1024
    
    The advisory nodeset returned from numad will be used to set
    domain process CPU affinity then. (e.g. qemuProcessInitCpuAffinity).
    
    If the user specifies both CPU affinity policy (e.g.
    (<vcpu cpuset="1-10,^7,^8">4</vcpu>) and placement == "auto"
    the specified CPU affinity will be overridden.
    
    Only QEMU/KVM drivers support it now.
    
    See docs update in patch for more details.
    0f8e7ae3
domain_conf.c 468.8 KB