Skip to content
  • Chegu Vinod's avatar
    Fixes related to processing of qemu's -numa option · ee785fed
    Chegu Vinod authored
    
    
    The -numa option to qemu is used to create [fake] numa nodes
    and expose them to the guest OS instance.
    
    There are a couple of issues with the -numa option:
    
    a) Max VCPU's that can be specified for a guest while using
       the qemu's -numa option is 64. Due to a typecasting issue
       when the number of VCPUs is > 32 the VCPUs don't show up
       under the specified [fake] numa nodes.
    
    b) KVM currently has support for 160VCPUs per guest. The
       qemu's -numa option has only support for upto 64VCPUs
       per guest.
    This patch addresses these two issues.
    
    Below are examples of (a) and (b)
    
    a) >32 VCPUs are specified with the -numa option:
    
    /usr/local/bin/qemu-system-x86_64 \
    -enable-kvm \
    71:01:01 \
    -net tap,ifname=tap0,script=no,downscript=no \
    -vnc :4
    
    ...
    Upstream qemu :
    --------------
    
    QEMU 1.1.50 monitor - type 'help' for more information
    (qemu) info numa
    6 nodes
    node 0 cpus: 0 1 2 3 4 5 6 7 8 9 32 33 34 35 36 37 38 39 40 41
    node 0 size: 131072 MB
    node 1 cpus: 10 11 12 13 14 15 16 17 18 19 42 43 44 45 46 47 48 49 50 51
    node 1 size: 131072 MB
    node 2 cpus: 20 21 22 23 24 25 26 27 28 29 52 53 54 55 56 57 58 59
    node 2 size: 131072 MB
    node 3 cpus: 30
    node 3 size: 131072 MB
    node 4 cpus:
    node 4 size: 131072 MB
    node 5 cpus: 31
    node 5 size: 131072 MB
    
    With the patch applied :
    -----------------------
    
    QEMU 1.1.50 monitor - type 'help' for more information
    (qemu) info numa
    6 nodes
    node 0 cpus: 0 1 2 3 4 5 6 7 8 9
    node 0 size: 131072 MB
    node 1 cpus: 10 11 12 13 14 15 16 17 18 19
    node 1 size: 131072 MB
    node 2 cpus: 20 21 22 23 24 25 26 27 28 29
    node 2 size: 131072 MB
    node 3 cpus: 30 31 32 33 34 35 36 37 38 39
    node 3 size: 131072 MB
    node 4 cpus: 40 41 42 43 44 45 46 47 48 49
    node 4 size: 131072 MB
    node 5 cpus: 50 51 52 53 54 55 56 57 58 59
    node 5 size: 131072 MB
    
    b) >64 VCPUs specified with -numa option:
    
    /usr/local/bin/qemu-system-x86_64 \
    -enable-kvm \
    -cpu Westmere,+rdtscp,+pdpe1gb,+dca,+pdcm,+xtpr,+tm2,+est,+smx,+vmx,+ds_cpl,+monitor,+dtes64,+pclmuldq,+pbe,+tm,+ht,+ss,+acpi,+d-vnc :4
    
    ...
    
    Upstream qemu :
    --------------
    
    only 63 CPUs in NUMA mode supported.
    only 64 CPUs in NUMA mode supported.
    QEMU 1.1.50 monitor - type 'help' for more information
    (qemu) info numa
    8 nodes
    node 0 cpus: 6 7 8 9 38 39 40 41 70 71 72 73
    node 0 size: 65536 MB
    node 1 cpus: 10 11 12 13 14 15 16 17 18 19 42 43 44 45 46 47 48 49 50 51 74 75 76 77 78 79
    node 1 size: 65536 MB
    node 2 cpus: 20 21 22 23 24 25 26 27 28 29 52 53 54 55 56 57 58 59 60 61
    node 2 size: 65536 MB
    node 3 cpus: 30 62
    node 3 size: 65536 MB
    node 4 cpus:
    node 4 size: 65536 MB
    node 5 cpus:
    node 5 size: 65536 MB
    node 6 cpus: 31 63
    node 6 size: 65536 MB
    node 7 cpus: 0 1 2 3 4 5 32 33 34 35 36 37 64 65 66 67 68 69
    node 7 size: 65536 MB
    
    With the patch applied :
    -----------------------
    
    QEMU 1.1.50 monitor - type 'help' for more information
    (qemu) info numa
    8 nodes
    node 0 cpus: 0 1 2 3 4 5 6 7 8 9
    node 0 size: 65536 MB
    node 1 cpus: 10 11 12 13 14 15 16 17 18 19
    node 1 size: 65536 MB
    node 2 cpus: 20 21 22 23 24 25 26 27 28 29
    node 2 size: 65536 MB
    node 3 cpus: 30 31 32 33 34 35 36 37 38 39
    node 3 size: 65536 MB
    node 4 cpus: 40 41 42 43 44 45 46 47 48 49
    node 4 size: 65536 MB
    node 5 cpus: 50 51 52 53 54 55 56 57 58 59
    node 5 size: 65536 MB
    node 6 cpus: 60 61 62 63 64 65 66 67 68 69
    node 6 size: 65536 MB
    node 7 cpus: 70 71 72 73 74 75 76 77 78 79
    
    Signed-off-by: default avatarChegu Vinod &lt;chegu_vinod@hp.com&gt;, Jim Hull &lt;jim.hull@hp.com&gt;, Craig Hada <craig.hada@hp.com>
    Tested-by: default avatarEduardo Habkost <ehabkost@redhat.com>
    Reviewed-by: default avatarEduardo Habkost <ehabkost@redhat.com>
    Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
    ee785fed