[ovirt-devel] [VDSM] [JSONRPC] early, coarse grained benchmarks
Francesco Romani
fromani at redhat.com
Mon Nov 17 09:47:40 UTC 2014
----- Original Message -----
> From: "Nir Soffer" <nsoffer at redhat.com>
> To: "Francesco Romani" <fromani at redhat.com>
> Cc: "engine-devel at ovirt.org" <devel at ovirt.org>
> Sent: Thursday, November 13, 2014 9:35:30 PM
> Subject: Re: [ovirt-devel] [VDSM] [JSONRPC] early, coarse grained benchmarks
[...]
> > I'm profiling four major flows at the moment, and improving tools along the
> > way.
> >
> > Here's my series, still being worked on and not yet ready for review (still
> > draft for this reason)
> >
> > http://gerrit.ovirt.org/#/q/status:open+project:vdsm+branch:master+topic:profile_runtime,n,z
> >
> > Here we have
> > 1. one patch to start/stop profiling at runtime using vdsClient
>
> Note that stopping yappi may segfault, as yappi is using unsafe iteration
> on Python internal link list without locking.
Not nice. But I guess that could be good enough if used only on controlled,
development environments
> If we add such option, it should work only from local connection.
How can we enforce that? Just check the peer address?
> > http://gerrit.ovirt.org/#/c/35024/
> > http://gerrit.ovirt.org/#/c/34989/
> > http://gerrit.ovirt.org/#/c/35139 (DRAFT)
> > http://gerrit.ovirt.org/#/c/35140 (DRAFT)
> >
> > Let's see the effect of these in the #3 flows.
> > Scenario:
> > RHEL 6.5 on minidell running VDSM master + patches, with 150 VMs each one 1
>
> What is the cpu usage and load during the test? In previous tests you had
> nice
> graph with this data.
To have them back is very easy, I'll do if that can help understand
the behaviour of VDSM and the performance.
> This is not a good test - you just overload vdsm. Instead, run this verb in a
> more typical rate (like engine does) and limit the test by the running time,
> not by the number of calls.
>
> Running like this will show that the patched version needs less cpu and
> complete more
> calls during the test duration (e.g. 5 mintues).
Yes, this sounds more typical and probably useful.
> > patched VDSM:
>
> What is "patched"? which patches are applied?
These:
> > http://gerrit.ovirt.org/#/c/35024/
> > http://gerrit.ovirt.org/#/c/34989/
> > http://gerrit.ovirt.org/#/c/35139 (DRAFT)
> > http://gerrit.ovirt.org/#/c/35140 (DRAFT)
> This look strange:
>
> vanila vdsm: 75750 19.871 0.000 75.819 0.001
> vm.py:2271(Vm._getRunningVmStats)
> patched vdsm: 234244 183.784 0.001 570.998 0.002
> vm.py:2274(Vm._getRunningVmStats)
>
> The second profile is doing about 3 times more Vm._getRunningVmStats calls,
> which takes 10 times more cpu time(?!).
>
> We don't have any info on the load - maybe vdsm is overloaded in both runs,
> which
> can explain why it does 1/3 of the work vs the patched version, but the
> patched
> version is probably overloaded as well, which can explain the much higher
> cpu time.
>
> I suggest to check the cpu usage, and do *not* make profiles where vdsm uses
> more
> then 100% cpu.
>
> Lets profile much lower load to understand where time is taken.
Agreed, another reason to try the scenario you suggested
> > Open points:
> > * profile remaining flows again and report like this (in progress for
> > getAllVmStats)
> > * add wiki page
> > * find out why there is a so high minimum price for list verb
> > * profile JSONRPC (needs patches to vdsClient)
>
> Comparing jsonrpc would be very interesting - but we don't have a jsonrpc
> client yet, so you better use the engine for this intead of vdsclient.
Will try both with new jsonrpc client you started and with engine,
started with client because full-stack profiling and/or engine profiling
is already in progress by others (Yuri/Piotr).
Thanks,
--
Francesco Romani
RedHat Engineering Virtualization R & D
Phone: 8261328
IRC: fromani
More information about the Devel
mailing list