Skip site navigation (1) Skip section navigation (2)

Re: dbt2 NOTPM numbers

From: Markus Schiltknecht <markus(at)bluegap(dot)ch>
To: Jim Nasby <decibel(at)decibel(dot)org>
Cc: PFC <lists(at)peufeu(dot)com>, Heikki Linnakangas <heikki(at)enterprisedb(dot)com>, pgsql-performance(at)postgresql(dot)org
Subject: Re: dbt2 NOTPM numbers
Date: 2007-06-11 15:30:38
Message-ID: 466D6A9E.4010703@bluegap.ch (view raw or flat)
Thread:
Lists: pgsql-performance
Hi,

Jim Nasby wrote:
> I don't think that kind of testing is useful for good raid controllers 
> on RAID5/6, because the controller will just be streaming the data out; 
> it'll compute the parity blocks on the fly and just stream data to the 
> drives as fast as possible.

That's why I called it 'simplistic throughput testing'...

> But that's not how writes in the database work (except for WAL); you're 
> writing stuff all over the place, none of which is streamed. So in the 
> best case (the entire stripe being updated is in the controller's 
> cache), at a minimum it's going to have to write data + parity ( * 2 for 
> RAID 6, IIRC) for every write. But any real-sized database is going to 
> be far larger than your raid cache, which means there's a good chance a 
> block being written will no longer have it's stripe in cache. In that 
> case, the controller is going to have to read a bunch of data back off 
> the drive, which is going to clobber performance.

I'm well aware. Our workload (hopefully) consists of a much lower 
writes/reads ratio than dbt2, so RAID 6 might work anyway.

> Now, add that performance bottleneck on top of your WAL writes and 
> you're in real trouble.

Well, I'm basically surprised of the low NOTPM numbers compared to my 
desktop system, which also does around 200 NOTPMs, with only two 
platters in RAID 1 config... How can a server with four Cores and 8 
Platters be equaly slow?

Anyway, I've now reconfigured the system with RAID 1+0 and got more than 
twice the NOTPMs:

                          Response Time (s)
  Transaction      %    Average :    90th %        Total 
Rollbacks      %
------------  -----  ---------------------  -----------  --------------- 
  -----
     Delivery   3.84    204.733 :   241.998          704 
0   0.00
    New Order  45.77    203.651 :   242.847         8382 
75   0.90
Order Status   4.32    199.184 :   238.081          792                0 
   0.00
      Payment  42.02    198.969 :   236.549         7695 
0   0.00
  Stock Level   4.04    198.668 :   236.113          740 
0   0.00
------------  -----  ---------------------  -----------  --------------- 
  -----

567.72 new-order transactions per minute (NOTPM)
14.5 minute duration
0 total unknown errors
529 second(s) ramping up

I'm still feeling that 550 is pretty low. The response times are beyond 
good and evil.

As vmstat.out tells us, the CPUs are still pretty much idle or waiting 
most of the time.

procs -----------memory---------- ---swap-- -----io---- -system-- 
----cpu----
  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy 
id wa
  0  3 494560 2181964      8 1787680   13   15   317   242  140    2  4 
  1 72 23
  0  9 494560 1558892      8 2298348    0    0  2973  2018  584 1114  2 
  1 76 21
  1 14 494496 424116      8 3316000    2    0  5613  9293  935 2943  5 
1 29 65
  0 15 452840 150148      8 3487160  738    3  5662  8709  925 3444  5 
2 21 73
  0 11 439172 151052      8 3386556  263    0  5690  8293  969 4145  5 
2 23 70
  0 17 438996 149748      8 3308184   57    6  5036  7174  902 4104  5 
2 25 69
  1 25 439940 150344      8 3228304    9   28  4757  7479  922 4269  5 
2 26 67

For everybody interested, these settings are different from Pg 8.2 
default postgresql.conf:

listen_addresses = '*'
port = 54321
shared_buffers = 2048MB
work_mem = 10MB
maintenance_work_mem = 64MB
#max_stack_depth = 4MB
max_fsm_pages = 409600
eachcheckpoint_segments = 6
checkpoint_timeout = 1h
effective_cache_size = 3800MB
log_min_duration_statement = 500


For dbt2, I've used 500 warehouses and 90 concurrent connections, 
default values for everything else.

Do I simply have to put more RAM (currently 4GB) in that machine? Or 
what else can be wrong?

Is anybody else seeing low performance with the Areca SATA Controllers? 
(in my case: "Areca Technology Corp. ARC-1260 16-Port PCI-Express to 
SATA RAID Controller", according to lspci)


Then again, maybe I'm just expecting too much...


Regards

Markus


In response to

Responses

pgsql-performance by date

Next:From: Andrew SullivanDate: 2007-06-11 15:34:14
Subject: Re: How much ram is too much
Previous:From: Christo Du PreezDate: 2007-06-11 15:10:02
Subject: test / live environment, major performance difference

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group