On Tue, Jun 4, 2013 at 3:57 AM, Robert Haas <robertmh...@gmail.com> wrote:

> On Thu, May 30, 2013 at 1:39 AM, Michael Paquier
> <michael.paqu...@gmail.com> wrote:
> > +1.
>
> Here's a more serious patch for MVCC catalog access.  This one
> involves more data copying than the last one, I think, because the
> previous version did not register the snapshots it took, which I think
> is not safe.  So this needs to be re-tested for performance, which I
> have so far made no attempt to do.
>
> It strikes me as rather unfortunate that the snapshot interface is
> designed in such a way as to require so much data copying.  It seems
> we always take a snapshot by copying from PGXACT/PGPROC into
> CurrentSnapshotData or SecondarySnapshotData, and then copying data a
> second time from there to someplace more permanent.  It would be nice
> to avoid that, at least in common cases.
>
And here are more results comparing master branch with and without this
patch...

1) DDL CREATE/DROP test:
1-1) master:
250 connections:
Create: 24846.060, Drop: 30391.713
Create: 23771.394, Drop: 29769.396
500 connections:
Create: 24339.449, Drop: 30084.741
Create: 24152.176, Drop: 30643.471
1000 connections:
Create: 26007.960, Drop: 31019.918
Create: 25937.592, Drop: 30600.341
2000 connections:
Create: 26900.324, Drop: 30741.989
Create: 26910.660, Drop: 31577.247

1-2) mvcc catalogs:
250 connections:
Create: 25371.342, Drop: 31458.952
Create: 25685.094, Drop: 31492.377
500 connections:
Create: 28557.882, Drop: 33673.266
Create: 27901.910, Drop: 33223.006
1000 connections:
Create: 31910.130, Drop: 36770.062
Create: 32210.093, Drop: 36754.888
2000 connections:
Create: 40374.754, Drop: 43442.528
Create: 39763.691, Drop: 43234.243

2) backend startup
2-1) master branch:
250 connections:
real    0m8.993s
user    0m0.128s
sys     0m0.380s
500 connections:
real    0m9.004s
user    0m0.212s
sys     0m0.340s
1000 connections:
real    0m9.072s
user    0m0.272s
sys     0m0.332s
2000 connections:
real    0m9.257s
user    0m0.204s
sys     0m0.392s

2-2) MVCC catalogs:
250 connections:
real    0m9.067s
user    0m0.108s
sys     0m0.396s
500 connections:
real    0m9.034s
user    0m0.112s
sys     0m0.376s
1000 connections:
real    0m9.303s
user    0m0.176s
sys     0m0.328s
2000 connections
real    0m9.916s
user    0m0.160s
sys     0m0.428s

Except for the case of backend startup test for 500 connections that looks
to have some noise, performance degradation reaches 6% for 2000
connections, and less than 1% for 250 connections. This is better than last
time.
For the CREATE/DROP case, performance drop reaches 40% for 2000 connections
(32% during last tests). I also noticed a lower performance drop for 250
connections now (3~4%) compared to the 1st time (9%).

I compiled the main results on tables here:
http://michael.otacoo.com/postgresql-2/postgres-9-4-devel-mvcc-catalog-access-take-2-2/
The results of last time are also available here:
http://michael.otacoo.com/postgresql-2/postgres-9-4-devel-mvcc-catalog-access-2/

Regards,
-- 
Michael

Reply via email to