Re: [HACKERS] Postgres Speed or lack thereof

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: [HACKERS] Postgres Speed or lack thereof
Дата
Msg-id 199907070043.UAA27752@candle.pha.pa.us
обсуждение исходный текст
Ответ на Re: [HACKERS] Postgres Speed or lack thereof  (Vadim Mikheev <vadim@krs.ru>)
Ответы Re: [HACKERS] Postgres Speed or lack thereof  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers

This from January 24, 1999.  Is it still relivant, and something that
should be on the TODO list?


> Tom Lane wrote:
> > 
> > Having an idle hour this evening, I thought it'd be interesting to build
> > a backend with profiling enabled, so as to confirm or deny the above
> > guess.  It seems that indeed a lot of time is being wasted, but where
> > it's being wasted might surprise you!
> ...
> > In other words, we're spending a third of our time mallocing and freeing
> > memory.  A tad high, what?
> > 
> > Actually, it's worse than that, because AllocSetAlloc,
> > PortalHeapMemoryAlloc, AllocSetFree, and all of the OrderedElemXXX
> > routines represent our own bookkeeping layer atop malloc/free.
> > That's another 18.66 seconds spent in these top routines, which means
> > that we are real close to expending half the backend's runtime on
> > memory bookkeeping.  This needs work.
> >
> 
> Yes, it's suprizing!
> 
> I added some debug code to palloc/pfree and it shows that for
> INSERT:
> 
> 1. 80% of allocations are made for <= 32 bytes.
> 2. pfree is used for 25% of them only (others are freed
>    after statement/transaction is done).
> 
> Note that our mmgr adds 16 bytes to each allocation
> (+ some bytes in malloc) - a great overhead, yes?
> 
> I added code to allocate a few big (16K-64K) blocks
> of memory for these small allocations to speed up 
> palloc by skiping AllocSetAlloc/malloc. New code
> don't free allocated memory (to make bookkeeping fast)
> but keeping in mind 2. above and memory overhead
> it seems as appropriate thing to do. These code also
> speed up freeing when statement/transaction is done,
> because of only a few blocks have to be freed now.
> 
> I did 5000 INSERTS (into tables with 3 ints and 33 ints)
> with BEGIN/END, -F and -B 512 (I run postgres directly,
> without postmaster). User times:
> 
>             old        new
> -----------------------------------------
> table with 3 ints     9.7 sec     7.6 sec
> table with 33 ints    59.5 sec    39.9 sec
> 
> So, new code 20%-30% faster. Process sizes are the same.
> 
> Tom, could you run new code under profiling?
> 
> There are still some things to do:
> 
> 1. SELECT/UPDATE/DELETE often palloc/pfree tuples
>    (sizes are > 32 bytes), but pfree now requires 
>    additional lookup to see is memory allocated by 
>    AllocSetAlloc or new code. We can avoid this.
> 
> 2. Index scans palloc/pfree IndexResult for each
>    tuple returned by index. This one was annoying me
>    for long time. IndexResult should be part of
>    IndexScan structure...
> 
> 3. psort uses leftist structure (16 bytes) when
>    disk is used for sorting. Obviously, big block
>    allocation should be used by lselect code itself.
> 
> 4. Actually, new mode shouldn't be used by Executor
>    in some cases.
> 
> I'll address this in a few days...
> 
> BTW, look at memutils.h: new code is like "tunable"
> mode described there.
> 
> > 
> > In other words, essentially *all* of the CPU time spent in
> > CommitTransaction is spent freeing memory.  That's probably why
> > ganging the transactions doesn't help --- it's the same number of
> > memory blocks getting allocated and freed.
> 
> It shows that we should get rid of system malloc/free and do
> all things in mmgr itself - this would allow us much faster
> free memory contexts at statement/transaction end.
> 
> Vadim
> 
> 


--  Bruce Momjian                        |  http://www.op.net/~candle maillist@candle.pha.pa.us            |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


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

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: [HACKERS] Another speedup idea (two, even)
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: [HACKERS] new heap manager mmalloc