Hi all, Here is the new patch which fixes all of above comments, I changed the design a bit now as below
What is it? =========== A pair of bgwrokers one which automatically dumps buffer pool's block info at a given interval and another which loads those block into buffer pool when the server restarts. How does it work? ================= When the shared library pg_prewarm is preloaded during server startup. A bgworker "auto pg_prewarm load" is launched immediately after the server is started. The bgworker will start loading blocks obtained from block info entry <DatabaseId,TableSpaceId,RelationId,Forknum,BlockNum> in $PGDATA/AUTO_PG_PREWARM_FILE, until there is a free buffer in the buffer pool. This way we do not replace any new blocks which were loaded either by the recovery process or the querying clients. Once the "auto pg_prewarm load" bgworker has completed its job, it will register a dynamic bgworker "auto pg_prewarm dump" which has to be launched when the server reaches a consistent state. The new bgworker will periodically scan the buffer pool and then dump the meta info of blocks which are currently in the buffer pool. The GUC pg_prewarm.dump_interval if set > 0 indicates the minimum time interval between two dumps. If pg_prewarm.dump_interval is set to AT_PWARM_DUMP_AT_SHUTDOWN_ONLY the bgworker will only dump at the time of server shutdown. If it is set to AT_PWARM_LOAD_ONLY we do not want the bgworker to dump anymore, so it stops there. To relaunch a stopped "auto pg_prewarm dump" bgworker we can use the utility function "launch_pg_prewarm_dump". ================== One problem now I have kept it open is multiple "auto pg_prewarm dump" can be launched even if already a dump/load worker is running by calling launch_pg_prewarm_dump. I can avoid this by dropping a lock-file before starting the bgworkers. But, if there is an another method to avoid launching bgworker on a simple method I can do same. Any suggestion on this will be very helpful. -- Thanks and Regards Mithun C Y EnterpriseDB: http://www.enterprisedb.com
pg_auto_prewarm_03.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers