Hi all,
I noticed that Eldad posted profiling result from 144 cores / 144 vms run:
See
https://bugzilla.redhat.com/attachment.cgi?id=1128028
Looking at the profile bellow:
1. Why _rtnl_link_alloc_cache is so expensive?
called only 389 times, but the most expensive call
2. Creating DomainDescriptor seems expensive - is this xml.minidom?
3. guestagent.py:84(filt) is very expensive - we probbaly want to backport
7091bde guestagent: Speed up xml character filtering, can shave about
17% of cpu time in this run.
4. pthread.py function will disapper from the profile if we replace
pthreading with cthreading:
https://github.com/nirs/cthreading
5. Why do we see xmlrpc at the top of the profile? Is this the cost
of mom calls?
Eldad, can you repeat the same test with current master?
Nir
----
Thu Feb 18 00:50:24 2016 vdsm_144vms_1800sec_2.prof
29858105 function calls (34034631 primitive calls) in 1049.574 seconds
Ordered by: internal time
List reduced from 2420 to 20 due to restriction <20>
ncalls tottime percall cumtime percall filename:lineno(function)
389 64.937 0.167 64.941 0.167
link.py:133(_rtnl_link_alloc_cache)
598438 64.176 0.000 87.888 0.000
domain_descriptor.py:23(DomainDescriptor)
1535528 38.922 0.001 176.177 0.000 guestagent.py:84(filt)
57106 31.545 0.001 31.560 0.001
decoder.py:371(JSONDecoder.raw_decode)
168463 25.961 0.234 119.004 0.001
xmlrpclib.py:721(Marshaller.dump_struct)
4312452 25.095 0.000 77.012 0.000 utf_8.py:15(decode)
7341795 21.934 0.000 41.507 0.000 string.py:511(replace)
28881 18.092 0.001 19.921 0.001 pthread.py:133(Cond.timedwait)
386282 17.509 0.000 17.509 0.000 pthread.py:95(Lock.lock)
46277 16.798 0.000 45.280 0.001
guestagent.py:254(GuestAgent._handleMessage)
48090 16.298 0.000 37.809 0.001
expatbuilder.py:743(ExpatBuilderNS.start_element_handler)
2447266 14.128 0.000 55.635 0.000 httplib.py:331(HTTPResponse)
339514 13.689 0.014 20.629 0.000 password.py:69(_walk)
78549 12.450 0.000 12.635 0.000 minidom.py:344(Attr.__init__)
20117 12.381 0.001 20.961 0.001 vm.py:181(SetLinkAndNetworkError)
14470 12.224 0.001 12.802 0.001 xmlbuilder.py:1(<module>)
21404 11.527 0.001 36.225 0.002 vmstats.py:240(disks)
87612 11.441 0.000 35.701 0.000
sampling.py:59(InterfaceSample.readIfaceStat)
39924 11.323 0.000 23.047 0.001
__init__.py:242(LogRecord.__init__)
14509 10.816 0.001 96.236 0.007 xmlbuilder.py:12(Options)