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>