Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var RootCmd = &cobra.Command{ Use: buildtime.PROGNAME, Short: buildtime.PROGNAME + `pre-faults PostgreSQL heap pages based on WAL files`, Long: ` PostgreSQL's WAL-receiver applies WAL files in serial. This design implicitly assumes that the heap page required to apply the WAL entry is within the operating system's filesystem cache. If the filesystem cache does not contain the necessary heap page, the PostgreSQL WAL apply process will be block while the OS faults in the page from its storage. For large working sets of data or when the filesystem cache is cold, this is problematic for streaming replicas because they will lag and fall behind. ` + buildtime.PROGNAME + `(1) mitigates this serially scheduled IO problem by reading WAL entries via pg_xlogdump(1) and performing parallel pread(2) calls in order to "pre-fault" the page into the OS's filesystem cache so that when the PostgreSQL WAL receiver goes to apply a WAL entry to its heap, the page is already loaded into the OS'es filesystem cache. `, PersistentPreRunE: func(cmd *cobra.Command, args []string) error { switch logLevel := strings.ToUpper(viper.GetString(config.KeyLogLevel)); logLevel { case "DEBUG": zerolog.SetGlobalLevel(zerolog.DebugLevel) case "INFO": zerolog.SetGlobalLevel(zerolog.InfoLevel) case "WARN": zerolog.SetGlobalLevel(zerolog.WarnLevel) case "ERROR": zerolog.SetGlobalLevel(zerolog.ErrorLevel) case "FATAL": zerolog.SetGlobalLevel(zerolog.FatalLevel) default: return fmt.Errorf("unsupported error level: %q (supported levels: %s)", logLevel, strings.Join([]string{"DEBUG", "INFO", "WARN", "ERROR", "FATAL"}, " ")) } go func() { if !viper.GetBool(config.KeyGoogleAgentEnable) { log.Debug().Msg("gops(1) agent disabled by request") return } log.Debug().Msg("starting gops(1) agent") if err := agent.Listen(nil); err != nil { log.Fatal().Err(err).Msg("unable to start the gops(1) agent thread") } }() return nil }, }
RootCmd represents the base command when called without any subcommands
Functions ¶
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.