mirror of
https://github.com/postgres/postgres.git
synced 2025-11-15 03:41:20 +03:00
Try to avoid running with a full fsync request queue.
When we need to insert a new entry and the queue is full, compact the entire queue in the hopes of making room for the new entry. Doing this on every insertion might worsen contention on BgWriterCommLock, but when the queue it's full, it's far better than allowing the backend to perform its own fsync, per testing by Greg Smith as reported in http://archives.postgresql.org/pgsql-hackers/2011-01/msg02665.php Original idea from Greg Smith. Patch by me. Review by Chris Browne and Greg Smith
This commit is contained in:
@@ -34,7 +34,13 @@
|
||||
/* interval for calling AbsorbFsyncRequests in mdsync */
|
||||
#define FSYNCS_PER_ABSORB 10
|
||||
|
||||
/* special values for the segno arg to RememberFsyncRequest */
|
||||
/*
|
||||
* Special values for the segno arg to RememberFsyncRequest.
|
||||
*
|
||||
* Note that CompactBgwriterRequestQueue assumes that it's OK to remove an
|
||||
* fsync request from the queue if an identical, subsequent request is found.
|
||||
* See comments there before making changes here.
|
||||
*/
|
||||
#define FORGET_RELATION_FSYNC (InvalidBlockNumber)
|
||||
#define FORGET_DATABASE_FSYNC (InvalidBlockNumber-1)
|
||||
#define UNLINK_RELATION_REQUEST (InvalidBlockNumber-2)
|
||||
|
||||
Reference in New Issue
Block a user