AllocSetReset improvement

Поиск
Список
Период
Сортировка
От a_ogawa
Тема AllocSetReset improvement
Дата
Msg-id PIEMIKOOMKNIJLLLBCBBCEPICGAA.a_ogawa@hi-ho.ne.jp
обсуждение исходный текст
Ответы Re: AllocSetReset improvement
Список 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

Вложения

В списке pgsql-patches по дате отправления:

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: Re: lastval()
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: [BUGS] BUG #1588: pg_autovacuum sleep parameter overflow