AllocSetReset improvement

From: a_ogawa <a_ogawa(at)hi-ho(dot)ne(dot)jp>
To: pgsql-patches(at)postgresql(dot)org
Subject: AllocSetReset improvement
Date: 2005-05-11 14:03:51
Message-ID: PIEMIKOOMKNIJLLLBCBBCEPICGAA.a_ogawa@hi-ho.ne.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-patches


In SQL that executes aggregation, AllocSetReset is called many times and
spend a lot of cycles.
This patch saves the cycles spent by AllocSetReset.

An idea of the patch is to add a flag to AllocSetContext. This flag
shows whether AllocSetReset should work.

The effect of the patch that I measured is as follows:

o Data for test was created by 'pgbench -i -s 5'.

o Test SQL:
select b.bid, sum(a.abalance), avg(a.abalance)
from accounts a, branches b
where a.bid = b.bid
group by b.bid;

o I measured time that executed the SQL ten times.
(1)Linux(CPU: Pentium III, Compiler option: -O2)
- original: 31.310s
- patched : 28.812s

(2)Linux(CPU: Pentium 4, Compiler option: -O2)
- original: 8.953s
- patched : 7.753s

(3)Solaris(CPU: Ultra SPARC III, Compiler option: -O2)
- original: 41.8s
- patched : 38.6s

o gprof result(Linux, Compiler option: -O2 -pg -DLINUX_PROFILE)
- original
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
9.20 3.06 3.06 38500155 0.00 0.00 AllocSetReset
8.99 6.05 2.99 27500055 0.00 0.00 slot_deform_tuple
7.40 8.51 2.46 44000000 0.00 0.00 slot_getattr
4.81 10.11 1.60 27500110 0.00 0.00 ExecEvalVar
3.64 11.32 1.21 38500143 0.00 0.00 MemoryContextReset
3.64 12.53 1.21 6007086 0.00 0.00 LWLockRelease
3.31 13.63 1.10 5500079 0.00 0.00 heapgettup

- patched
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
8.76 2.82 2.82 27500055 0.00 0.00 slot_deform_tuple
7.73 5.31 2.49 44000000 0.00 0.00 slot_getattr
4.72 6.83 1.52 27500110 0.00 0.00 ExecEvalVar
4.32 8.22 1.39 5500011 0.00 0.00 ExecHashJoin
4.28 9.60 1.38 6007086 0.00 0.00 LWLockRelease
4.04 10.90 1.30 38500143 0.00 0.00 MemoryContextReset
3.63 12.07 1.17 5500079 0.00 0.00 heapgettup
3.04 13.05 0.98 5499989 0.00 0.00
ExecMakeFunctionResultNoSets
2.67 13.91 0.86 5500110 0.00 0.00 ExecProject
2.61 14.75 0.84 11000000 0.00 0.00 advance_transition_function
2.55 15.57 0.82 38500155 0.00 0.00 AllocSetReset

regards,

---
Atsushi Ogawa

Attachment Content-Type Size
aset.c.patch application/octet-stream 2.1 KB

Responses

Browse pgsql-patches by date

  From Date Subject
Next Message Bruce Momjian 2005-05-11 14:52:34 Re: [BUGS] BUG #1588: pg_autovacuum sleep parameter overflow
Previous Message Bruce Momjian 2005-05-11 13:53:46 Re: [PATCHES] Where is Translation of "FARSI" FAQ?