Re: GiST index performance

From: Matthew Wakeling <matthew(at)flymine(dot)org>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, pgsql-performance(at)postgresql(dot)org
Subject: Re: GiST index performance
Date: 2009-06-11 15:07:12
Message-ID: alpine.DEB.2.00.0906111447140.4337@aragorn.flymine.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On Thu, 11 Jun 2009, Tom Lane wrote:
>> Oprofile scares me with the sheer number of options.
>
> You can ignore practically all of them; the defaults are pretty sane.

Thanks, that was helpful. Here is the top of opreport --long-filenames:

CPU: Core 2, speed 1998 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000
CPU_CLK_UNHALT...|
samples| %|
------------------
5114464 61.5404 /lib/libc-2.9.so
1576829 18.9734 /changeable/pgsql_8.4_profiling/bin/postgres
CPU_CLK_UNHALT...|
samples| %|
------------------
1572346 99.7157 /changeable/pgsql_8.4_profiling/bin/postgres
4482 0.2842 [vdso] (tgid:13593 range:0x7fff8dbff000-0x7fff8dc00000)
1 6.3e-05 [vdso] (tgid:13193 range:0x7fff8dbff000-0x7fff8dc00000)
409534 4.9278 /no-vmlinux
309990 3.7300 /changeable/pgsql_8.4_profiling/lib/btree_gist.so
203684 2.4509 /changeable/pgsql_8.4_profiling/lib/bioseg.so

So it seems that btree_gist and bioseg are not using that much CPU at all,
compared to core postgres code. In fact, the majority of time seems to be
spent in libc. Unfortunately my libc doesn't have any debugging symbols.

Anyway, running opannotate seems to make it clear that time *is* spent in
the gistnext function, but almost all of that is in children of the
function. Lots of time is actually spent in fmgr_oldstyle though.

Here is the top of opreport -l:

CPU: Core 2, speed 1998 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000
samples % image name app name symbol name
5114464 61.5404 libc-2.9.so libc-2.9.so (no symbols)
496215 5.9708 postgres postgres gistnext
409534 4.9278 no-vmlinux no-vmlinux (no symbols)
404037 4.8616 postgres postgres fmgr_oldstyle
170079 2.0465 btree_gist.so btree_gist.so gbt_int4_consistent
160016 1.9254 postgres postgres gistdentryinit
153266 1.8442 nvidia_drv.so nvidia_drv.so (no symbols)
152463 1.8345 postgres postgres FunctionCall5
149374 1.7974 postgres postgres FunctionCall1
131112 1.5776 libxul.so libxul.so (no symbols)
120871 1.4544 postgres postgres .plt
94506 1.1372 bioseg.so bioseg.so bioseg_gist_consistent

I'm guessing my next step is to install a version of libc with debugging
symbols?

Matthew

--
Some people, when confronted with a problem, think "I know, I'll use regular
expressions." Now they have two problems. -- Jamie Zawinski

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Tom Lane 2009-06-11 15:39:52 Re: GiST index performance
Previous Message Dimitri Fontaine 2009-06-11 14:33:04 Re: Postgres replication: dump/restore, PITR, Slony,...?