PostgreSQL Source Code git master
|
#include "postgres.h"
#include <sys/time.h>
#include "access/xlog.h"
#include "access/xlog_internal.h"
#include "access/xlogrecovery.h"
#include "libpq/pqsignal.h"
#include "miscadmin.h"
#include "pgstat.h"
#include "postmaster/auxprocess.h"
#include "postmaster/bgwriter.h"
#include "postmaster/interrupt.h"
#include "replication/syncrep.h"
#include "storage/bufmgr.h"
#include "storage/condition_variable.h"
#include "storage/fd.h"
#include "storage/ipc.h"
#include "storage/lwlock.h"
#include "storage/proc.h"
#include "storage/procsignal.h"
#include "storage/shmem.h"
#include "storage/smgr.h"
#include "storage/spin.h"
#include "utils/guc.h"
#include "utils/memutils.h"
#include "utils/resowner.h"
Go to the source code of this file.
Data Structures | |
struct | CheckpointerRequest |
struct | CheckpointerShmemStruct |
Macros | |
#define | WRITES_PER_ABSORB 1000 |
#define | MAX_SIGNAL_TRIES 600 /* max wait 60.0 sec */ |
Functions | |
static void | HandleCheckpointerInterrupts (void) |
static void | CheckArchiveTimeout (void) |
static bool | IsCheckpointOnSchedule (double progress) |
static bool | ImmediateCheckpointRequested (void) |
static bool | CompactCheckpointerRequestQueue (void) |
static void | UpdateSharedMemoryConfig (void) |
static void | ReqCheckpointHandler (SIGNAL_ARGS) |
void | CheckpointerMain (char *startup_data, size_t startup_data_len) |
void | CheckpointWriteDelay (int flags, double progress) |
Size | CheckpointerShmemSize (void) |
void | CheckpointerShmemInit (void) |
void | RequestCheckpoint (int flags) |
bool | ForwardSyncRequest (const FileTag *ftag, SyncRequestType type) |
void | AbsorbSyncRequests (void) |
bool | FirstCallSinceLastCheckpoint (void) |
Variables | |
static CheckpointerShmemStruct * | CheckpointerShmem |
int | CheckPointTimeout = 300 |
int | CheckPointWarning = 30 |
double | CheckPointCompletionTarget = 0.9 |
static bool | ckpt_active = false |
static pg_time_t | ckpt_start_time |
static XLogRecPtr | ckpt_start_recptr |
static double | ckpt_cached_elapsed |
static pg_time_t | last_checkpoint_time |
static pg_time_t | last_xlog_switch_time |
#define MAX_SIGNAL_TRIES 600 /* max wait 60.0 sec */ |
#define WRITES_PER_ABSORB 1000 |
Definition at line 131 of file checkpointer.c.
void AbsorbSyncRequests | ( | void | ) |
Definition at line 1281 of file checkpointer.c.
References AmCheckpointerProcess, CheckpointerShmem, END_CRIT_SECTION, CheckpointerRequest::ftag, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), CheckpointerShmemStruct::num_requests, palloc(), pfree(), RememberSyncRequest(), CheckpointerShmemStruct::requests, START_CRIT_SECTION, and CheckpointerRequest::type.
Referenced by CheckpointerMain(), CheckpointWriteDelay(), CreateCheckPoint(), ProcessSyncRequests(), SyncPostCheckpoint(), and SyncPreCheckpoint().
|
static |
Definition at line 634 of file checkpointer.c.
References DEBUG1, elog, GetLastImportantRecPtr(), GetLastSegSwitchData(), last_xlog_switch_time, Max, now(), RecoveryInProgress(), RequestXLogSwitch(), wal_segment_size, XLogArchiveTimeout, and XLogSegmentOffset.
Referenced by CheckpointerMain(), and CheckpointWriteDelay().
void CheckpointerMain | ( | char * | startup_data, |
size_t | startup_data_len | ||
) |
Definition at line 173 of file checkpointer.c.
References AbsorbSyncRequests(), ALLOCSET_DEFAULT_SIZES, AllocSetContextCreate, Assert, AtEOXact_Buffers(), AtEOXact_Files(), AtEOXact_HashTables(), AtEOXact_SMgr(), AuxiliaryProcessMainCommon(), B_CHECKPOINTER, before_shmem_exit(), CheckArchiveTimeout(), CHECKPOINT_CAUSE_TIME, CHECKPOINT_CAUSE_XLOG, CHECKPOINT_END_OF_RECOVERY, CheckpointerShmemStruct::checkpointer_pid, PROC_HDR::checkpointerProc, CheckpointerShmem, CheckPointTimeout, CheckPointWarning, ckpt_active, ckpt_cached_elapsed, CheckpointerShmemStruct::ckpt_done, CheckpointerShmemStruct::ckpt_failed, CheckpointerShmemStruct::ckpt_flags, CheckpointerShmemStruct::ckpt_lck, ckpt_start_recptr, ckpt_start_time, CheckpointerShmemStruct::ckpt_started, ConditionVariableBroadcast(), ConditionVariableCancelSleep(), CreateCheckPoint(), CreateRestartPoint(), CheckpointerShmemStruct::done_cv, EmitErrorReport(), ereport, errhint(), errmsg_plural(), error_context_stack, FlushErrorState(), GetInsertRecPtr(), GetXLogReplayRecPtr(), HandleCheckpointerInterrupts(), HOLD_INTERRUPTS, last_checkpoint_time, last_xlog_switch_time, LOG, LWLockReleaseAll(), MemoryContextReset(), MemoryContextSwitchTo(), Min, MyBackendType, MyLatch, MyProcNumber, MyProcPid, now(), PgStat_CheckpointerStats::num_performed, PgStat_CheckpointerStats::num_requested, PgStat_CheckpointerStats::num_timed, PendingCheckpointerStats, PG_exception_stack, pg_usleep(), pgstat_before_server_shutdown(), pgstat_report_checkpointer(), pgstat_report_wait_end(), pgstat_report_wal(), pqsignal(), ProcGlobal, procsignal_sigusr1_handler(), RecoveryInProgress(), ReleaseAuxProcessResources(), ReqCheckpointHandler(), ResetLatch(), PgStat_CheckpointerStats::restartpoints_performed, PgStat_CheckpointerStats::restartpoints_requested, PgStat_CheckpointerStats::restartpoints_timed, RESUME_INTERRUPTS, SIG_DFL, SIG_IGN, SIGALRM, SIGCHLD, SIGHUP, SignalHandlerForConfigReload(), SignalHandlerForShutdownRequest(), SIGPIPE, SIGUSR1, SIGUSR2, smgrdestroyall(), SpinLockAcquire, SpinLockRelease, CheckpointerShmemStruct::start_cv, TopMemoryContext, UnBlockSig, UnlockBuffers(), UpdateSharedMemoryConfig(), WaitLatch(), WL_EXIT_ON_PM_DEATH, WL_LATCH_SET, WL_TIMEOUT, and XLogArchiveTimeout.
void CheckpointerShmemInit | ( | void | ) |
Definition at line 909 of file checkpointer.c.
References CheckpointerShmem, CheckpointerShmemSize(), CheckpointerShmemStruct::ckpt_lck, ConditionVariableInit(), CheckpointerShmemStruct::done_cv, CheckpointerShmemStruct::max_requests, MemSet, NBuffers, ShmemInitStruct(), size, SpinLockInit, and CheckpointerShmemStruct::start_cv.
Referenced by CreateOrAttachShmemStructs().
Size CheckpointerShmemSize | ( | void | ) |
Definition at line 890 of file checkpointer.c.
References add_size(), mul_size(), NBuffers, and size.
Referenced by CalculateShmemSize(), and CheckpointerShmemInit().
void CheckpointWriteDelay | ( | int | flags, |
double | progress | ||
) |
Definition at line 722 of file checkpointer.c.
References AbsorbSyncRequests(), AmCheckpointerProcess, CheckArchiveTimeout(), CHECKPOINT_IMMEDIATE, ConfigReloadPending, ImmediateCheckpointRequested(), IsCheckpointOnSchedule(), MyLatch, PGC_SIGHUP, pgstat_report_checkpointer(), ProcessConfigFile(), ProcessProcSignalBarrier(), ProcSignalBarrierPending, progress, ResetLatch(), ShutdownRequestPending, UpdateSharedMemoryConfig(), WaitLatch(), WL_EXIT_ON_PM_DEATH, WL_LATCH_SET, WL_TIMEOUT, and WRITES_PER_ABSORB.
Referenced by BufferSync().
|
static |
Definition at line 1171 of file checkpointer.c.
References Assert, CheckpointerShmem, CritSectionCount, ctl, CurrentMemoryContext, DEBUG1, ereport, errmsg_internal(), HASH_BLOBS, HASH_CONTEXT, hash_create(), hash_destroy(), HASH_ELEM, HASH_ENTER, hash_search(), LWLockHeldByMe(), CheckpointerShmemStruct::num_requests, palloc0(), pfree(), and CheckpointerShmemStruct::requests.
Referenced by ForwardSyncRequest().
bool FirstCallSinceLastCheckpoint | ( | void | ) |
Definition at line 1347 of file checkpointer.c.
References CheckpointerShmem, CheckpointerShmemStruct::ckpt_done, CheckpointerShmemStruct::ckpt_lck, SpinLockAcquire, and SpinLockRelease.
Referenced by BackgroundWriterMain().
bool ForwardSyncRequest | ( | const FileTag * | ftag, |
SyncRequestType | type | ||
) |
Definition at line 1104 of file checkpointer.c.
References AmCheckpointerProcess, CheckpointerShmemStruct::checkpointer_pid, PROC_HDR::checkpointerProc, CheckpointerShmem, CompactCheckpointerRequestQueue(), elog, ERROR, CheckpointerRequest::ftag, GetPGProcByNumber, INVALID_PROC_NUMBER, IsUnderPostmaster, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), CheckpointerShmemStruct::max_requests, CheckpointerShmemStruct::num_requests, ProcGlobal, CheckpointerShmemStruct::requests, SetLatch(), CheckpointerRequest::type, and type.
Referenced by RegisterSyncRequest().
|
static |
Definition at line 569 of file checkpointer.c.
References ConfigReloadPending, ExitOnAnyError, LogMemoryContextPending, PgStat_CheckpointerStats::num_requested, PendingCheckpointerStats, PGC_SIGHUP, pgstat_report_checkpointer(), pgstat_report_wal(), proc_exit(), ProcessConfigFile(), ProcessLogMemoryContextInterrupt(), ProcessProcSignalBarrier(), ProcSignalBarrierPending, ShutdownRequestPending, ShutdownXLOG(), and UpdateSharedMemoryConfig().
Referenced by CheckpointerMain().
|
static |
Definition at line 695 of file checkpointer.c.
References CHECKPOINT_IMMEDIATE, CheckpointerShmem, and CheckpointerShmemStruct::ckpt_flags.
Referenced by CheckpointWriteDelay().
|
static |
Definition at line 791 of file checkpointer.c.
References Assert, CheckPointCompletionTarget, CheckPointSegments, CheckPointTimeout, ckpt_active, ckpt_cached_elapsed, ckpt_start_recptr, ckpt_start_time, elapsed_time(), GetInsertRecPtr(), gettimeofday(), GetXLogReplayRecPtr(), now(), progress, RecoveryInProgress(), and wal_segment_size.
Referenced by CheckpointWriteDelay().
|
static |
Definition at line 870 of file checkpointer.c.
References MyLatch, and SetLatch().
Referenced by CheckpointerMain().
void RequestCheckpoint | ( | int | flags | ) |
Definition at line 952 of file checkpointer.c.
References CHECK_FOR_INTERRUPTS, CHECKPOINT_IMMEDIATE, CHECKPOINT_REQUESTED, CHECKPOINT_WAIT, CheckpointerShmemStruct::checkpointer_pid, CheckpointerShmem, CheckpointerShmemStruct::ckpt_done, CheckpointerShmemStruct::ckpt_failed, CheckpointerShmemStruct::ckpt_flags, CheckpointerShmemStruct::ckpt_lck, CheckpointerShmemStruct::ckpt_started, ConditionVariableCancelSleep(), ConditionVariablePrepareToSleep(), ConditionVariableSleep(), CreateCheckPoint(), CheckpointerShmemStruct::done_cv, elog, ereport, errhint(), errmsg(), ERROR, IsPostmasterEnvironment, kill, LOG, MAX_SIGNAL_TRIES, pg_usleep(), smgrdestroyall(), SpinLockAcquire, SpinLockRelease, and CheckpointerShmemStruct::start_cv.
Referenced by CreateDatabaseUsingFileCopy(), do_pg_backup_start(), dropdb(), DropTableSpace(), movedb(), PerformRecoveryXLogAction(), standard_ProcessUtility(), StartupXLOG(), XLogPageRead(), and XLogWrite().
|
static |
Definition at line 1328 of file checkpointer.c.
References DEBUG2, elog, SyncRepUpdateSyncStandbysDefined(), and UpdateFullPageWrites().
Referenced by CheckpointerMain(), CheckpointWriteDelay(), and HandleCheckpointerInterrupts().
double CheckPointCompletionTarget = 0.9 |
Definition at line 138 of file checkpointer.c.
Referenced by assign_checkpoint_completion_target(), CalculateCheckpointSegments(), IsCheckpointOnSchedule(), and XLOGfileslop().
|
static |
Definition at line 128 of file checkpointer.c.
Referenced by AbsorbSyncRequests(), CheckpointerMain(), CheckpointerShmemInit(), CompactCheckpointerRequestQueue(), FirstCallSinceLastCheckpoint(), ForwardSyncRequest(), ImmediateCheckpointRequested(), and RequestCheckpoint().
int CheckPointTimeout = 300 |
Definition at line 136 of file checkpointer.c.
Referenced by CheckpointerMain(), and IsCheckpointOnSchedule().
int CheckPointWarning = 30 |
Definition at line 137 of file checkpointer.c.
Referenced by CheckpointerMain().
|
static |
Definition at line 143 of file checkpointer.c.
Referenced by CheckpointerMain(), and IsCheckpointOnSchedule().
|
static |
Definition at line 148 of file checkpointer.c.
Referenced by CheckpointerMain(), and IsCheckpointOnSchedule().
|
static |
Definition at line 147 of file checkpointer.c.
Referenced by CheckpointerMain(), and IsCheckpointOnSchedule().
|
static |
Definition at line 146 of file checkpointer.c.
Referenced by CheckpointerMain(), and IsCheckpointOnSchedule().
|
static |
Definition at line 150 of file checkpointer.c.
Referenced by CheckpointerMain().
|
static |
Definition at line 151 of file checkpointer.c.
Referenced by CheckArchiveTimeout(), and CheckpointerMain().