palloc() too large on pg_buffercache with large shared_buffers

Поиск
Список
Период
Сортировка
От Kouhei Kaigai
Тема palloc() too large on pg_buffercache with large shared_buffers
Дата
Msg-id 9A28C8860F777E439AA12E8AEA7694F80122A1AA@BPXM15GP.gisp.nec.co.jp
обсуждение исходный текст
Ответы Re: palloc() too large on pg_buffercache with large shared_buffers  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-hackers
Hello,

It looks to me pg_buffercache tries to allocate more than 1GB using
palloc(), when shared_buffers is more than 256GB.

# show shared_buffers ;
 shared_buffers
----------------
 280GB
(1 row)

# SELECT buffers, d.datname, coalesce(c.relname, '???')
    FROM (SELECT count(*) buffers, reldatabase, relfilenode
            FROM pg_buffercache group by reldatabase, relfilenode) b
       LEFT JOIN pg_database d ON d.oid = b.reldatabase
       LEFT JOIN pg_class c ON d.oid = (SELECT oid FROM pg_database
                                         WHERE datname = current_database())
                           AND b.relfilenode = pg_relation_filenode(c.oid)
           ORDER BY buffers desc;
ERROR:  invalid memory alloc request size 1174405120

It is a situation to use MemoryContextAllocHuge(), instead of palloc().
Also, it may need a back patching?

Thanks,
--
NEC Business Creation Division / PG-Strom Project
KaiGai Kohei <kaigai@ak.jp.nec.com>



Вложения

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

Предыдущее
От: Thomas Munro
Дата:
Сообщение: Re: kqueue
Следующее
От: Dilip Kumar
Дата:
Сообщение: Re: Speed up Clog Access by increasing CLOG buffers