<div dir="ltr">Thanks alot for the summary, this could be very helpful, we will have a test on these :)</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jul 10, 2019 at 2:29 AM Matt Riedemann <<a href="mailto:mriedemos@gmail.com">mriedemos@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I wanted to summarize a series of changes which have improved the <br>
performance of the NovaClusterDataModel builder for audits across single <br>
and multiple cells (in the CERN case) by a factor of 20-30%.<br>
<br>
There were initially three changes involved (in order):<br>
<br>
1. <a href="https://review.opendev.org/#/c/659688/" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/659688/</a> - Optimize<br>
NovaClusterDataModelCollector.add_instance_node<br>
<br>
Reports on that patch alone said it fixed a regression introduced in <br>
Stein with scoped audits:<br>
<br>
"I checked this patch on the my test environment on the stable/stein <br>
branch. I have more than 1000 virtual servers (some real, some dummy). <br>
Previously, in the stable/rocky branch, the time to build a cluster was <br>
about 15-20 minutes, in the Stein branch there was a regression and the <br>
time increased to 90 minutes. After this patch, the build time is only 2 <br>
minutes."<br>
<br>
That change was backported to stable/stein.<br>
<br>
2. - <a href="https://review.opendev.org/#/c/661121/" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/661121/</a> - Optimize hypervisor API <br>
calls (which requires <a href="https://review.opendev.org/#/c/659886/" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/659886/</a>)<br>
<br>
As noted that change requires a patch to python-novaclient if you are <br>
looking to backport the change. We can't backport that upstream because <br>
of the python-novaclient dependency since it would require bumping the <br>
minimum required version of the library on a stable branch which is <br>
against stable branch policy (minimum version of library dependencies <br>
are more or less frozen on stable branches).<br>
<br>
That change also requires configuring watcher with:<br>
<br>
[nova_client]<br>
api_version = 2.53  # or greater; train now requires at least 2.56<br>
<br>
3. - <a href="https://review.opendev.org/#/c/662089/" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/662089/</a> - Optimize<br>
NovaHelper.get_compute_node_by_hostname<br>
<br>
This optimizes code used to build/update the nova CDM during <br>
notification processing and also fixes a bug about looking up the <br>
compute service properly.<br>
<br>
After those three changes were merged, Corne Lukken (Dantali0n) started <br>
doing scale and performance testing with and without the changes in a <br>
CERN 5-cell test cluster. Corne identified a regression for which Canwei <br>
Li determined the root cause and chenker fixed:<br>
<br>
4. <a href="https://review.opendev.org/#/c/668100/" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/668100/</a> - Reduce the query time of the <br>
instances when call get_instance_list()<br>
<br>
With that fix applied Corne reported the overall improvement of 20-30% <br>
when building the nova CDM during an audit in various scenarios. The <br>
actual performance numbers will be sent later as part of a thesis Corne <br>
is working on.<br>
<br>
I want to thank Dantali0n, licanwei and chenker for all of their help <br>
with this series of improvements.<br>
<br>
-- <br>
<br>
Thanks,<br>
<br>
Matt<br>
<br>
</blockquote></div>