pgsql: Replace the BufMgrLock with separate locks on the lookup

From: tgl(at)svr1(dot)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Replace the BufMgrLock with separate locks on the lookup
Date: 2005-03-04 20:21:07
Message-ID: 20050304202107.4183454E34@svr1.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Log Message:
-----------
Replace the BufMgrLock with separate locks on the lookup hashtable and
the freelist, plus per-buffer spinlocks that protect access to individual
shared buffer headers. This requires abandoning a global freelist (since
the freelist is a global contention point), which shoots down ARC and 2Q
as well as plain LRU management. Adopt a clock sweep algorithm instead.
Preliminary results show substantial improvement in multi-backend situations.

Modified Files:
--------------
pgsql/doc/src/sgml:
runtime.sgml (r1.306 -> r1.307)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/runtime.sgml.diff?r1=1.306&r2=1.307)
pgsql/src/backend/catalog:
index.c (r1.244 -> r1.245)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/index.c.diff?r1=1.244&r2=1.245)
pgsql/src/backend/commands:
dbcommands.c (r1.151 -> r1.152)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/dbcommands.c.diff?r1=1.151&r2=1.152)
vacuum.c (r1.302 -> r1.303)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/vacuum.c.diff?r1=1.302&r2=1.303)
pgsql/src/backend/postmaster:
bgwriter.c (r1.14 -> r1.15)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/postmaster/bgwriter.c.diff?r1=1.14&r2=1.15)
pgsql/src/backend/storage/buffer:
README (r1.7 -> r1.8)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/README.diff?r1=1.7&r2=1.8)
buf_init.c (r1.71 -> r1.72)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/buf_init.c.diff?r1=1.71&r2=1.72)
buf_table.c (r1.39 -> r1.40)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/buf_table.c.diff?r1=1.39&r2=1.40)
bufmgr.c (r1.185 -> r1.186)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/bufmgr.c.diff?r1=1.185&r2=1.186)
freelist.c (r1.50 -> r1.51)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/freelist.c.diff?r1=1.50&r2=1.51)
localbuf.c (r1.62 -> r1.63)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/localbuf.c.diff?r1=1.62&r2=1.63)
pgsql/src/backend/utils/misc:
guc.c (r1.253 -> r1.254)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/misc/guc.c.diff?r1=1.253&r2=1.254)
postgresql.conf.sample (r1.134 -> r1.135)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/misc/postgresql.conf.sample.diff?r1=1.134&r2=1.135)
pgsql/src/backend/utils/resowner:
resowner.c (r1.9 -> r1.10)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/resowner/resowner.c.diff?r1=1.9&r2=1.10)
pgsql/src/include/postmaster:
bgwriter.h (r1.4 -> r1.5)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/postmaster/bgwriter.h.diff?r1=1.4&r2=1.5)
pgsql/src/include/storage:
buf_internals.h (r1.76 -> r1.77)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/buf_internals.h.diff?r1=1.76&r2=1.77)
bufmgr.h (r1.89 -> r1.90)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/bufmgr.h.diff?r1=1.89&r2=1.90)
lwlock.h (r1.16 -> r1.17)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/lwlock.h.diff?r1=1.16&r2=1.17)

Browse pgsql-committers by date

  From Date Subject
Next Message User Andrewd 2005-03-04 20:54:18 pgbuildfarm - client-code: force a build if we don't have a snapshot
Previous Message Tom Lane 2005-03-03 16:47:43 pgsql: Replace ARC cache management algorithm with the similar but