NUMA CPUs do not appear in KVM guest the same as they do on a physical machine

Solution Unverified - Updated -

Issue

  • NUMA CPUs do not appear in KVM guest the same as they do on a physical machine

  • Looking at the NUMA CPU list, a physical machine appears differently to a KVM guest, despite the fact NUMA nodes are configured in the guest XML

  • Guest XML contains interleaved CPUs like:

    <cpu>
      <numa>
        <cell cpus='0,2,4,6,8,10,12,14,16,18,20,22' memory='524288'></cell>
        <cell cpus='1,3,5,7,9,11,13,15,17,19,21,23' memory='524288'></cell>
      </numa>
    </cpu>
    
  • CPU Node list appears like:

    $ cat /sys/devices/system/node/node0/cpulist 
    0,2-23
    $ cat /sys/devices/system/node/node1/cpulist 
    1
    

    But the physical NUMA layout is:

    $ cat /sys/devices/system/node/node0/cpulist
    0,2,4,6,8,10,12,14,16,18,20,22
    $ cat /sys/devices/system/node/node1/cpulist
    1,3,5,7,9,11,13,15,17,19,21,23
    
  • The numactl hardware layout shows all CPUs except one in a NUMA Node inside the guest.

  • Starting a KVM guest on RHEL7 fails with:

    error: Failed to start domain guestname
    error: unsupported configuration: disjoint NUMA cpu ranges are not supported with this QEMU    
    

Environment

  • Red Hat Enterprise Linux 7.1 and earlier
  • Red Hat Enterprise Linux 6.7 and earlier
  • KVM virtualization and libvirt
  • NUMA system

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content