We tried reducing the memory footprint of the postgres processes, via
shared_buffers (from 3 on Linux to 3000 on Windows), max_fsm_pages
(from 2000250 on Linux to 10 on Windows), max_fsm_relations (from
2 on Linux to 5000 on Windows), and max_connections (from 222 on
Linux to 100 on Windows). Another variable we played with was
effective_cache_size (174000 on Linux, 43700 on Windows). None of these
reduced memory usage, or improved performance, significantly. We still
see the high page fault rate too. Other things we tried were reducing
the number of WAL buffers, and changing the wal_sync_method to
opendata_sync, all with minimal effect. I've attached the latest version
of our Windows postgresql.conf file.
Doug
On Mon, 2008-01-07 at 19:49 +0500, Usama Dar wrote:
Doug Knight wrote:
We are running the binary distribution, version 8.2.5-1, installed on
Windows XP Pro 32 bit with SP2. We typically run postgres on linux,
but have a need to run it under windows as well. Our typical admin
tuning for postgresql.conf doesn't seem to be as applicable for windows.
So what have you tuned so far? what are your current postgresql settings
that you have modified? What are your system specs for Hardware, RAM ,
CPU etc?
# -
# PostgreSQL configuration file
# -
#
# This file consists of lines of the form:
#
# name = value
#
# (The '=' is optional.) White space may be used. Comments are introduced
# with '#' anywhere on a line. The complete list of option names and
# allowed values can be found in the PostgreSQL documentation. The
# commented-out settings shown in this file represent the default values.
#
# Please note that re-commenting a setting is NOT sufficient to revert it
# to the default value, unless you restart the postmaster.
#
# Any option can also be given as a command line switch to the
# postmaster, e.g. 'postmaster -c log_connections=on'. Some options
# can be changed at run-time with the 'SET' SQL command.
#
# This file is read on postmaster startup and when the postmaster
# receives a SIGHUP. If you edit the file on a running system, you have
# to SIGHUP the postmaster for the changes to take effect, or use
# pg_ctl reload. Some settings, such as listen_addresses, require
# a postmaster shutdown and restart to take effect.
#---
# FILE LOCATIONS
#---
# The default values of these variables are driven from the -D command line
# switch or PGDATA environment variable, represented here as ConfigDir.
#data_directory = 'ConfigDir' # use data in another directory
#hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file
#ident_file = 'ConfigDir/pg_ident.conf' # IDENT configuration file
# If external_pid_file is not explicitly set, no extra pid file is written.
#external_pid_file = '(none)' # write an extra pid file
#---
# CONNECTIONS AND AUTHENTICATION
#---
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost', '*' = all
#port = 5432
max_connections = 100
# note: increasing max_connections costs ~400 bytes of shared memory per
# connection slot, plus lock space (see max_locks_per_transaction). You
# might also need to raise shared_buffers to support more connections.
superuser_reserved_connections = 3 # def 2, add one for autovacuum
#unix_socket_directory = ''
#unix_socket_group = ''
#unix_socket_permissions = 0777 # octal
#bonjour_name = '' # defaults to the computer name
# - Security Authentication -
#authentication_timeout = 60# 1-600, in seconds
#ssl = off
#password_encryption = on
#db_user_namespace = off
# Kerberos
#krb_server_keyfile = ''
#krb_srvname = 'postgres'
#krb_server_hostname = '' # empty string matches any keytab entry
#krb_caseins_users = off
# - TCP Keepalives -
# see 'man 7 tcp' for details
#tcp_keepalives_idle = 0# TCP_KEEPIDLE, in seconds;
# 0 selects the system default
#tcp_keepalives_interval = 0# TCP_KEEPINTVL, in seconds;
# 0 selects the system default
#tcp_keepalives_count = 0 # TCP_KEEPCNT;
# 0 selects the system default
#---
# RESOURCE USAGE (except WAL)
#---
# - Memory -
shared_buffers = 3000