
Here are example logs with running and stopping one vm: # tail -f /var/log/vdsm/vdsm.log | grep health Thread-13::DEBUG::2016-01-14 19:42:04,625::health::84::health::(_check) Checking health Thread-13::DEBUG::2016-01-14 19:42:04,651::health::86::health::(_check) Collected 25 objects Thread-13::WARNING::2016-01-14 19:42:04,656::health::100::health::(_check) Found 6085 uncollectible objects, 0 suspects implementing __del__: [] Vm was started here... Thread-13::DEBUG::2016-01-14 19:43:04,657::health::84::health::(_check) Checking health Thread-13::DEBUG::2016-01-14 19:43:04,688::health::86::health::(_check) Collected 1680 objects Thread-13::WARNING::2016-01-14 19:43:04,697::health::100::health::(_check) Found 11041 uncollectible objects, 0 suspects implementing __del__: [] Thread-13::DEBUG::2016-01-14 19:44:04,698::health::84::health::(_check) Checking health Thread-13::DEBUG::2016-01-14 19:44:04,729::health::86::health::(_check) Collected 57 objects Thread-13::WARNING::2016-01-14 19:44:04,737::health::100::health::(_check) Found 11096 uncollectible objects, 0 suspects implementing __del__: [] Thread-13::DEBUG::2016-01-14 19:45:04,738::health::84::health::(_check) Checking health Thread-13::DEBUG::2016-01-14 19:45:04,769::health::86::health::(_check) Collected 69 objects Thread-13::WARNING::2016-01-14 19:45:04,778::health::100::health::(_check) Found 11163 uncollectible objects, 0 suspects implementing __del__: [] Vm was shutdown here... Thread-13::DEBUG::2016-01-14 19:46:04,779::health::84::health::(_check) Checking health Thread-13::DEBUG::2016-01-14 19:46:04,809::health::86::health::(_check) Collected 2272 objects Thread-13::WARNING::2016-01-14 19:46:04,819::health::100::health::(_check) Found 13464 uncollectible objects, 28 suspects implementing __del__: ['<pthreading.Lock object at 0x7f1d8016f908>', '<pthreading.Lock object at 0x7f1d801804d0>', '<pthreading.Lock object at 0x7f1cf8010f38>', '<pthreading.Lock object at 0x7f1d8016f7a0>', '<pthreading.Lock object at 0x7f1d20003680>', '<pthreading.Lock object at 0x7f1da8112998>', '<pthreading.Lock object at 0x7f1d8016fa28>', '<pthreading.Lock object at 0x7f1da8112830>', '<pthread.Cond object at 0x7f1da811cf50>', '<pthreading.Lock object at 0x7f1d8016f200>', '<pthread.Cond object at 0x7f1da811ca50>', '<pthreading.Lock object at 0x7f1cf8010fc8>', '<pthread.Cond object at 0x7f1da8115c50>', '<pthreading.Lock object at 0x7f1da8112878>', '<pthread.Cond object at 0x7f1da811c550>', '<pthreading.Lock object at 0x7f1d8016f9e0>', '<pthread.Cond object at 0x7f1da811ca90>', '<pthreading.Lock object at 0x7f1d8016f680>', '<pthread.Cond object at 0x7f1da811cc50>', '<libvirt.virDomain object at 0x1ba8210>', '<pthreading.Lock object at 0x7f1d8016f758>', '<pthread.Cond object at 0x7f1da811cb50>', '<pthreading.Lock object at 0x7f1d8016fb90>', '<pthread.Cond object at 0x7f1da811cc10>', '<pthread.Cond object at 0x233ed50>', '<pthreading.Lock object at 0x7f1ce0227c20>', '<pthreading.Lock object at 0x7f1ce0227ab8>', '<pthread.Cond object at 0x233ed10>'] Need to test with should be fixed by https://gerrit.ovirt.org/51630, which should eliminate '<libvirt.virDomain object at 0x1ba8210>', and maybe also the pthreading objects. Nir On Thu, Jan 14, 2016 at 7:38 PM, Nir Soffer <nsoffer@redhat.com> wrote:
Hi all,
Continuing the leak investigation Francesco and Milan are working on, I posted this patch, adding leak health monitoring to vdsm [1]. This patch currently monitor collectible objects, and we may add other interesting stuff later if needed.
To enable the monitor, you must set:
[devel] health_monitor_enable = true
In vdsm.conf, and restart vdsm.
Here is an example logs - this was logged 60 seconds after starting vdsm, when running as spm:
Thread-13::DEBUG::2016-01-14 18:53:43,239::health::84::health::(_check) Checking health Thread-13::DEBUG::2016-01-14 18:53:43,272::health::86::health::(_check) Collected 460 objects Thread-13::WARNING::2016-01-14 18:53:43,277::health::100::health::(_check) Found 5873 uncollectible objects, 10 suspects implementing __del__: ['<pthreading.Lock object at 0x7f012c115320>', '<pthreading.Lock object at 0x7f012c115440>', '<pthreading.Lock object at 0x7f012c1153b0>', '<pthreading.Lock object at 0x7f012c1154d0>', '<pthread.Cond object at 0x7f012c111350>', '<pthread.Cond object at 0x7f012c1112d0>', '<pthread.Cond object at 0x7f012c111250>', '<pthread.Cond object at 0x7f012c111850>', '<pthread.Cond object at 0x7f012c1117d0>', '<pthread.Cond object at 0x7f012c111750>']
We found 460 uncollectible objects, 10 of them are objects implementing __del__. Having such object in a reference cycle make the entire cycle uncollectible.
The pthreading objects in this log grow as vdsm continue to run, even without any interaction with engine. The pthreading objects leak is caused by a cycle in storage.misc.RWLock, fixed in patch [2].
After solving the pthreading leak, we still have many uncollectible objects in the logs, listing them, it seems that the suspect is hiding inside a collection (dict, list, tuple) and does not appear in the gc.garbage list. I will address this in later patch, searching in the entire object graph instead of the top level of gc.garbage.
See end of this mail for list of these objects. I printed them like this:
Enable manhole debugging shell:
[devel] manhole_enable = true
Connect to vdsm using manhole:
nc -U /run/vdsm/vdsmd.manhole
Print garbage:
import pprint import gc with open('/tmp/garbage.txt', 'w') as f: pprint.pprint(gc.garbage, stream=f, indent=4)
These objects looks related to libvirt - Francesco, can you take a look?
[1] https://gerrit.ovirt.org/51708 [2] https://gerrit.ovirt.org/51868
Nir
--- garbage after patch [2] ---
[ (<type '_ctypes.Array'>,), { '__dict__': <attribute '__dict__' of 'c_char_Array_60' objects>, '__doc__': None, '__module__': 'vdsm.netlink', '__weakref__': <attribute '__weakref__' of 'c_char_Array_60' objects>, '_length_': 60, '_type_': <class 'ctypes.c_char'>, 'raw': <attribute 'raw' of 'c_char_Array_60' objects>, 'value': <attribute 'value' of 'c_char_Array_60' objects>}, <class 'vdsm.netlink.c_char_Array_60'>, <attribute '__dict__' of 'c_char_Array_60' objects>, <attribute '__weakref__' of 'c_char_Array_60' objects>, ( <class 'vdsm.netlink.c_char_Array_60'>, <type '_ctypes.Array'>, <type '_ctypes._CData'>, <type 'object'>), <attribute 'raw' of 'c_char_Array_60' objects>, <attribute 'value' of 'c_char_Array_60' objects>, <cell at 0x23662f0: bool object at 0x7f1e086c8c40>, <cell at 0x2366328: NoneType object at 0x7f1e086dcf00>, <cell at 0x2366360: function object at 0x233f488>, ( <cell at 0x23662f0: bool object at 0x7f1e086c8c40>, <cell at 0x2366328: NoneType object at 0x7f1e086dcf00>, <cell at 0x2366360: function object at 0x233f488>), <function wrapMethod at 0x233f488>, [ [ <Recursion on list with id=34033464>, <Recursion on list with id=34033464>, 'class'], [ <Recursion on list with id=34033464>, <Recursion on list with id=34033464>, 'class'], None], [ [ <Recursion on list with id=33979064>, <Recursion on list with id=33979064>, None], [ <Recursion on list with id=33979064>, <Recursion on list with id=33979064>, None], 'class'], [ [ <Recursion on list with id=35535256>, <Recursion on list with id=35535256>, 'class'], [ <Recursion on list with id=35535256>, <Recursion on list with id=35535256>, 'class'], None], [ [ <Recursion on list with id=35535832>, <Recursion on list with id=35535832>, None], [ <Recursion on list with id=35535832>, <Recursion on list with id=35535832>, None], 'class'], [ [ <Recursion on list with id=35556312>, <Recursion on list with id=35556312>, 'class'], [ <Recursion on list with id=35556312>, <Recursion on list with id=35556312>, 'class'], None], [ [ <Recursion on list with id=35556600>, <Recursion on list with id=35556600>, None], [ <Recursion on list with id=35556600>, <Recursion on list with id=35556600>, None], 'class'], [ [ <Recursion on list with id=35556960>, <Recursion on list with id=35556960>, 'class'], [ <Recursion on list with id=35556960>, <Recursion on list with id=35556960>, 'class'], None], [ [ <Recursion on list with id=35561912>, <Recursion on list with id=35561912>, None], [ <Recursion on list with id=35561912>, <Recursion on list with id=35561912>, None], 'class'], [ [ <Recursion on list with id=35583904>, <Recursion on list with id=35583904>, 'class'], [ <Recursion on list with id=35583904>, <Recursion on list with id=35583904>, 'class'], None], [ [ <Recursion on list with id=35584912>, <Recursion on list with id=35584912>, None], [ <Recursion on list with id=35584912>, <Recursion on list with id=35584912>, None], 'class'], [ [ <Recursion on list with id=36340368>, <Recursion on list with id=36340368>, 'class'], [ <Recursion on list with id=36340368>, <Recursion on list with id=36340368>, 'class'], None], [ [ <Recursion on list with id=36340872>, <Recursion on list with id=36340872>, None], [ <Recursion on list with id=36340872>, <Recursion on list with id=36340872>, None], 'class'], [ [ <Recursion on list with id=36364872>, <Recursion on list with id=36364872>, 'class'], [ <Recursion on list with id=36364872>, <Recursion on list with id=36364872>, 'class'], None], [ [ <Recursion on list with id=36365520>, <Recursion on list with id=36365520>, None], [ <Recursion on list with id=36365520>, <Recursion on list with id=36365520>, None], 'class'], [ [ <Recursion on list with id=36457216>, <Recursion on list with id=36457216>, 'class'], [ <Recursion on list with id=36457216>, <Recursion on list with id=36457216>, 'class'], None], [ [ <Recursion on list with id=36458008>, <Recursion on list with id=36458008>, None], [ <Recursion on list with id=36458008>, <Recursion on list with id=36458008>, None], 'class'], [ [ <Recursion on list with id=36460520>, <Recursion on list with id=36460520>, 'class'], [ <Recursion on list with id=36460520>, <Recursion on list with id=36460520>, 'class'], None], [ [ <Recursion on list with id=36461168>, <Recursion on list with id=36461168>, None], [ <Recursion on list with id=36461168>, <Recursion on list with id=36461168>, None], 'class'], [ [ <Recursion on list with id=36562344>, <Recursion on list with id=36562344>, 'class'], [ <Recursion on list with id=36562344>, <Recursion on list with id=36562344>, 'class'], None], [ [ <Recursion on list with id=36563280>, <Recursion on list with id=36563280>, None], [ <Recursion on list with id=36563280>, <Recursion on list with id=36563280>, None], 'class'], <Element 'memory' at 0x2364710>, { '_children': [], 'attrib': { 'unit': 'KiB'}, 'tag': 'memory', 'tail': '\n ', 'text': '4095476'}, [], <Element 'pages' at 0x2364750>, { '_children': [], 'attrib': { 'size': '4', 'unit': 'KiB'}, 'tag': 'pages', 'tail': '\n ', 'text': '1023869'}, [], <Element 'pages' at 0x2364790>, { '_children': [], 'attrib': { 'size': '2048', 'unit': 'KiB'}, 'tag': 'pages', 'tail': '\n ', 'text': '0'}, [], <Element 'distances' at 0x23647d0>, { '_children': [<Element 'sibling' at 0x2364810>], 'attrib': { }, 'tag': 'distances', 'tail': '\n ', 'text': '\n '}, [<Element 'sibling' at 0x2364810>], <Element 'sibling' at 0x2364810>, { '_children': [], 'attrib': { 'id': '0', 'value': '10'}, 'tag': 'sibling', 'tail': '\n '}, [], <Element 'cpus' at 0x2364850>, { '_children': [ <Element 'cpu' at 0x2364890>, <Element 'cpu' at 0x23648d0>, <Element 'cpu' at 0x2364910>, <Element 'cpu' at 0x2364950>, <Element 'cpu' at 0x2364990>, <Element 'cpu' at 0x23649d0>, <Element 'cpu' at 0x2364a10>, <Element 'cpu' at 0x2364a50>], 'attrib': { 'num': '8'}, 'tag': 'cpus', 'tail': '\n ', 'text': '\n '}, [ <Element 'cpu' at 0x2364890>, <Element 'cpu' at 0x23648d0>, <Element 'cpu' at 0x2364910>, <Element 'cpu' at 0x2364950>, <Element 'cpu' at 0x2364990>, <Element 'cpu' at 0x23649d0>, <Element 'cpu' at 0x2364a10>, <Element 'cpu' at 0x2364a50>], <Element 'cpu' at 0x2364890>, { '_children': [], 'attrib': { 'core_id': '0', 'id': '0', 'siblings': '0', 'socket_id': '0'}, 'tag': 'cpu', 'tail': '\n '}, [], <Element 'cpu' at 0x23648d0>, { '_children': [], 'attrib': { 'core_id': '0', 'id': '1', 'siblings': '1', 'socket_id': '1'}, 'tag': 'cpu', 'tail': '\n '}, [], <Element 'cpu' at 0x2364910>, { '_children': [], 'attrib': { 'core_id': '0', 'id': '2', 'siblings': '2', 'socket_id': '2'}, 'tag': 'cpu', 'tail': '\n '}, [], <Element 'cpu' at 0x2364950>, { '_children': [], 'attrib': { 'core_id': '0', 'id': '3', 'siblings': '3', 'socket_id': '3'}, 'tag': 'cpu', 'tail': '\n '}, [], <Element 'cpu' at 0x2364990>, { '_children': [], 'attrib': { 'core_id': '0', 'id': '4', 'siblings': '4', 'socket_id': '4'}, 'tag': 'cpu', 'tail': '\n '}, [], <Element 'cpu' at 0x23649d0>, { '_children': [], 'attrib': { 'core_id': '0', 'id': '5', 'siblings': '5', 'socket_id': '5'}, 'tag': 'cpu', 'tail': '\n '}, [], <Element 'cpu' at 0x2364a10>, { '_children': [], 'attrib': { 'core_id': '0', 'id': '6', 'siblings': '6', 'socket_id': '6'}, 'tag': 'cpu', 'tail': '\n '}, [], <Element 'cpu' at 0x2364a50>, { '_children': [], 'attrib': { 'core_id': '0', 'id': '7', 'siblings': '7', 'socket_id': '7'}, 'tag': 'cpu', 'tail': '\n '}, [], <Element 'secmodel' at 0x2364a90>, { '_children': [ <Element 'model' at 0x2364ad0>, <Element 'doi' at 0x2364b10>, <Element 'baselabel' at 0x2364b50>, <Element 'baselabel' at 0x2364b90>], 'attrib': { }, 'tag': 'secmodel', 'tail': '\n ', 'text': '\n '}, [ <Element 'model' at 0x2364ad0>, <Element 'doi' at 0x2364b10>, <Element 'baselabel' at 0x2364b50>, <Element 'baselabel' at 0x2364b90>], <Element 'model' at 0x2364ad0>, { '_children': [], 'attrib': { }, 'tag': 'model', 'tail': '\n ', 'text': 'selinux'}, [], <Element 'doi' at 0x2364b10>, { '_children': [], 'attrib': { }, 'tag': 'doi', 'tail': '\n ', 'text': '0'}, [], <Element 'baselabel' at 0x2364b50>, { '_children': [], 'attrib': { 'type': 'kvm'}, 'tag': 'baselabel', 'tail': '\n ', 'text': 'system_u:system_r:svirt_t:s0'}, [], <Element 'baselabel' at 0x2364b90>, { '_children': [], 'attrib': { 'type': 'qemu'}, 'tag': 'baselabel', 'tail': '\n ', 'text': 'system_u:system_r:svirt_tcg_t:s0'}, [], <Element 'secmodel' at 0x2364bd0>, { '_children': [ <Element 'model' at 0x2364c10>, <Element 'doi' at 0x2364c50>, <Element 'baselabel' at 0x2364c90>, <Element 'baselabel' at 0x2364cd0>], 'attrib': { }, 'tag': 'secmodel', 'tail': '\n ', 'text': '\n '}, [ <Element 'model' at 0x2364c10>, <Element 'doi' at 0x2364c50>, <Element 'baselabel' at 0x2364c90>, <Element 'baselabel' at 0x2364cd0>], <Element 'model' at 0x2364c10>, { '_children': [], 'attrib': { }, 'tag': 'model', 'tail': '\n ', 'text': 'dac'}, [], <Element 'doi' at 0x2364c50>, { '_children': [], 'attrib': { }, 'tag': 'doi', 'tail': '\n ', 'text': '0'}, [], <Element 'baselabel' at 0x2364c90>, { '_children': [], 'attrib': { 'type': 'kvm'}, 'tag': 'baselabel', 'tail': '\n ', 'text': '+107:+107'}, [], <Element 'baselabel' at 0x2364cd0>, { '_children': [], 'attrib': { 'type': 'qemu'}, 'tag': 'baselabel', 'tail': '\n ', 'text': '+107:+107'}, [], <Element 'guest' at 0x2364d10>, { '_children': [ <Element 'os_type' at 0x2364d50>, <Element 'arch' at 0x2364d90>, <Element 'features' at 0x2369390>], 'attrib': { }, 'tag': 'guest', 'tail': '\n\n ', 'text': '\n '}, [ <Element 'os_type' at 0x2364d50>, <Element 'arch' at 0x2364d90>, <Element 'features' at 0x2369390>], <Element 'os_type' at 0x2364d50>, { '_children': [], 'attrib': { }, 'tag': 'os_type', 'tail': '\n ', 'text': 'hvm'}, [], <Element 'arch' at 0x2364d90>, { '_children': [ <Element 'wordsize' at 0x2364dd0>, <Element 'emulator' at 0x2364e10>, <Element 'machine' at 0x2364e90>, <Element 'machine' at 0x2364ed0>, <Element 'machine' at 0x2364f10>, <Element 'machine' at 0x2364f50>, <Element 'machine' at 0x2364f90>, <Element 'machine' at 0x2364fd0>, <Element 'machine' at 0x2369050>, <Element 'machine' at 0x2369090>, <Element 'machine' at 0x23690d0>, <Element 'machine' at 0x2369110>, <Element 'machine' at 0x2369150>, <Element 'machine' at 0x2369190>, <Element 'machine' at 0x23691d0>, <Element 'machine' at 0x2369210>, <Element 'machine' at 0x2369250>, <Element 'domain' at 0x2369290>, <Element 'domain' at 0x23692d0>], 'attrib': { 'name': 'i686'}, 'tag': 'arch', 'tail': '\n ', 'text': '\n '}, [ <Element 'wordsize' at 0x2364dd0>, <Element 'emulator' at 0x2364e10>, <Element 'machine' at 0x2364e90>, <Element 'machine' at 0x2364ed0>, <Element 'machine' at 0x2364f10>, <Element 'machine' at 0x2364f50>, <Element 'machine' at 0x2364f90>, <Element 'machine' at 0x2364fd0>, <Element 'machine' at 0x2369050>, <Element 'machine' at 0x2369090>, <Element 'machine' at 0x23690d0>, <Element 'machine' at 0x2369110>, <Element 'machine' at 0x2369150>, <Element 'machine' at 0x2369190>, <Element 'machine' at 0x23691d0>, <Element 'machine' at 0x2369210>, <Element 'machine' at 0x2369250>, <Element 'domain' at 0x2369290>, <Element 'domain' at 0x23692d0>], <Element 'wordsize' at 0x2364dd0>, { '_children': [], 'attrib': { }, 'tag': 'wordsize', 'tail': '\n ', 'text': '32'}, [], <Element 'emulator' at 0x2364e10>, { '_children': [], 'attrib': { }, 'tag': 'emulator', 'tail': '\n ', 'text': '/usr/libexec/qemu-kvm'}, [], <Element 'machine' at 0x2364e90>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc-i440fx-rhel7.2.0'}, [], <Element 'machine' at 0x2364ed0>, { '_children': [], 'attrib': { 'canonical': 'pc-i440fx-rhel7.2.0', 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc'}, [], <Element 'machine' at 0x2364f10>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc-i440fx-rhel7.0.0'}, [], <Element 'machine' at 0x2364f50>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc-q35-rhel7.1.0'}, [], <Element 'machine' at 0x2364f90>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.3.0'}, [], <Element 'machine' at 0x2364fd0>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc-q35-rhel7.2.0'}, [], <Element 'machine' at 0x2369050>, { '_children': [], 'attrib': { 'canonical': 'pc-q35-rhel7.2.0', 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'q35'}, [], <Element 'machine' at 0x2369090>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.4.0'}, [], <Element 'machine' at 0x23690d0>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.0.0'}, [], <Element 'machine' at 0x2369110>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc-i440fx-rhel7.1.0'}, [], <Element 'machine' at 0x2369150>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.5.0'}, [], <Element 'machine' at 0x2369190>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.6.0'}, [], <Element 'machine' at 0x23691d0>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.1.0'}, [], <Element 'machine' at 0x2369210>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc-q35-rhel7.0.0'}, [], <Element 'machine' at 0x2369250>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.2.0'}, [], <Element 'domain' at 0x2369290>, { '_children': [], 'attrib': { 'type': 'qemu'}, 'tag': 'domain', 'tail': '\n '}, [], <Element 'domain' at 0x23692d0>, { '_children': [<Element 'emulator' at 0x2369310>], 'attrib': { 'type': 'kvm'}, 'tag': 'domain', 'tail': '\n ', 'text': '\n '}, [<Element 'emulator' at 0x2369310>], <Element 'emulator' at 0x2369310>, { '_children': [], 'attrib': { }, 'tag': 'emulator', 'tail': '\n ', 'text': '/usr/libexec/qemu-kvm'}, [], <Element 'features' at 0x2369390>, { '_children': [ <Element 'cpuselection' at 0x23693d0>, <Element 'deviceboot' at 0x2369410>, <Element 'disksnapshot' at 0x2369450>, <Element 'acpi' at 0x2369490>, <Element 'apic' at 0x23694d0>, <Element 'pae' at 0x2369510>, <Element 'nonpae' at 0x2369550>], 'attrib': { }, 'tag': 'features', 'tail': '\n ', 'text': '\n '}, [ <Element 'cpuselection' at 0x23693d0>, <Element 'deviceboot' at 0x2369410>, <Element 'disksnapshot' at 0x2369450>, <Element 'acpi' at 0x2369490>, <Element 'apic' at 0x23694d0>, <Element 'pae' at 0x2369510>, <Element 'nonpae' at 0x2369550>], <Element 'cpuselection' at 0x23693d0>, { '_children': [], 'attrib': { }, 'tag': 'cpuselection', 'tail': '\n '}, [], <Element 'deviceboot' at 0x2369410>, { '_children': [], 'attrib': { }, 'tag': 'deviceboot', 'tail': '\n '}, [], <Element 'disksnapshot' at 0x2369450>, { '_children': [], 'attrib': { 'default': 'on', 'toggle': 'no'}, 'tag': 'disksnapshot', 'tail': '\n '}, [], <Element 'acpi' at 0x2369490>, { '_children': [], 'attrib': { 'default': 'on', 'toggle': 'yes'}, 'tag': 'acpi', 'tail': '\n '}, [], <Element 'apic' at 0x23694d0>, { '_children': [], 'attrib': { 'default': 'on', 'toggle': 'no'}, 'tag': 'apic', 'tail': '\n '}, [], <Element 'pae' at 0x2369510>, { '_children': [], 'attrib': { }, 'tag': 'pae', 'tail': '\n '}, [], <Element 'nonpae' at 0x2369550>, { '_children': [], 'attrib': { }, 'tag': 'nonpae', 'tail': '\n '}, [], <Element 'guest' at 0x2369590>, { '_children': [ <Element 'os_type' at 0x23695d0>, <Element 'arch' at 0x2369610>, <Element 'features' at 0x2369bd0>], 'attrib': { }, 'tag': 'guest', 'tail': '\n\n', 'text': '\n '}, [ <Element 'os_type' at 0x23695d0>, <Element 'arch' at 0x2369610>, <Element 'features' at 0x2369bd0>], <Element 'os_type' at 0x23695d0>, { '_children': [], 'attrib': { }, 'tag': 'os_type', 'tail': '\n ', 'text': 'hvm'}, [], <Element 'arch' at 0x2369610>, { '_children': [ <Element 'wordsize' at 0x2369650>, <Element 'emulator' at 0x2369690>, <Element 'machine' at 0x2369710>, <Element 'machine' at 0x2369750>, <Element 'machine' at 0x2369790>, <Element 'machine' at 0x23697d0>, <Element 'machine' at 0x2369810>, <Element 'machine' at 0x2369850>, <Element 'machine' at 0x2369890>, <Element 'machine' at 0x23698d0>, <Element 'machine' at 0x2369910>, <Element 'machine' at 0x2369950>, <Element 'machine' at 0x2369990>, <Element 'machine' at 0x23699d0>, <Element 'machine' at 0x2369a10>, <Element 'machine' at 0x2369a50>, <Element 'machine' at 0x2369a90>, <Element 'domain' at 0x2369ad0>, <Element 'domain' at 0x2369b10>], 'attrib': { 'name': 'x86_64'}, 'tag': 'arch', 'tail': '\n ', 'text': '\n '}, [ <Element 'wordsize' at 0x2369650>, <Element 'emulator' at 0x2369690>, <Element 'machine' at 0x2369710>, <Element 'machine' at 0x2369750>, <Element 'machine' at 0x2369790>, <Element 'machine' at 0x23697d0>, <Element 'machine' at 0x2369810>, <Element 'machine' at 0x2369850>, <Element 'machine' at 0x2369890>, <Element 'machine' at 0x23698d0>, <Element 'machine' at 0x2369910>, <Element 'machine' at 0x2369950>, <Element 'machine' at 0x2369990>, <Element 'machine' at 0x23699d0>, <Element 'machine' at 0x2369a10>, <Element 'machine' at 0x2369a50>, <Element 'machine' at 0x2369a90>, <Element 'domain' at 0x2369ad0>, <Element 'domain' at 0x2369b10>], <Element 'wordsize' at 0x2369650>, { '_children': [], 'attrib': { }, 'tag': 'wordsize', 'tail': '\n ', 'text': '64'}, [], <Element 'emulator' at 0x2369690>, { '_children': [], 'attrib': { }, 'tag': 'emulator', 'tail': '\n ', 'text': '/usr/libexec/qemu-kvm'}, [], <Element 'machine' at 0x2369710>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc-i440fx-rhel7.2.0'}, [], <Element 'machine' at 0x2369750>, { '_children': [], 'attrib': { 'canonical': 'pc-i440fx-rhel7.2.0', 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc'}, [], <Element 'machine' at 0x2369790>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc-i440fx-rhel7.0.0'}, [], <Element 'machine' at 0x23697d0>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc-q35-rhel7.1.0'}, [], <Element 'machine' at 0x2369810>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.3.0'}, [], <Element 'machine' at 0x2369850>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc-q35-rhel7.2.0'}, [], <Element 'machine' at 0x2369890>, { '_children': [], 'attrib': { 'canonical': 'pc-q35-rhel7.2.0', 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'q35'}, [], <Element 'machine' at 0x23698d0>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.4.0'}, [], <Element 'machine' at 0x2369910>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.0.0'}, [], <Element 'machine' at 0x2369950>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc-i440fx-rhel7.1.0'}, [], <Element 'machine' at 0x2369990>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.5.0'}, [], <Element 'machine' at 0x23699d0>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.6.0'}, [], <Element 'machine' at 0x2369a10>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.1.0'}, [], <Element 'machine' at 0x2369a50>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'pc-q35-rhel7.0.0'}, [], <Element 'machine' at 0x2369a90>, { '_children': [], 'attrib': { 'maxCpus': '240'}, 'tag': 'machine', 'tail': '\n ', 'text': 'rhel6.2.0'}, [], <Element 'domain' at 0x2369ad0>, { '_children': [], 'attrib': { 'type': 'qemu'}, 'tag': 'domain', 'tail': '\n '}, [], <Element 'domain' at 0x2369b10>, { '_children': [<Element 'emulator' at 0x2369b50>], 'attrib': { 'type': 'kvm'}, 'tag': 'domain', 'tail': '\n ', 'text': '\n '}, [<Element 'emulator' at 0x2369b50>], <Element 'emulator' at 0x2369b50>, { '_children': [], 'attrib': { }, 'tag': 'emulator', 'tail': '\n ', 'text': '/usr/libexec/qemu-kvm'}, [], <Element 'features' at 0x2369bd0>, { '_children': [ <Element 'cpuselection' at 0x2369c10>, <Element 'deviceboot' at 0x2369c50>, <Element 'disksnapshot' at 0x2369c90>, <Element 'acpi' at 0x2369cd0>, <Element 'apic' at 0x2369d10>], 'attrib': { }, 'tag': 'features', 'tail': '\n ', 'text': '\n '}, [ <Element 'cpuselection' at 0x2369c10>, <Element 'deviceboot' at 0x2369c50>, <Element 'disksnapshot' at 0x2369c90>, <Element 'acpi' at 0x2369cd0>, <Element 'apic' at 0x2369d10>], <Element 'cpuselection' at 0x2369c10>, { '_children': [], 'attrib': { }, 'tag': 'cpuselection', 'tail': '\n '}, [], <Element 'deviceboot' at 0x2369c50>, { '_children': [], 'attrib': { }, 'tag': 'deviceboot', 'tail': '\n '}, [], <Element 'disksnapshot' at 0x2369c90>, { '_children': [], 'attrib': { 'default': 'on', 'toggle': 'no'}, 'tag': 'disksnapshot', 'tail': '\n '}, [], <Element 'acpi' at 0x2369cd0>, { '_children': [], 'attrib': { 'default': 'on', 'toggle': 'yes'}, 'tag': 'acpi', 'tail': '\n '}, [], <Element 'apic' at 0x2369d10>, { '_children': [], 'attrib': { 'default': 'on', 'toggle': 'no'}, 'tag': 'apic', 'tail': '\n '}, [], [], (<type '_ctypes.Array'>,), { '__dict__': <attribute '__dict__' of 'c_char_Array_60' objects>, '__doc__': None, '__module__': 'vdsm.netlink', '__weakref__': <attribute '__weakref__' of 'c_char_Array_60' objects>, '_length_': 60, '_type_': <class 'ctypes.c_char'>, 'raw': <attribute 'raw' of 'c_char_Array_60' objects>, 'value': <attribute 'value' of 'c_char_Array_60' objects>}, <class 'vdsm.netlink.c_char_Array_60'>, <attribute '__dict__' of 'c_char_Array_60' objects>, <attribute '__weakref__' of 'c_char_Array_60' objects>, ( <class 'vdsm.netlink.c_char_Array_60'>, <type '_ctypes.Array'>, <type '_ctypes._CData'>, <type 'object'>), <attribute 'raw' of 'c_char_Array_60' objects>, <attribute 'value' of 'c_char_Array_60' objects>, <xml.etree.ElementTree.XMLParser object at 0x2357f50>, { '_doctype': None, '_error': <class 'xml.parsers.expat.ExpatError'>, '_names': { u'acpi': 'acpi', u'apic': 'apic', u'arch': 'arch', u'baselabel': 'baselabel', u'canonical': 'canonical', u'capabilities': 'capabilities', u'cell': 'cell', u'cells': 'cells', u'core_id': 'core_id', u'cores': 'cores', u'cpu': 'cpu', u'cpus': 'cpus', u'cpuselection': 'cpuselection', u'default': 'default', u'deviceboot': 'deviceboot', u'disksnapshot': 'disksnapshot', u'distances': 'distances', u'doi': 'doi', u'domain': 'domain', u'emulator': 'emulator', u'feature': 'feature', u'features': 'features', u'guest': 'guest', u'host': 'host', u'id': 'id', u'live': 'live', u'machine': 'machine', u'maxCpus': 'maxCpus', u'memory': 'memory', u'migration_features': 'migration_features', u'model': 'model', u'name': 'name', u'nonpae': 'nonpae', u'num': 'num', u'os_type': 'os_type', u'pae': 'pae', u'pages': 'pages', u'power_management': 'power_management', u'secmodel': 'secmodel', u'sibling': 'sibling', u'siblings': 'siblings', u'size': 'size', u'socket_id': 'socket_id', u'sockets': 'sockets', u'suspend_disk': 'suspend_disk', u'suspend_hybrid': 'suspend_hybrid', u'suspend_mem': 'suspend_mem', u'threads': 'threads', u'toggle': 'toggle', u'topology': 'topology', u'type': 'type', u'unit': 'unit', u'uri_transport': 'uri_transport', u'uri_transports': 'uri_transports', u'uuid': 'uuid', u'value': 'value', u'vendor': 'vendor', u'wordsize': 'wordsize'}, '_target': <xml.etree.ElementTree.TreeBuilder object at 0x2357f10>, 'entity': { }, 'parser': <pyexpat.xmlparser object at 0x22e5360>, 'version': 'Expat 2.1.0'}, <pyexpat.xmlparser object at 0x22e5360>, <xml.etree.ElementTree.TreeBuilder object at 0x2357f10>, <bound method XMLParser._start_list of <xml.etree.ElementTree.XMLParser object at 0x2357f50>>, <bound method XMLParser._end of <xml.etree.ElementTree.XMLParser object at 0x2357f50>>, <bound method XMLParser._pi of <xml.etree.ElementTree.XMLParser object at 0x2357f50>>, <bound method XMLParser._data of <xml.etree.ElementTree.XMLParser object at 0x2357f50>>, <bound method XMLParser._comment of <xml.etree.ElementTree.XMLParser object at 0x2357f50>>, <bound method XMLParser._default of <xml.etree.ElementTree.XMLParser object at 0x2357f50>>, { '_data': [], '_elem': [], '_factory': <class 'xml.etree.ElementTree.Element'>, '_last': <Element 'capabilities' at 0x2357f90>, '_tail': 1}, [], <Element 'cell' at 0x23646d0>, <Element 'cells' at 0x2364690>, <Element 'topology' at 0x2364650>, <Element 'host' at 0x2357fd0>, <Element 'capabilities' at 0x2357f90>, { '_children': [ <Element 'memory' at 0x2364710>, <Element 'pages' at 0x2364750>, <Element 'pages' at 0x2364790>, <Element 'distances' at 0x23647d0>, <Element 'cpus' at 0x2364850>], 'attrib': { 'id': '0'}, 'tag': 'cell', 'tail': '\n ', 'text': '\n '}, { '_children': [<Element 'cell' at 0x23646d0>], 'attrib': { 'num': '1'}, 'tag': 'cells', 'tail': '\n ', 'text': '\n '}, { '_children': [<Element 'cells' at 0x2364690>], 'attrib': { }, 'tag': 'topology', 'tail': '\n ', 'text': '\n '}, { '_children': [ <Element 'uuid' at 0x2364050>, <Element 'cpu' at 0x2364090>, <Element 'power_management' at 0x2364390>, <Element 'migration_features' at 0x23644d0>, <Element 'topology' at 0x2364650>, <Element 'secmodel' at 0x2364a90>, <Element 'secmodel' at 0x2364bd0>], 'attrib': { }, 'tag': 'host', 'tail': '\n\n ', 'text': '\n '}, { '_children': [ <Element 'host' at 0x2357fd0>, <Element 'guest' at 0x2364d10>, <Element 'guest' at 0x2369590>], 'attrib': { }, 'tag': 'capabilities', 'text': '\n\n '}, [ <Element 'memory' at 0x2364710>, <Element 'pages' at 0x2364750>, <Element 'pages' at 0x2364790>, <Element 'distances' at 0x23647d0>, <Element 'cpus' at 0x2364850>], [<Element 'cell' at 0x23646d0>], [<Element 'cells' at 0x2364690>], [ <Element 'uuid' at 0x2364050>, <Element 'cpu' at 0x2364090>, <Element 'power_management' at 0x2364390>, <Element 'migration_features' at 0x23644d0>, <Element 'topology' at 0x2364650>, <Element 'secmodel' at 0x2364a90>, <Element 'secmodel' at 0x2364bd0>], [ <Element 'host' at 0x2357fd0>, <Element 'guest' at 0x2364d10>, <Element 'guest' at 0x2369590>], <Element 'migration_features' at 0x23644d0>, <Element 'power_management' at 0x2364390>, <Element 'cpu' at 0x2364090>, <Element 'uuid' at 0x2364050>, { '_children': [ <Element 'live' at 0x2364510>, <Element 'uri_transports' at 0x2364590>], 'attrib': { }, 'tag': 'migration_features', 'tail': '\n ', 'text': '\n '}, { '_children': [ <Element 'suspend_mem' at 0x23643d0>, <Element 'suspend_disk' at 0x2364410>, <Element 'suspend_hybrid' at 0x2364490>], 'attrib': { }, 'tag': 'power_management', 'tail': '\n ', 'text': '\n '}, { '_children': [ <Element 'arch' at 0x23640d0>, <Element 'model' at 0x2364110>, <Element 'vendor' at 0x2364150>, <Element 'topology' at 0x2364190>, <Element 'feature' at 0x23641d0>, <Element 'feature' at 0x2364210>, <Element 'feature' at 0x2364250>, <Element 'feature' at 0x2364290>, <Element 'feature' at 0x23642d0>, <Element 'pages' at 0x2364310>, <Element 'pages' at 0x2364350>], 'attrib': { }, 'tag': 'cpu', 'tail': '\n ', 'text': '\n '}, { '_children': [], 'attrib': { }, 'tag': 'uuid', 'tail': '\n ', 'text': 'a920d963-c18f-4fda-aa5a-deee9bbcde9d'}, [<Element 'live' at 0x2364510>, <Element 'uri_transports' at 0x2364590>], [ <Element 'suspend_mem' at 0x23643d0>, <Element 'suspend_disk' at 0x2364410>, <Element 'suspend_hybrid' at 0x2364490>], [ <Element 'arch' at 0x23640d0>, <Element 'model' at 0x2364110>, <Element 'vendor' at 0x2364150>, <Element 'topology' at 0x2364190>, <Element 'feature' at 0x23641d0>, <Element 'feature' at 0x2364210>, <Element 'feature' at 0x2364250>, <Element 'feature' at 0x2364290>, <Element 'feature' at 0x23642d0>, <Element 'pages' at 0x2364310>, <Element 'pages' at 0x2364350>], [], <Element 'uri_transports' at 0x2364590>, <Element 'live' at 0x2364510>, <Element 'suspend_hybrid' at 0x2364490>, <Element 'suspend_disk' at 0x2364410>, <Element 'suspend_mem' at 0x23643d0>, <Element 'pages' at 0x2364350>, <Element 'pages' at 0x2364310>, <Element 'feature' at 0x23642d0>, <Element 'feature' at 0x2364290>, <Element 'feature' at 0x2364250>, <Element 'feature' at 0x2364210>, <Element 'feature' at 0x23641d0>, <Element 'topology' at 0x2364190>, <Element 'vendor' at 0x2364150>, <Element 'model' at 0x2364110>, <Element 'arch' at 0x23640d0>, { '_children': [ <Element 'uri_transport' at 0x23645d0>, <Element 'uri_transport' at 0x2364610>], 'attrib': { }, 'tag': 'uri_transports', 'tail': '\n ', 'text': '\n '}, { '_children': [], 'attrib': { }, 'tag': 'live', 'tail': '\n '}, { '_children': [], 'attrib': { }, 'tag': 'suspend_hybrid', 'tail': '\n '}, { '_children': [], 'attrib': { }, 'tag': 'suspend_disk', 'tail': '\n '}, { '_children': [], 'attrib': { }, 'tag': 'suspend_mem', 'tail': '\n '}, { '_children': [], 'attrib': { 'size': '2048', 'unit': 'KiB'}, 'tag': 'pages', 'tail': '\n '}, { '_children': [], 'attrib': { 'size': '4', 'unit': 'KiB'}, 'tag': 'pages', 'tail': '\n '}, { '_children': [], 'attrib': { 'name': 'ss'}, 'tag': 'feature', 'tail': '\n '}, { '_children': [], 'attrib': { 'name': 'vmx'}, 'tag': 'feature', 'tail': '\n '}, { '_children': [], 'attrib': { 'name': 'pcid'}, 'tag': 'feature', 'tail': '\n '}, { '_children': [], 'attrib': { 'name': 'osxsave'}, 'tag': 'feature', 'tail': '\n '}, { '_children': [], 'attrib': { 'name': 'hypervisor'}, 'tag': 'feature', 'tail': '\n '}, { '_children': [], 'attrib': { 'cores': '1', 'sockets': '8', 'threads': '1'}, 'tag': 'topology', 'tail': '\n '}, { '_children': [], 'attrib': { }, 'tag': 'vendor', 'tail': '\n ', 'text': 'Intel'}, { '_children': [], 'attrib': { }, 'tag': 'model', 'tail': '\n ', 'text': 'IvyBridge'}, { '_children': [], 'attrib': { }, 'tag': 'arch', 'tail': '\n ', 'text': 'x86_64'}, [ <Element 'uri_transport' at 0x23645d0>, <Element 'uri_transport' at 0x2364610>], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], <Element 'uri_transport' at 0x2364610>, <Element 'uri_transport' at 0x23645d0>, { '_children': [], 'attrib': { }, 'tag': 'uri_transport', 'tail': '\n ', 'text': 'rdma'}, { '_children': [], 'attrib': { }, 'tag': 'uri_transport', 'tail': '\n ', 'text': 'tcp'}, [], [], (<type '_ctypes.Array'>,), { '__dict__': <attribute '__dict__' of 'c_char_Array_60' objects>, '__doc__': None, '__module__': 'vdsm.netlink', '__weakref__': <attribute '__weakref__' of 'c_char_Array_60' objects>, '_length_': 60, '_type_': <class 'ctypes.c_char'>, 'raw': <attribute 'raw' of 'c_char_Array_60' objects>, 'value': <attribute 'value' of 'c_char_Array_60' objects>}, <class 'vdsm.netlink.c_char_Array_60'>, <attribute '__dict__' of 'c_char_Array_60' objects>, <attribute '__weakref__' of 'c_char_Array_60' objects>, ( <class 'vdsm.netlink.c_char_Array_60'>, <type '_ctypes.Array'>, <type '_ctypes._CData'>, <type 'object'>), <attribute 'raw' of 'c_char_Array_60' objects>, <attribute 'value' of 'c_char_Array_60' objects>]