For example: 
50 process inserting each 1000 rows to a test table (4 columns: string * 2, 
bool, integer) using commit block

Master OVS
Test Duration                   131 seconds
Average Inserts Per second      746.2687 inserts/s
Average Insert Duration 134.1382ms
Minimal Insert Duration 0.166202ms
Maximum Insert Duration 489.8593ms

JSON GC Patch
Test Duration                   86 seconds
Average Inserts Per second      1176 inserts/s
Average Insert Duration 82.26761ms
Minimal Insert Duration 0.165448ms
Maximum Insert Duration 751.2111ms

5 process inserting 10000 rows each to the same test table

Master OVS
Test Duration                   8 seconds
Average Inserts Per second      7142.857 inserts/s
Average Insert Duration 0.656431ms
Minimal Insert Duration 0.125197ms
Maximum Insert Duration 11.93203ms

JSON GC Patch
Test Duration                   7 seconds
Average Inserts Per second      8333.333 inserts/s
Average Insert Duration 0.55688ms
Minimal Insert Duration 0.143233ms
Maximum Insert Duration 26.26319ms

Also, accordingly with profiling using callgrind functions like json_clone or 
json_destroy sometimes can take up to 20% and 36% of the ops executed inOVSDB 
(those functions and functions called by those ones...). Although, in one odd 
case it shows that json_clone takes 50% of the operations executed. We can't 
avoid calling json_destroy sometimes, but I didn't find any place where a 
cloned JSON object is updated: only cloned, passed the new pointer and release 
the old one. 

Regards,
Esteban


From: Ryan Moats [mailto:rmo...@us.ibm.com] 
Sent: jueves, 25 de agosto de 2016 9:28
To: Rodriguez Betancourt, Esteban <esteb...@hpe.com>
Cc: dev@openvswitch.org
Subject: Re: [ovs-dev] [PATCH] json: Use reference counting in json objects

"dev" <dev-boun...@openvswitch.org> wrote on 08/16/2016 04:50:37 PM:

> From: "Rodriguez Betancourt, Esteban" <esteb...@hpe.com>
> To: "dev@openvswitch.org" <dev@openvswitch.org>
> Date: 08/16/2016 04:50 PM
> Subject: [ovs-dev] [PATCH] json: Use reference counting in json objects
> Sent by: "dev" <dev-boun...@openvswitch.org>
> 
> After profiling OVSDB insert performance it was found
> that some significant portion of its time OVSDB is
> calling the function json_clone.
> 
> Also, most of the usages of json_clone never modify the json,
> just keeps it to prevent it to be freed.
> 
> With that in mind the struct json, json_create, json_clone
> and json_destroy were modified to keep a count of how many
> references of the json struct are left. Only when that count
> reaches zero the json struct is freed.
> 
> The old "json_clone" function was renamed as "json_deep_clone".
> 
> The change provides some performance improvement, depending
> on the transactions performed in OVSDB.
> 
> Signed-off-by: Esteban Rodriguez Betancourt <esteb...@hpe.com>
> ---

Can you add some quantification of the statement
"provides some performance improvement"?
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to