Bruce Momjian <pgman@candle.pha.pa.us> writes:
> 1) Run this script and record the time reported:
> ftp://candle.pha.pa.us/pub/postgresql/mypatches/stat.script
One thing you neglected to specify is that the test must be done on a
NON ASSERT CHECKING build of CVS HEAD (or recent head, at least).
On these trivial "SELECT 1" commands, an assert-checking backend is
going to spend over 50% of its time doing end-of-transaction assert
checks. I was reminded of this upon trying to do oprofile:
CPU: P4 / Xeon with 2 hyper-threads, speed 2793.03 MHz (estimated)
Counted GLOBAL_POWER_EVENTS events (time during which processor is not stopped)
with a unit mask of 0x01 (mandatory) count 240000
samples % symbol name
129870 37.0714 AtEOXact_CatCache
67112 19.1571 AllocSetCheck
16611 4.7416 AtEOXact_Buffers
10054 2.8699 base_yyparse
7499 2.1406 hash_seq_search
7037 2.0087 AllocSetAlloc
4267 1.2180 hash_search
4060 1.1589 AtEOXact_RelationCache
2537 0.7242 base_yylex
1984 0.5663 grouping_planner
1873 0.5346 LWLockAcquire
1837 0.5244 AllocSetFree
1808 0.5161 exec_simple_query
1763 0.5032 ExecutorStart
1527 0.4359 PostgresMain
1464 0.4179 MemoryContextAllocZeroAligned
Let's be sure we're all measuring the same thing.
regards, tom lane