Re: Any better plan for this query?..

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Great data Dimitri!'

I see a few key trends in the poor scalability:

The throughput scales roughly with %CPU fairly well.  But CPU used doesn't
go past ~50% on the 32 core tests.  This indicates lock contention.

Other proof of lock contention are the mutex locks / sec graph which climbs
rapidly as the system gets more inefficient (along with context switches).

Another trend is the system calls/sec which caps out with the test, at about
400,000 per sec on the peak (non-prepared statement) result.  Note that when
the buffer size is 256MB, the performance scales much worse and is slower.
And correlated with this the system calls/sec per transaction is more than
double, at slower throughput.

Using the OS to cache pages is not as fast as pages in shared_buffers, by a
more significant amount with many cores and higher concurrency than in the
low concurrency case.

The system is largely lock limited in the poor scaling results.  This holds
true with or without the use of prepared statements -- which help a some,
but not a lot and don't affect the scalability.


4096MB shared buffers, 32 cores, 8.4, read only:
http://dimitrik.free.fr/Report_20090505/5539_dim_STAT_70.html

256MB cache, 32 cores, 8.4, read-only:
http://dimitrik.free.fr/Report_20090505/5539_dim_STAT_52.html

4096MB shared buffs, 32 cores, 8.4, read only, prepared statements
http://dimitrik.free.fr/Report_20090505/5539_dim_STAT_70.html

On 5/18/09 11:00 AM, "Dimitri" <dimitrik.fr@xxxxxxxxx> wrote:

> Folks, I've just published a full report including all results here:
> http://dimitrik.free.fr/db_STRESS_PostgreSQL_837_and_84_May2009.html
> 
> From my point of view it needs first to understand where the time is
> wasted on a single query (even when the statement is prepared it runs
> still slower comparing to MySQL).
> 
> Then to investigate on scalability issue I think a bigger server will
> be needed here (I'm looking for 64cores at least :-))
> 
> If  you have some other ideas or patches (like Simon) - don't hesitate
> to send them - once I'll get an access to the server again the
> available test time will be very limited..
> 
> Best regards!
> -Dimitri
> 
> 
> On 5/18/09, Simon Riggs <simon@xxxxxxxxxxxxxxx> wrote:
>> 
>> On Thu, 2009-05-14 at 20:25 +0200, Dimitri wrote:
>> 
>>> # lwlock_wait_8.4.d `pgrep -n postgres`
>> 
>>>                Lock Id            Mode   Combined Time (ns)
>>>       FirstLockMgrLock       Exclusive                 803700
>>>        BufFreelistLock       Exclusive                 3001600
>>>       FirstLockMgrLock          Shared               4586600
>>>  FirstBufMappingLock       Exclusive              6283900
>>>  FirstBufMappingLock          Shared             21792900
>> 
>> I've published two patches to -Hackers to see if we can improve the read
>> only numbers on 32+ cores.
>> 
>> Try shared_buffer_partitions = 256
>> 
>> --
>>  Simon Riggs           www.2ndQuadrant.com
>>  PostgreSQL Training, Services and Support
>> 
>> 
> 
> --
> Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-performance
> 


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


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux