<p dir="ltr">So IIUC tooz would be handling the liveness detection for the agents. That would be nice to get ride of that logic in Neutron and just register callbacks for rescheduling the dead. </p>
<p dir="ltr">Where does it store that state, does it persist timestamps to the DB like Neutron does? If so, how would that scale better? If not, who does a given node ask to know if an agent is online or offline when making a scheduling decision? </p>
<p dir="ltr">However, before (what I assume is) the large code change to implement tooz, I would like to quantify that the heartbeats are actually a bottleneck. When I was doing some profiling of them on the master branch a few months ago, processing a heartbeat took an order of magnitude less time (<50ms) than the 'sync routers' task of the l3 agent (~300ms). A few query optimizations might buy us a lot more headroom before we have to fall back to large refactors. <br></p>
<div class="gmail_quot<blockquote class=" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Kevin Benton wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
One of the most common is the heartbeat from each agent. However, I<br>
don't think we can't eliminate them because they are used to determine<br>
if the agents are still alive for scheduling purposes. Did you have<br>
something else in mind to determine if an agent is alive?<br>
</blockquote>
<br>
Put each agent in a tooz[1] group; have each agent periodically heartbeat[2], have whoever needs to schedule read the active members of that group (or use [3] to get notified via a callback), profit...<br>
<br>
Pick from your favorite (supporting) driver at:<br>
<br>
<a href="http://docs.openstack.org/developer/tooz/compatibility.html" target="_blank">http://docs.openstack.org/<u></u>developer/tooz/compatibility.<u></u>html</a><br>
<br>
[1] <a href="http://docs.openstack.org/developer/tooz/compatibility.html#grouping" target="_blank">http://docs.openstack.org/<u></u>developer/tooz/compatibility.<u></u>html#grouping</a><br>
[2] <a href="https://github.com/openstack/tooz/blob/0.13.1/tooz/coordination.py#L315" target="_blank">https://github.com/openstack/<u></u>tooz/blob/0.13.1/tooz/<u></u>coordination.py#L315</a><br>
[3] <a href="http://docs.openstack.org/developer/tooz/tutorial/group_membership.html#watching-group-changes" target="_blank">http://docs.openstack.org/<u></u>developer/tooz/tutorial/group_<u></u>membership.html#watching-<u></u>group-changes</a><br>
<br>
<br>
______________________________<u></u>______________________________<u></u>______________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.<u></u>openstack.org?subject:<u></u>unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-dev</a><br>
</div>