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