Re: [ovs-discuss] [OVN] Python IDL: handling modify operations in update2 notifications is slow

2018-02-28 Thread Daniel Alvarez
Thanks folks!

> On 28 Feb 2018, at 22:10, Ben Pfaff  wrote:
> 
>> On Tue, Feb 27, 2018 at 03:56:40PM +0100, Daniel Alvarez Sanchez wrote:
>> Hi all,
>> 
>> When working on the performance of the OVN OpenStack integration and
>> following up this thread [0].
>> 
>> I went a bit deeper trying to find out the root cause of the linear growth.
>> It happens that during the processing of the update2 messages, when there's
>> a 'modify' operation, the data is converted to JSON [1] and then we build a
>> Row from this JSON [2].
>> 
>> This seems pretty useless and, since the JSON document is not used anywhere
>> else, I just avoided that conversion. This conversion takes longer as the
>> number of elements in the row increases, which is the case of adding a new
>> address to the Address_Set table or adding new ACLs to the acl column in
>> Logical_Switch. This have a big impact at scale and it can be easily fixed.
>> 
>> After removing the extra conversions (I'll be submitting the patch in a
>> while), the time for creating ports from OpenStack remains almost constant
>> regardless of the amount of ports in the system as you can see in the
>> attached image and further in this blogpost [3] and it's cut down
>> considerably.
> 
> Great detective work!
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] [OVN] Python IDL: handling modify operations in update2 notifications is slow

2018-02-28 Thread Ben Pfaff
On Tue, Feb 27, 2018 at 03:56:40PM +0100, Daniel Alvarez Sanchez wrote:
> Hi all,
> 
> When working on the performance of the OVN OpenStack integration and
> following up this thread [0].
> 
> I went a bit deeper trying to find out the root cause of the linear growth.
> It happens that during the processing of the update2 messages, when there's
> a 'modify' operation, the data is converted to JSON [1] and then we build a
> Row from this JSON [2].
> 
> This seems pretty useless and, since the JSON document is not used anywhere
> else, I just avoided that conversion. This conversion takes longer as the
> number of elements in the row increases, which is the case of adding a new
> address to the Address_Set table or adding new ACLs to the acl column in
> Logical_Switch. This have a big impact at scale and it can be easily fixed.
> 
> After removing the extra conversions (I'll be submitting the patch in a
> while), the time for creating ports from OpenStack remains almost constant
> regardless of the amount of ports in the system as you can see in the
> attached image and further in this blogpost [3] and it's cut down
> considerably.

Great detective work!
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] [OVN] Python IDL: handling modify operations in update2 notifications is slow

2018-02-27 Thread Joe Talerico
Awesome work Daniel! Great improvement!

On Tue, Feb 27, 2018 at 10:15 AM, Miguel Angel Ajo Pelayo
 wrote:
> Wow, amazing, big +1 for such patch. :D
>
> On Tue, Feb 27, 2018 at 3:57 PM Daniel Alvarez Sanchez 
> wrote:
>>
>> Hi all,
>>
>> When working on the performance of the OVN OpenStack integration and
>> following up this thread [0].
>>
>> I went a bit deeper trying to find out the root cause of the linear
>> growth. It happens that during the processing of the update2 messages, when
>> there's a 'modify' operation, the data is converted to JSON [1] and then we
>> build a Row from this JSON [2].
>>
>> This seems pretty useless and, since the JSON document is not used
>> anywhere else, I just avoided that conversion. This conversion takes longer
>> as the number of elements in the row increases, which is the case of adding
>> a new address to the Address_Set table or adding new ACLs to the acl column
>> in Logical_Switch. This have a big impact at scale and it can be easily
>> fixed.
>>
>> After removing the extra conversions (I'll be submitting the patch in a
>> while), the time for creating ports from OpenStack remains almost constant
>> regardless of the amount of ports in the system as you can see in the
>> attached image and further in this blogpost [3] and it's cut down
>> considerably.
>>
>> This would make the implementation of the Port_Set discussed at [0] less
>> urgent.
>>
>> [0]
>> https://mail.openvswitch.org/pipermail/ovs-discuss/2018-February/046149.html
>> [1]
>> https://github.com/openvswitch/ovs/blob/f73d562fc0ee3ff43f65cc418f213a79a727cb19/python/ovs/db/idl.py#L604
>> [2]
>> https://github.com/openvswitch/ovs/blob/f73d562fc0ee3ff43f65cc418f213a79a727cb19/python/ovs/db/idl.py#L524
>> [3]
>> http://dani.foroselectronica.es/ovn-profiling-and-optimizing-ports-creation-434/
>> ___
>> discuss mailing list
>> disc...@openvswitch.org
>> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
>
>
> ___
> discuss mailing list
> disc...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
>
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] [OVN] Python IDL: handling modify operations in update2 notifications is slow

2018-02-27 Thread Miguel Angel Ajo Pelayo
Wow, amazing, big +1 for such patch. :D

On Tue, Feb 27, 2018 at 3:57 PM Daniel Alvarez Sanchez 
wrote:

> Hi all,
>
> When working on the performance of the OVN OpenStack integration and
> following up this thread [0].
>
> I went a bit deeper trying to find out the root cause of the linear
> growth. It happens that during the processing of the update2 messages, when
> there's a 'modify' operation, the data is converted to JSON [1] and then we
> build a Row from this JSON [2].
>
> This seems pretty useless and, since the JSON document is not used
> anywhere else, I just avoided that conversion. This conversion takes longer
> as the number of elements in the row increases, which is the case of adding
> a new address to the Address_Set table or adding new ACLs to the acl column
> in Logical_Switch. This have a big impact at scale and it can be easily
> fixed.
>
> After removing the extra conversions (I'll be submitting the patch in a
> while), the time for creating ports from OpenStack remains almost constant
> regardless of the amount of ports in the system as you can see in the
> attached image and further in this blogpost [3] and it's cut down
> considerably.
>
> This would make the implementation of the Port_Set discussed at [0] less
> urgent.
>
> [0]
> https://mail.openvswitch.org/pipermail/ovs-discuss/2018-February/046149.html
> [1]
> https://github.com/openvswitch/ovs/blob/f73d562fc0ee3ff43f65cc418f213a79a727cb19/python/ovs/db/idl.py#L604
> [2]
> https://github.com/openvswitch/ovs/blob/f73d562fc0ee3ff43f65cc418f213a79a727cb19/python/ovs/db/idl.py#L524
> [3]
> http://dani.foroselectronica.es/ovn-profiling-and-optimizing-ports-creation-434/
> ___
> discuss mailing list
> disc...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
>
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss