On 06/10/2013 11:44 PM, Aaron Rosen wrote:
Hi Gary,

The motivation for this patch was to remove the unnecessary querying that was being done to quantum during the initial sync, previously a get_subnets/_ports was done for each network in addition to an update for the dhcp port even if it didn't need to). In my opinion the amount of data being sent to the agents is not a big deal. Even in extremely large deployments we are talking about on order of megs of data that are sent and this is only done on initial sync. That said, I'll update the patch to remove subnets that are not dhcp enabled as you are right we don't need to send these down.

Great.


In regards to rewriting the hosts file for each update I don't think this is really a big deal either. Implementing logic to hash the files to see if it needs to be updated seems like overkill as it will only save us on the initial sync. Currently, with the code on review i can restart the dhcp and have it complete sync_state() with 2k networks 8k ports in ~20 seconds where it previously took 30+ minutes.

20 seconds is a very long time. :)


On the same subject though another performance issue that I think we should fix is the agent currently updates the ipallocation table for each renewed lease which happens every 120 seconds by the default value. This generates a ton of API calls to quantum and grows the more vms that are deployed(!) In my opinion it would be worth while to batch these and provide a bulk update method that is done every 60 seconds rather than immediately when it gets a renew.

Nice idea

I'm not sure about the left over port issue you are seeing. I've not noticed this issue on my end. I'll keep an eye out though as well.

I'll try and provide some details tomorrow (I have ben unable to reproduce with rabbitmq on a VM but it reproduces with qpid on baremetal)

Best,

Aaron



On Sun, Jun 9, 2013 at 12:10 AM, Gary Kotton <gkot...@redhat.com <mailto:gkot...@redhat.com>> wrote:

    Hi,
    In addition to Aarons changes there are still a lot of issues
    which I think are problematic with the current implementation. The
    problems that I see at the moment are as follows:
    1. The amount of data that sent on the network to the agents
    2. The way in which the data is parsed on the agent:
        i. Networks that are disabled are sent to the agent
        ii. Subnets that have DHCP disabled are sent to the agent
        iii. The host file is rebuilt with each and every change. This
    means looping over all of the ports in the network each time there
    is an update.
    3. Message reliability. At the moment I am investigating a bug
    where deleting 10 networks leaves the host file with details of a
    port that has already been deleted. (
    I think that a way of addressing the above may be as follows:

    1. Enable the plugin to prepare the information for the agents.
    This can leverage the database filtering and reduce the amount of
    data on the network. In addition to this the plugin can/may have
    drivers that are specific to the agents implementation - for
    example in the case of dnsmasq, it will be preparing the host
    file. In the case of the dnsmasq we can send host file deltas. A
    further reduction can be compressing the host file.
    2. In order to prevent very heavy operations when either
    agents/services are restarted we can have a hash of the above
    file. This can ensure that it is synced (this is something that is
    specific to the driver implementations).

    Thoughts?

    Thanks
    Gary


-- Mailing list: https://launchpad.net/~quantum-core
    <https://launchpad.net/%7Equantum-core>
    Post to     : quantum-core@lists.launchpad.net
    <mailto:quantum-core@lists.launchpad.net>
    Unsubscribe : https://launchpad.net/~quantum-core
    <https://launchpad.net/%7Equantum-core>
    More help   : https://help.launchpad.net/ListHelp



-- 
Mailing list: https://launchpad.net/~quantum-core
Post to     : quantum-core@lists.launchpad.net
Unsubscribe : https://launchpad.net/~quantum-core
More help   : https://help.launchpad.net/ListHelp

Reply via email to