Agent makes frequent get_devices_details_list RPC calls with an empty list

Bug #1573180 reported by Jeremy Arnold
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
networking-powervm
Fix Released
Undecided
Sridhar Venkat

Bug Description

In networking_powervm/plugins/ibm/agent/powervm/agent_base.py, build_prov_requests_from_neutron calls get_devices_details_list to get details for the updated ports. This is an RPC call to the neutron server. In data I've collected from an environment with 5 hosts and 200 VMs, about 80% of these calls pass in an empty list, even when we're in the middle of doing deploys. Since we aren't passing any devices, the server won't have any data to return, so there's no point in making the call.

My suggestion would be to skip the call to get_devices_details_list when dev_list is empty. Alternatively, agent_base get_devices_details_list could just return an empty list instead of making the RPC call if device_macs is empty.

The RPC call typically returns very quickly (median call time in my test was about 54 ms), so this won't give us much direct performance improvement. But since these calls run on 2 second intervals, this would eliminate something like 24 RPC calls per minute per NovaLink host, which will likely ease some congestion on the controller in environments with large numbers of hosts.

Sridhar Venkat (svenkat)
Changed in networking-powervm:
assignee: nobody → Sridhar Venkat (svenkat)
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to networking-powervm (master)

Fix proposed to branch: master
Review: https://review.openstack.org/318727

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to networking-powervm (master)

Reviewed: https://review.openstack.org/318727
Committed: https://git.openstack.org/cgit/openstack/networking-powervm/commit/?id=c4a51c6a3e1f03104e8d62b1511b1127ff012d39
Submitter: Jenkins
Branch: master

commit c4a51c6a3e1f03104e8d62b1511b1127ff012d39
Author: Sridhar Venkat <email address hidden>
Date: Thu May 19 11:01:59 2016 -0400

    Avoid invoking get_device_details_list when no ports to update

    Periodic rpc loop ends up invoking get_device_details_list even
    if there are no ports to update. This makes an unnecessary call to
    neutron server. This fix avoids such a call if there are no ports
    to update.

    Existing unit test test_build_prov_requests_from_neutron already
    handles empty port list scenario.

    Change-Id: I1a664b466107875361095764e188fba0d0738e5c
    Closes-Bug: 1573180

Changed in networking-powervm:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.