git.postgresql.org Git - postgresql.git/commit

git projects / postgresql.git / commit
? search:
summary | shortlog | log | commit | commitdiff | tree
(parent: 30dc388) | patch
Rewrite the sinval messaging mechanism to reduce contention and avoid
2008年6月19日 21:32:56 +0000 (21:32 +0000)
2008年6月19日 21:32:56 +0000 (21:32 +0000)
commit fad153ec45299bd4d4f29dec8d9e04e2f1c08148
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.
src/backend/postmaster/postmaster.c diff | blob | blame | history
src/backend/storage/ipc/sinval.c diff | blob | blame | history
src/backend/storage/ipc/sinvaladt.c diff | blob | blame | history
src/backend/utils/cache/inval.c diff | blob | blame | history
src/include/storage/lwlock.h diff | blob | blame | history
src/include/storage/pmsignal.h diff | blob | blame | history
src/include/storage/sinval.h diff | blob | blame | history
src/include/storage/sinvaladt.h diff | blob | blame | history
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /