[Openstack] [Nova][virt-driver-numa-placement]How to enbale instance with numa ?

Li, Chen chen.li at intel.com
Tue Feb 3 01:18:05 UTC 2015


Sorry, I do forget that.

Still 2 issues left:

Issue 1:

    After enabled hugepage:

        cat /proc/meminfo |grep -i huge
            AnonHugePages:   1685504 kB
            HugePages_Total:    3072
            HugePages_Free:     3072
            HugePages_Rsvd:        0
            HugePages_Surp:        0
            Hugepagesize:       2048 kB

        cat /proc/sys/vm/nr_hugepages
            3072

        I still get error in compute node even after I change the flavor from m1.medium  to m1.small:

        2015-02-03 09:03:23.562 ERROR nova.compute.manager [-] [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c] Instance failed to spawn
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c] Traceback (most recent call last):
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]   File "/opt/stack/nova/nova/compute/manager.py", line 2306, in _build_resources
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]     yield resources
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]   File "/opt/stack/nova/nova/compute/manager.py", line 2176, in _build_and_run_instance
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]     flavor=flavor)
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]   File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 2320, in spawn
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]     block_device_info=block_device_info)
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]   File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 4236, in _create_domain_and_network
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]     power_on=power_on)
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]   File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 4167, in _create_domain
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]     LOG.error(err)
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 82, in __exit__
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]     six.reraise(self.type_, self.value, self.tb)
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]   File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 4157, in _create_domain
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]     domain.createWithFlags(launch_flags)
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]   File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 183, in doit
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]     result = proxy_call(self._autowrap, f, *args, **kwargs)
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]   File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 141, in proxy_call
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]     rv = execute(f, *args, **kwargs)
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]   File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 122, in execute
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]     six.reraise(c, e, tb)
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]   File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 80, in tworker
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]     rv = meth(*args, **kwargs)
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]   File "/usr/lib/python2.7/dist-packages/libvirt.py", line 993, in createWithFlags
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]     if ret == -1: raise libvirtError ('virDomainCreateWithFlags() failed', dom=self)
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c] libvirtError: internal error: Unable to find any usable hugetlbfs mount for 2048 KiB
        2015-02-03 09:03:23.562 TRACE nova.compute.manager [instance: 4220d096-55fe-4d01-89b3-dc937e34c97c]




Issue 2:
    I removed the hugepage setting:

        nova flavor-show m1.small
        +----------------------------+------------------------+
        | Property                   | Value                  |
        +----------------------------+------------------------+
        | OS-FLV-DISABLED:disabled   | False                  |
        | OS-FLV-EXT-DATA:ephemeral  | 0                      |
        | disk                       | 20                     |
        | extra_specs                | {"hw:numa_nodes": "1"} |
        | id                         | 2                      |
        | name                       | m1.small               |
        | os-flavor-access:is_public | True                   |
        | ram                        | 2048                   |
        | rxtx_factor                | 1.0                    |
        | swap                       |                        |
        | vcpus                      | 1                      |
        +----------------------------+------------------------+

    The I get error:
        2015-02-03 09:15:43.921 ERROR nova.compute.manager [-] [instance: 833cfac5-4fac-438b-acff-579b41ee5729] Instance failed to spawn
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729] Traceback (most recent call last):
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]   File "/opt/stack/nova/nova/compute/manager.py", line 2306, in _build_resources
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]     yield resources
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]   File "/opt/stack/nova/nova/compute/manager.py", line 2176, in _build_and_run_instance
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]     flavor=flavor)
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]   File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 2320, in spawn
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]     block_device_info=block_device_info)
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]   File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 4236, in _create_domain_and_network
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]     power_on=power_on)
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]   File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 4167, in _create_domain
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]     LOG.error(err)
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 82, in __exit__
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]     six.reraise(self.type_, self.value, self.tb)
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]   File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 4157, in _create_domain
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]     domain.createWithFlags(launch_flags)
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]   File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 183, in doit
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]     result = proxy_call(self._autowrap, f, *args, **kwargs)
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]   File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 141, in proxy_call
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]     rv = execute(f, *args, **kwargs)
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]   File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 122, in execute
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]     six.reraise(c, e, tb)
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]   File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 80, in tworker
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]     rv = meth(*args, **kwargs)
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]   File "/usr/lib/python2.7/dist-packages/libvirt.py", line 993, in createWithFlags
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]     if ret == -1: raise libvirtError ('virDomainCreateWithFlags() failed', dom=self)
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729] libvirtError: internal error: process exited while connecting to monitor: 2015-02-03T01:15:43.331770Z qemu-system-x86_64: -object memory-backend-ram,size=2048M,id=ram-node0,host-nodes=0,policy=bind: NUMA node binding are not supported by this QEMU
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]
        2015-02-03 09:15:43.921 TRACE nova.compute.manager [instance: 833cfac5-4fac-438b-acff-579b41ee5729]


What should I do to solve this ?

Thanks.
-chen


-----Original Message-----
From: Daniel P. Berrange [mailto:berrange at redhat.com] 
Sent: Monday, February 02, 2015 5:54 PM
To: Li, Chen
Cc: openstack at lists.openstack.org
Subject: Re: [Openstack] [Nova][virt-driver-numa-placement]How to enbale instance with numa ?

>     nova flavor-key m1.medium set hw:mem_page_size=large

This second settings says that Nova must use large pages for the VM memory.
Did you actually reserve any large pages for use by VMs on the host in question ? This is an upfront admin task, not something Nova can do itself.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|


More information about the Openstack mailing list