postgresql/src/include/storage
Tom Lane fad153ec45 Rewrite the sinval messaging mechanism to reduce contention and avoid
unnecessary cache resets.  The major changes are:

* When the queue overflows, we only issue a cache reset to the specific
backend or backends that still haven't read the oldest message, rather
than resetting everyone as in the original coding.

* When we observe backend(s) falling well behind, we signal SIGUSR1
to only one backend, the one that is furthest behind and doesn't already
have a signal outstanding for it.  When it finishes catching up, it will
in turn signal SIGUSR1 to the next-furthest-back guy, if there is one that
is far enough behind to justify a signal.  The PMSIGNAL_WAKEN_CHILDREN
mechanism is removed.

* We don't attempt to clean out dead messages after every message-receipt
operation; rather, we do it on the insertion side, and only when the queue
fullness passes certain thresholds.

* Split SInvalLock into SInvalReadLock and SInvalWriteLock so that readers
don't block writers nor vice versa (except during the infrequent queue
cleanout operations).

* Transfer multiple sinval messages for each acquisition of a read or
write lock.
2008-06-19 21:32:56 +00:00
..
backendid.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
block.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
buf.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
buf_internals.h Improve our #include situation by moving pointer types away from the 2008-06-19 00:46:06 +00:00
buffile.h Provide a build-time option to store large relations as single files, rather 2008-03-10 20:06:27 +00:00
bufmgr.h Improve our #include situation by moving pointer types away from the 2008-06-19 00:46:06 +00:00
bufpage.h Move BufferGetPageSize and BufferGetPage from bufpage.h to bufmgr.h. It is 2008-06-08 22:00:48 +00:00
fd.h Provide a build-time option to store large relations as single files, rather 2008-03-10 20:06:27 +00:00
freespace.h Reduce memory consumption during VACUUM of large relations, by using 2008-03-10 02:04:10 +00:00
ipc.h Repair two places where SIGTERM exit could leave shared memory state 2008-04-16 23:59:40 +00:00
item.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
itemid.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
itempos.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
itemptr.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
large_object.h Separate snapshot management code from tuple visibility code, create a 2008-03-26 16:20:48 +00:00
lmgr.h Restructure some header files a bit, in particular heapam.h, by removing some 2008-05-12 00:00:54 +00:00
lock.h Restructure some header files a bit, in particular heapam.h, by removing some 2008-05-12 00:00:54 +00:00
lwlock.h Rewrite the sinval messaging mechanism to reduce contention and avoid 2008-06-19 21:32:56 +00:00
off.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_sema.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_shmem.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pmsignal.h Rewrite the sinval messaging mechanism to reduce contention and avoid 2008-06-19 21:32:56 +00:00
pos.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
proc.h Revert addition of pg_terminate_backend() because of race conditions. 2008-04-15 20:28:47 +00:00
procarray.h Improve snapshot manager by keeping explicit track of snapshots. 2008-05-12 20:02:02 +00:00
relfilenode.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
s_lock.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
shmem.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
sinval.h Rewrite the sinval messaging mechanism to reduce contention and avoid 2008-06-19 21:32:56 +00:00
sinvaladt.h Rewrite the sinval messaging mechanism to reduce contention and avoid 2008-06-19 21:32:56 +00:00
smgr.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
spin.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00