pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Jignesh K. Shah <J.K.Shah@Sun.COM>
To: Arjen van der Meijden <acmmailing@tweakers.net>
Cc: pgsql-performance@postgresql.org
Subject: Re: Pgsql (and mysql) benchmark on T2000/Solaris and some
Date: Wed, 17 May 2006 16:14:41 +0100
Message-ID: <446B3DE1.1060705@sun.com> (raw)
In-Reply-To: <446B0ED2.5030909@tweakers.net>
References: <44699C6C.80302@tweakers.net>
	<4469D173.50406@sun.com>
	<4469D986.6090300@tweakers.net>
	<4469F55A.7040004@sun.com>
	<446A1520.2020601@tweakers.net>
	<446B0409.7050902@sun.com>
	<446B0ED2.5030909@tweakers.net>

I have seen MemoryContextSwitchTo taking time before.. However I am not 
sure why would it take so much CPU time?
Maybe that function does not work efficiently on Solaris?

Also I donot have much idea about slot_getattr.

Anybody else? (Other option is to use "collect -p $pid" experiments to 
gather the data to figure out what instruction is causing the high CPU 
usage) Maybe the Sun engineers out there can help out

-Jignesh


Arjen van der Meijden wrote:
> We have the 4 core machine. However, these numbers are taken during a 
> benchmark, not normal work load. So the output should display the system 
> being working fully ;)
> 
> So its postgres doing a lot of work and you already had a look at the 
> usrcall for that.
> 
> The benchmark just tries to do the queries for "random page visits". 
> This totals up to about some 80 different queries being executed with 
> mostly random parameters. The workload is generated using php so there 
> are no connection pools, nor prepared statements.
> 
> The queries vary, but are all relatively lightweight queries with less 
> than 6 or 7 joinable tables. Almost all queries can use indexes. Most 
> tables are under a few MB of data, although there are a few larger than 
> that. Most records are relatively small, consisting of mostly numbers 
> (id's and such).
> 
> The results presented here was with 25 concurrent connections.
> 
> Best regards,
> 
> Arjen
> 
> 
> Jignesh K. Shah wrote:
> 
>> You usertime is way too high for T2000...
>>
>> If you have a 6 core machine with 24 threads, it says all 24 threads 
>> are reported as being busy with iostat output.
>>
>> Best way to debug this is  use
>>
>> prstat -amL
>> (or if you are dumping it in a file prstat -amLc > prstat.txt)
>>
>> and find the pids with high user cpu time  and then use the usrcall.d 
>> on few of those pids.
>>
>> Also how many database connections do you have and what's the type of 
>> query run by each connection?
>>
>> -Jignesh
>>
>>
>>
>> Arjen van der Meijden wrote:
>>
>>> Hi Jignesh,
>>>
>>> The settings from that 'special T2000 dvd' differed from the 
>>> recommended settings on the website you provided. But I don't see 
>>> much difference in performance with any of the adjustments, it 
>>> appears to be more or less the same.
>>>
>>> Here are a few iostat lines by the way:
>>>
>>>     sd0           sd1           sd2           nfs1           cpu
>>> kps tps serv  kps tps serv  kps tps serv  kps tps serv   us sy wt id
>>>   7   1   12  958  50   35    0   0    7    0   0    0   13  1  0 85
>>>   0   0    0  2353 296    3    0   0    0    0   0    0   92  7  0  1
>>>   0   0    0  2062 326    2    0   0    0    0   0    0   93  7  0  0
>>>   1   1    1  1575 350    0    0   0    0    0   0    0   92  7  0  1
>>>   0   0    0  1628 362    0    0   0    0    0   0    0   92  8  0  1
>>>
>>> It appears to be doing a little less kps/tps on sd1 when I restore my 
>>> own postgresql.conf-settings. (default wal/checkpoints, 20k buffers, 
>>> 2k work mem).
>>>
>>> Is it possible to trace the stack's for semsys, like the 
>>> memcpy-traces, or are those of no interest here?
>>>
>>> Best regards,
>>>
>>> Arjen
>>>
>>>
>>> On 16-5-2006 17:52, Jignesh K. Shah wrote:
>>>
>>>> Hi Arjen,
>>>>
>>>> Can you send me my colleagues's names in a private email?
>>>>
>>>> One of the drawbacks of the syscall.d script is relative timings and 
>>>> hence if system CPU usage is very low, it gives the relative 
>>>> weightage about what portion in that low is associated with what 
>>>> call.. So even if you have say..1% system time.. it says that most 
>>>> of it was IO related or semsys related. So iostat output with -c 
>>>> option to include CPU times helps to put it in  the right perspective.
>>>>
>>>>
>>>> Also do check the tunables mentioned and make sure they are set.
>>>>
>>>> Regards,
>>>> Jignesh
>>>>
>>>>
>>>> Arjen van der Meijden wrote:
>>>>
>>>>> Hi Jignesh,
>>>>>
>>>>> Jignesh K. Shah wrote:
>>>>>
>>>>>> Hi Arjen,
>>>>>>
>>>>>> Looking at your outputs...of syscall and usrcall it looks like
>>>>>>
>>>>>> * Spending too much time in semsys .... which means you have too 
>>>>>> many connections and they are contending to get a lock.. which is 
>>>>>> potentially the WAL log lock
>>>>>>
>>>>>> * llseek is high which means you can obviously gain a bit with the 
>>>>>> right file system/files tuning by caching them right.
>>>>>>
>>>>>> Have you set the values for Solaris for T2000 tuned for Postgresql?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Not particularly, we got a "special T2000 Solaris dvd" from your 
>>>>> colleagues here in the Netherlands and installed that (actually one 
>>>>> of your colleagues did). Doing so all the "better default" 
>>>>> /etc/system-settings are supposed to be set. I haven't really 
>>>>> checked that they are, since two of your colleagues have been 
>>>>> working on it for the mysql-version of the benchmark and I assumed 
>>>>> they'd have verified that.
>>>>>
>>>>>> Check out the tunables from the following URL
>>>>>>
>>>>>> http://www.sun.com/servers/coolthreads/tnb/applications_postgresql.jsp 
>>>>>>
>>>>>>
>>>>>> Try specially the /etc/system and postgresql.conf changes  and see 
>>>>>> if it changes/improves your performance.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> I will see that those tunables are verified to be set.
>>>>>
>>>>> I am a bit surprised though about your remarks, since they'd point 
>>>>> at the I/O being in the way? But we only have about 600k/sec i/o 
>>>>> according to vmstat. The database easily fits in memory.
>>>>> In total I logged about 500k queries of which only 70k where 
>>>>> altering queries, of which almost all where inserts in log-tables 
>>>>> which aren't actively read in this benchmark.
>>>>>
>>>>> But I'll give it a try.
>>>>>
>>>>> Best regards,
>>>>>
>>>>> Arjen
>>>>>
>>>>>>
>>>>>> Arjen van der Meijden wrote:
>>>>>>
>>>>>>> Hi List,
>>>>>>>
>>>>>>> In the past few weeks we have been developing a read-heavy 
>>>>>>> mysql-benchmark to have an alternative take at 
>>>>>>> cpu/platform-performance. Not really to have a look at how fast 
>>>>>>> mysql can be.
>>>>>>>
>>>>>>> This benchmark runs on mysql 4.1.x, 5.0.x and 5.1.x and is 
>>>>>>> modelled after our website's production database and the load 
>>>>>>> generated on it is modelled after a simplified version of our 
>>>>>>> visitor behaviour.
>>>>>>>
>>>>>>> Long story short, we think the test is a nice example of the 
>>>>>>> relatively lightweight, read-heavy webapplications out there and 
>>>>>>> therefore decided to have a go at postgresql as well.
>>>>>>> Of course the queries and indexes have been adjusted to (by our 
>>>>>>> knowledge) best suit postgresql, while maintaining the same 
>>>>>>> output to the application/interface layer. While the initial 
>>>>>>> structure only got postgresql at about half the performance of 
>>>>>>> mysql 4.1.x, the current version of our postgresql-benchmark has 
>>>>>>> quite similar results to mysql 4.1.x, but both are quite a bit 
>>>>>>> slower than 5.0.x (I think its about 30-40% faster).
>>>>>>>
>>>>>>> Since the results from those benchmarks are not yet public (they 
>>>>>>> will be put together in a story at our website), I won't go into 
>>>>>>> too much details about this benchmark.
>>>>>>>
>>>>>>> Currently we're having a look at a Sun T2000 and will be looking 
>>>>>>> at will be looking at other machines as well in the future. We 
>>>>>>> are running the sun-release of postgresql 8.1.3 on that T2000 
>>>>>>> now, but are looking at compiling the cvs-head version (for its 
>>>>>>> index-root-cache) somewhere this week.
>>>>>>>
>>>>>>> My guess is there are a few people on this list who are 
>>>>>>> interested in some dtrace results taken during our benchmarks on 
>>>>>>> that T2000.
>>>>>>> Although my knowledge of both Solaris and Dtrace are very 
>>>>>>> limited, I already took some samples of the system and user 
>>>>>>> calls. I used Jignesh Shah's scripts for that: 
>>>>>>> http://blogs.sun.com/roller/page/jkshah?entry=profiling_postgresql_using_dtrace_on 
>>>>>>>
>>>>>>>
>>>>>>> You can find the samples here:
>>>>>>> http://achelois.tweakers.net/~acm/pgsql-t2000/syscall.log
>>>>>>> http://achelois.tweakers.net/~acm/pgsql-t2000/usrcall.log
>>>>>>>
>>>>>>> And I also did the memcpy-scripts, here:
>>>>>>> http://achelois.tweakers.net/~acm/pgsql-t2000/memcpysize.log
>>>>>>> http://achelois.tweakers.net/~acm/pgsql-t2000/memcpystack.log
>>>>>>> (this last log is 3.5MB)
>>>>>>>
>>>>>>> If anyone is interested in some more dtrace results, let me know 
>>>>>>> (and tell me what commands to run ;-) ).
>>>>>>>
>>>>>>> Best regards,
>>>>>>>
>>>>>>> Arjen
>>>>>>>
>>>>>>> ---------------------------(end of 
>>>>>>> broadcast)---------------------------
>>>>>>> TIP 3: Have you checked our extensive FAQ?
>>>>>>>
>>>>>>>               http://www.postgresql.org/docs/faq
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> ---------------------------(end of 
>>>>>> broadcast)---------------------------
>>>>>> TIP 6: explain analyze is your friend
>>>>>>
>>>>>
>>>>> ---------------------------(end of 
>>>>> broadcast)---------------------------
>>>>> TIP 2: Don't 'kill -9' the postmaster
>>>>
>>>>
>>>>
>>>>
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 6: explain analyze is your friend
>>



view thread (11+ messages)  latest in thread

Message-ID: <446B3DE1.1060705@sun.com>
Permalink:  ../446B3DE1.1060705@sun.com/
Also on:    postgresql.org/message-id/446B3DE1.1060705@sun.com

 · 

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: J.K.Shah@Sun.COM, acmmailing@tweakers.net
  Subject: Re: Pgsql (and mysql) benchmark on T2000/Solaris and some
  In-Reply-To: <446B3DE1.1060705@sun.com>

* 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