*** a/doc/src/sgml/config.sgml --- b/doc/src/sgml/config.sgml *************** *** 1909,1934 **** SET ENABLE_SEQSCAN TO OFF; - - wal_sender_delay (integer) - - wal_sender_delay configuration parameter - - - - Specifies the delay between activity rounds for WAL sender processes. - In each round the WAL sender sends any WAL accumulated since the last - round to the standby server. It then sleeps for - wal_sender_delay milliseconds, and repeats. The default - value is 200 milliseconds (200ms). - Note that on many systems, the effective resolution of sleep delays is - 10 milliseconds; setting wal_sender_delay to a value that - is not a multiple of 10 might have the same results as setting it to - the next higher multiple of 10. This parameter can only be set in the - postgresql.conf file or on the server command line. - - - wal_keep_segments (integer) --- 1909,1914 ---- *** a/src/backend/replication/walsender.c --- b/src/backend/replication/walsender.c *************** *** 65,71 **** bool am_walsender = false; /* Am I a walsender process ? */ /* User-settable parameters for walsender */ int max_wal_senders = 0; /* the maximum number of concurrent walsenders */ - int WalSndDelay = 200; /* max sleep time between some actions */ /* * These variables are used similarly to openLogFile/Id/Seg/Off, --- 65,70 ---- *************** *** 77,82 **** static uint32 sendSeg = 0; --- 76,89 ---- static uint32 sendOff = 0; /* + * The delay between activity rounds for walsender. In each round + * walsender sends any WAL accumulated since the last round to the + * standby server. It then sleeps for 10000000 microseconds (10s), + * and repeats. + */ + #define WAL_SENDER_DELAY 10000000 + + /* * How far have we sent WAL already? This is also advertised in * MyWalSnd->sentPtr. (Actually, this is the next WAL location to send.) */ *************** *** 444,458 **** WalSndLoop(void) break; if (caughtup && !got_SIGHUP && !ready_to_stop && !shutdown_requested) { - /* - * XXX: We don't really need the periodic wakeups anymore, - * WaitLatchOrSocket should reliably wake up as soon as - * something interesting happens. - */ - /* Sleep */ WaitLatchOrSocket(&MyWalSnd->latch, MyProcPort->sock, ! WalSndDelay * 1000L); } /* Check if the connection was closed */ --- 451,459 ---- break; if (caughtup && !got_SIGHUP && !ready_to_stop && !shutdown_requested) { /* Sleep */ WaitLatchOrSocket(&MyWalSnd->latch, MyProcPort->sock, ! WAL_SENDER_DELAY); } /* Check if the connection was closed */ *** a/src/backend/utils/misc/guc.c --- b/src/backend/utils/misc/guc.c *************** *** 1790,1805 **** static struct config_int ConfigureNamesInt[] = }, { - {"wal_sender_delay", PGC_SIGHUP, WAL_REPLICATION, - gettext_noop("WAL sender sleep time between WAL replications."), - NULL, - GUC_UNIT_MS - }, - &WalSndDelay, - 200, 1, 10000, NULL, NULL - }, - - { {"commit_delay", PGC_USERSET, WAL_SETTINGS, gettext_noop("Sets the delay in microseconds between transaction commit and " "flushing WAL to disk."), --- 1790,1795 ---- *** a/src/backend/utils/misc/postgresql.conf.sample --- b/src/backend/utils/misc/postgresql.conf.sample *************** *** 188,194 **** #max_wal_senders = 0 # max number of walsender processes # (change requires restart) - #wal_sender_delay = 200ms # walsender cycle time, 1-10000 milliseconds #wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables #vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed --- 188,193 ---- *** a/src/include/replication/walsender.h --- b/src/include/replication/walsender.h *************** *** 45,51 **** extern WalSndCtlData *WalSndCtl; extern bool am_walsender; /* user-settable parameters */ - extern int WalSndDelay; extern int max_wal_senders; extern int WalSenderMain(void); --- 45,50 ----