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.
Showing
- doc/src/sgml/runtime.sgml 71 additions, 36 deletionsdoc/src/sgml/runtime.sgml
- src/backend/catalog/index.c 1 addition, 2 deletionssrc/backend/catalog/index.c
- src/backend/commands/dbcommands.c 3 additions, 3 deletionssrc/backend/commands/dbcommands.c
- src/backend/commands/vacuum.c 1 addition, 2 deletionssrc/backend/commands/vacuum.c
- src/backend/postmaster/bgwriter.c 9 additions, 12 deletionssrc/backend/postmaster/bgwriter.c
- src/backend/storage/buffer/README 139 additions, 146 deletionssrc/backend/storage/buffer/README
- src/backend/storage/buffer/buf_init.c 33 additions, 41 deletionssrc/backend/storage/buffer/buf_init.c
- src/backend/storage/buffer/buf_table.c 24 additions, 14 deletionssrc/backend/storage/buffer/buf_table.c
- src/backend/storage/buffer/bufmgr.c 811 additions, 740 deletionssrc/backend/storage/buffer/bufmgr.c
- src/backend/storage/buffer/freelist.c 116 additions, 809 deletionssrc/backend/storage/buffer/freelist.c
- src/backend/storage/buffer/localbuf.c 47 additions, 29 deletionssrc/backend/storage/buffer/localbuf.c
- src/backend/utils/misc/guc.c 27 additions, 19 deletionssrc/backend/utils/misc/guc.c
- src/backend/utils/misc/postgresql.conf.sample 4 additions, 2 deletionssrc/backend/utils/misc/postgresql.conf.sample
- src/backend/utils/resowner/resowner.c 2 additions, 7 deletionssrc/backend/utils/resowner/resowner.c
- src/include/postmaster/bgwriter.h 1 addition, 3 deletionssrc/include/postmaster/bgwriter.h
- src/include/storage/buf_internals.h 82 additions, 37 deletionssrc/include/storage/buf_internals.h
- src/include/storage/bufmgr.h 13 additions, 5 deletionssrc/include/storage/bufmgr.h
- src/include/storage/lwlock.h 3 additions, 2 deletionssrc/include/storage/lwlock.h
Loading
Please register or sign in to comment