pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Mark Kirkwood <mark.kirkwood@catalyst.net.nz>
To: Mkrtchyan, Tigran <tigran.mkrtchyan@desy.de>
To: pgsql-performance@postgresql.org
Subject: Re: postgres 9.3 vs. 9.4
Date: Thu, 18 Sep 2014 22:17:45 +1200
Message-ID: <541AB149.70504@catalyst.net.nz> (raw)
In-Reply-To: <88549888.42916.1411034301200.JavaMail.zimbra@desy.de>
References: <88549888.42916.1411034301200.JavaMail.zimbra@desy.de>
List-Unsubscribe:  <mailto:majordomo@postgresql.org?body=unsub%20pgsql-performance>

On 18/09/14 21:58, Mkrtchyan, Tigran wrote:
>
>
> Hi Folk,
>
> I am trying to investigate some performance issues which we have with postgres
> (a different topic by itself) and tried postgres.9.4beta2, with a hope that it
> perform better.
>
> Turned out that 9.4 is 2x slower than 9.3.5 on the same hardware.
>
> Some technical details:
>
>    Host: rhel 6.5 2.6.32-431.23.3.el6.x86_64
>    256 GB RAM, 40 cores, Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz
>    2x160GB  PCIe SSD DELL_P320h-MTFDGAL175SAH ( on one 9.3, on an other one 9.4 )
>
> postgres tweaks:
>
>
> default_statistics_target = 100
> wal_writer_delay = 10s
> vacuum_cost_delay = 50
> synchronous_commit = off
> maintenance_work_mem = 2GB
> checkpoint_completion_target = 0.9
> effective_cache_size = 94GB
> work_mem = 402MB
> wal_buffers = 16MB
> checkpoint_segments = 64
> shared_buffers = 8GB
> max_connections = 100
> random_page_cost = 1.5
> # other goodies
> log_line_prefix = '%m <%d %u %r> %%'
> log_temp_files = 0
> log_min_duration_statement = 5
>
> in both cases databases are fresh - no data.
>
> Here is a results with pgbench.
>
>
> 9.3.5:
>
> # /usr/pgsql-9.3/bin/pgbench -r -j 1 -c 1 -T 60
> starting vacuum...end.
> transaction type: TPC-B (sort of)
> scaling factor: 1
> query mode: simple
> number of clients: 1
> number of threads: 1
> duration: 60 s
> number of transactions actually processed: 96361
> tps = 1605.972262 (including connections establishing)
> tps = 1606.064501 (excluding connections establishing)
> statement latencies in milliseconds:
> 	0.001391	\set nbranches 1 * :scale
> 	0.000473	\set ntellers 10 * :scale
> 	0.000430	\set naccounts 100000 * :scale
> 	0.000533	\setrandom aid 1 :naccounts
> 	0.000393	\setrandom bid 1 :nbranches
> 	0.000468	\setrandom tid 1 :ntellers
> 	0.000447	\setrandom delta -5000 5000
> 	0.025161	BEGIN;
> 	0.131317	UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
> 	0.100211	SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
> 	0.117406	UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
> 	0.114332	UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
> 	0.086660	INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
> 	0.035940	END;
>
>
> 9.4beta2:
>
> # /usr/pgsql-9.3/bin/pgbench -r -j 1 -c 1 -T 60
> starting vacuum...end.
> transaction type: TPC-B (sort of)
> scaling factor: 1
> query mode: simple
> number of clients: 1
> number of threads: 1
> duration: 60 s
> number of transactions actually processed: 34017
> tps = 566.948384 (including connections establishing)
> tps = 567.008666 (excluding connections establishing)
> statement latencies in milliseconds:
> 	0.001879	\set nbranches 1 * :scale
> 	0.000526	\set ntellers 10 * :scale
> 	0.000490	\set naccounts 100000 * :scale
> 	0.000595	\setrandom aid 1 :naccounts
> 	0.000421	\setrandom bid 1 :nbranches
> 	0.000480	\setrandom tid 1 :ntellers
> 	0.000484	\setrandom delta -5000 5000
> 	0.055047	BEGIN;
> 	0.172179	UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
> 	0.135392	SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
> 	0.157224	UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
> 	0.147969	UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
> 	0.123001	INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
> 	0.957854	END;
>
> any ideas?
>

Hi Tigran,

Some ideas:

60s is too short for reliable results (default settings for checkpoints 
is 300s so 600s is the typical elapsed time to get reasonably repeatable 
numbers (to ensure you get about 1 checkpoint in your run). In addition 
I usually do

psql <<!
CHECKPOINT;
!

Plus

$ sleep 10

before each run so that I've got some confidence that we are starting 
from approximately the same state each time (and getting hopefully only 
*one* checkpoint per run)!

Cheers

Mark


-- 
Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance



view thread (30+ messages)  latest in thread

Message-ID: <541AB149.70504@catalyst.net.nz>
Permalink:  ../541AB149.70504@catalyst.net.nz/
Also on:    postgresql.org/message-id/541AB149.70504@catalyst.net.nz

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: mark.kirkwood@catalyst.net.nz, tigran.mkrtchyan@desy.de
  Subject: Re: postgres 9.3 vs. 9.4
  In-Reply-To: <541AB149.70504@catalyst.net.nz>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox