ONCONFIG comments
Posted in 2005
Topics: High Availability & Replication, Backup & Restore, Performance & Tuning, Storage & Space Management, Server Administration, Transactions, Locking & Isolation, Logging & Checkpoints, Networking & sqlhosts Configuration, Platform-Specific Issues
Hi:
Let me begin by saying thanks to all of the frequent posters to this group.
I wanted to offer my config for comments.
thanks
============================================================
Hola:
Muchas gracias por el tiempo y su ayuda. Estoy dejando mi archivo
ONCONFIG para poder recibir comentarios que me permitar optimizar la
performance del motor.
gracias
============================================================
HP-UX 11.11 (64 bits)
4 CPU's
12 GB Memory
Array VA7400
Informix 7.31 FD8
============================================================
ONCONFIG
=======
# Root Dbspace Configuration
ROOTNAME rootdbs # Root dbspace nameROOTPATH /dev/informix/nazcasysch01 # Path for device containing
root dbspace
ROOTOFFSET 0 # Offset of rootdbspace into device (Kbytes)
ROOTSIZE 204800 # Size of root dbspace
(Kbytes)
# Disk Mirroring Configuration Parameters
MIRROR 1 # Mirroring flag (Yes = 1, No = 0)
MIRRORPATH # Path for device containing mirrored root
MIRROROFFSET 0 # Offset into mirrored device (Kbytes)
# Physical Log Configuration
PHYSDBS phydbs # Location (dbspace) of physical log
PHYSFILE 64000 # Physical log file size (Kbytes)
# Logical Log Configuration
LOGFILES 80 # Number of logical log files
LOGSIZE 32768 # Logical log size (Kbytes)
# Diagnostics
MSGPATH /usr/informix/log/nazca.log # System message log
file path
CONSOLE /usr/informix/log/nazca.msg # System console
message path
ALARMPROGRAM /usr/informix/etc/eventos_nazca.sh # Alarm program path
SYSALARMPROGRAM /usr/informix/etc/evidence.sh # System Alarm
program path
TBLSPACE_STATS 1
# System Archive Tape Device
TAPEDEV /dev/rmt/2m # Tape device path
#TAPEDEV /dev/rmt/2m # Tape device path
TAPEBLK 4000 # Tape block size (Kbytes)
TAPESIZE 40000000 # Maximum amount of data to put
on tape (Kbytes)
# Log Archive Tape Device
LTAPEDEV /dev/rmt/2m # Log tape device path
#LTAPEDEV /dev/rmt/2m # Log tape device path
LTAPEBLK 4000 # Log tape block size (Kbytes)
LTAPESIZE 40000000 # Max amount of data to put on log tape
(Kbytes)
# Optical
STAGEBLOB # Informix Dynamic Server/Optical staging
area
# System Configuration
SERVERNUM 1 # Unique id corresponding to aDynamic Server instance
DBSERVERNAME nazca_shm # Name of default database server
DBSERVERALIASES nazca_tcp # List of alternate dbservernames
NETTYPE ipcshm,3,250,CPU # Configure poll thread(s) for nettype
NETTYPE soctcp,3,250,CPU # Configure poll thread(s) for nettype
DEADLOCK_TIMEOUT 60 # Max time to wait of lock indistributed env.
RESIDENT 0 # Forced residency flag (Yes =
1, No = 0)
MULTIPROCESSOR 1 # 0 for single-processor, 1 formulti-processor
NUMCPUVPS 3 # Number of user (cpu) vps
SINGLE_CPU_VP 0 # If non-zero, limit number of cpu vpsto one
NOAGE 0 # Process aging
AFF_SPROC 0 # Affinity start processor
AFF_NPROCS 0 # Affinity number of processors
# Shared Memory Parameters
LOCKS 1024000 # Maximum number of locks
BUFFERS 850000 # Maximum number of shared buffers
NUMAIOVPS 1 # Number of IO vps
PHYSBUFF 512 # Physical log buffer size (Kbytes)
LOGBUFF 512 # Logical log buffer size (Kbytes)LOGSMAX 100 # Maximum number of logical log files
CLEANERS 64 # Number of buffer cleaner processes
SHMBASE 0x0 # Shared memory base address
SHMVIRTSIZE 393216 # initial virtual shared memory segment size
SHMADD 131072 # Size of new shared memory segments
(Kbytes)
SHMTOTAL 0 # Total shared memory (Kbytes). 0=>unlimited
CKPTINTVL 300 # Check point interval (in sec)
LRUS 64 # Number of LRU queues
LRU_MAX_DIRTY 10 # LRU percent dirty begin cleaning limit
LRU_MIN_DIRTY 5 # LRU percent dirty end cleaning limit
LTXHWM 50 # Long transaction high water markpercentage
LTXEHWM 60 # Long transaction high water mark
(exclusive)
TXTIMEOUT 0x12c # Transaction timeout (in sec)
STACKSIZE 128 # Stack size (Kbytes)
# System Page Size
# BUFFSIZE - Dynamic Server no longer supports this configuration parameter.
# To determine the page size used by Dynamic Server on your
platform
# see the last line of output from the command, 'onstat -b'.
# Recovery Variables
# OFF_RECVRY_THREADS:
# Number of parallel worker threads during fast recovery or an offline
restore.
# ON_RECVRY_THREADS:
# Number of parallel worker threads during an online restore.
OFF_RECVRY_THREADS 10 # Default number of offline workerthreads
ON_RECVRY_THREADS 1 # Default number of online worker threads
# Data Replication Variables
# DRAUTO: 0 manual, 1 retain type, 2 reverse type
DRAUTO 0 # DR automatic switchover
DRINTERVAL 30 # DR max time between DR buffer flushes (in
sec)
DRTIMEOUT 30 # DR network timeout (in sec)
DRLOSTFOUND /usr/informix/etc/dr.lostfound # DR lost+found file path
# CDR Variables
CDR_LOGBUFFERS 2048 # size of log reading buffer pool (Kbytes)
CDR_EVALTHREADS 1,2 # evaluator threads (per-cpu-vp,additional)
CDR_DSLOCKWAIT 5 # DS lockwait timeout (seconds)
CDR_QUEUEMEM 4096 # Maximum amount of memory for any CDR queue
(Kbytes)CDR_LOGDELTA 30 # % of log space allowed in queue memory
CDR_NUMCONNECT 16 # Expected connections per server
CDR_NIFRETRY 300 # Connection retry (seconds)
CDR_NIFCOMPRESS 0 # Link level compression (-1 never, 0 none,
9 max)
# Backup/Restore variables
BAR_ACT_LOG /usr/informix/log/bar_act_nazca.log
BAR_MAX_BACKUP 0
BAR_RETRY 1
BAR_NB_XPORT_COUNT 10
BAR_XFER_BUF_SIZE 31
# BAR_DEBUG 9
BAR_DEBUG_LOG /usr/informix/log/bar_debug.log
# Informix Storage Manager variables
ISM_DATA_POOL ISMData # If the data pool name is changed, be sure
to
# update $INFORMIXDIR/bin/onbar. Change to
# ism_catalog -create_bootstrap -pool <new
name>
ISM_LOG_POOL ISMLogs
# Read Ahead Variables
RA_PAGES 32 # Number of pages to attempt to read ahead
RA_THRESHOLD 30 # Number of pages left before next group
# DBSPACETEMP:
# Dynamic Server equivalent of DBTEMP for SE. This is the list of dbspaces
# that the Dynamic Server SQL Engine will use to create temp tables etc.
# If specified it must be a colon separated list of dbspaces that exist
# when the Dynamic Server system is brought online. If not specified, or if
# all dbspaces specified are invalid, various ad hoc queries will create
# temporary files in /tmp instead.
DBSPACETEMP temporal1,temporl2 # Default temp dbspaces
# DUMP*:
# The following parameters control the type of diagnostics information which
# is preserved when an unanticipated error condition (assertion failure)
occurs
# during Dynamic Server operations.
# For DUMPSHMEM, DUMPGCORE and DUMPCORE 1 means Yes, 0 means No.
DUMPDIR /tmp # Preserve diagnostics in this directory
DUMPSHMEM 0 # Dump a copy of shared memory
DUMPGCORE 0 # Dump a core image using 'gcore'
DUMPCORE 0 # Dump a core image (Warning:this abortsDynamic Server)
DUMPCNT 1 # Number of shared memory or gcore dumps for# a single user's session
FILLFACTOR 90 # Fill factor for building indexes
# method for Dynamic Server to use when determi
I find onstat -a output to be better to work from,
otherwise you're
guessing.
I will also say that of the tuning knobs, $ONCONFIG represents many of the
finer control knobs. Disk layout and fragmentation can be much more
important. oncheck -pe output can be very revealing here.
Offhand, rootdbs looks small and you're not affinitizing to the CPUs (is
that SOP under HPUX? I forget). Are you really supporting 1500
connections? (nettype)
That said, I'll try to have a deeper look this evening.
j.
----- Original Message -----
From: "Bono Vox" <in4mixperu@hotmail.com>
To: <ids@iiug.org>
Sent: Tuesday, May 10, 2005 4:00 AM
Subject: ONCONFIG comments [4891]
> Hi:
> Let me begin by saying thanks to all of the frequent posters to this
group.
> I wanted to offer my config for comments.
> thanks
>
> ============================================================
> Hola:
> Muchas gracias por el tiempo y su ayuda. Estoy dejando mi archivo
> ONCONFIG para poder recibir comentarios que me permitar optimizar la
> performance del motor.
>
> gracias
>
> ============================================================
> HP-UX 11.11 (64 bits)
> 4 CPU's
> 12 GB Memory
> Array VA7400
> Informix 7.31 FD8
> ============================================================
>
> ONCONFIG
> =======
>
> # Root Dbspace Configuration
>
> ROOTNAME rootdbs # Root dbspace name> ROOTPATH /dev/informix/nazcasysch01 # Path for device containing
> root dbspace
> ROOTOFFSET 0 # Offset of root> dbspace into device (Kbytes)
> ROOTSIZE 204800 # Size of rootdbspace
> (Kbytes)
>
> # Disk Mirroring Configuration Parameters
>
> MIRROR 1 # Mirroring flag (Yes = 1, No = 0)
> MIRRORPATH # Path for device containing mirrored root
> MIRROROFFSET 0 # Offset into mirrored device (Kbytes)>
> # Physical Log Configuration
>
> PHYSDBS phydbs # Location (dbspace) of physical log
> PHYSFILE 64000 # Physical log file size (Kbytes)>
> # Logical Log Configuration
>
> LOGFILES 80 # Number of logical log files
> LOGSIZE 32768 # Logical log size (Kbytes)>
> # Diagnostics
>
> MSGPATH /usr/informix/log/nazca.log # System message log
> file path
> CONSOLE /usr/informix/log/nazca.msg # System console
> message path
> ALARMPROGRAM /usr/informix/etc/eventos_nazca.sh # Alarm program
path
> SYSALARMPROGRAM /usr/informix/etc/evidence.sh # System Alarm
> program path
> TBLSPACE_STATS 1>
> # System Archive Tape Device
>
> TAPEDEV /dev/rmt/2m # Tape device path
> #TAPEDEV /dev/rmt/2m # Tape device path
> TAPEBLK 4000 # Tape block size (Kbytes)
> TAPESIZE 40000000 # Maximum amount of data to put
> on tape (Kbytes)>
> # Log Archive Tape Device
>
> LTAPEDEV /dev/rmt/2m # Log tape device path
> #LTAPEDEV /dev/rmt/2m # Log tape device path
> LTAPEBLK 4000 # Log tape block size (Kbytes)
> LTAPESIZE 40000000 # Max amount of data to put on log tape
> (Kbytes)>
> # Optical
>
> STAGEBLOB # Informix Dynamic Server/Optical staging
> area
>
> # System Configuration
>
> SERVERNUM 1 # Unique id corresponding to a> Dynamic Server instance
> DBSERVERNAME nazca_shm # Name of default database server
> DBSERVERALIASES nazca_tcp # List of alternate dbservernames
> NETTYPE ipcshm,3,250,CPU # Configure poll thread(s) fornettype
> NETTYPE soctcp,3,250,CPU # Configure poll thread(s) fornettype
> DEADLOCK_TIMEOUT 60 # Max time to wait of lock in> distributed env.
> RESIDENT 0 # Forced residency flag (Yes =
> 1, No = 0)
>
> MULTIPROCESSOR 1 # 0 for single-processor, 1 for> multi-processor
> NUMCPUVPS 3 # Number of user (cpu) vps
> SINGLE_CPU_VP 0 # If non-zero, limit number of cpu vps> to one
>
> NOAGE 0 # Process aging
> AFF_SPROC 0 # Affinity start processor
> AFF_NPROCS 0 # Affinity number of processors>
> # Shared Memory Parameters
>
> LOCKS 1024000 # Maximum number of locks
> BUFFERS 850000 # Maximum number of shared buffers
> NUMAIOVPS 1 # Number of IO vps
> PHYSBUFF 512 # Physical log buffer size (Kbytes)
> LOGBUFF 512 # Logical log buffer size (Kbytes)> LOGSMAX 100 # Maximum number of logical log files
> CLEANERS 64 # Number of buffer cleaner processes
> SHMBASE 0x0 # Shared memory base address
> SHMVIRTSIZE 393216 # initial virtual shared memory segmentsize
> SHMADD 131072 # Size of new shared memory segments
> (Kbytes)
> SHMTOTAL 0 # Total shared memory (Kbytes).
0=>unlimited
> CKPTINTVL 300 # Check point interval (in sec)
> LRUS 64 # Number of LRU queues
> LRU_MAX_DIRTY 10 # LRU percent dirty begin cleaning limit
> LRU_MIN_DIRTY 5 # LRU percent dirty end cleaning limit
> LTXHWM 50 # Long transaction high water mark> percentage
> LTXEHWM 60 # Long transaction high water mark
> (exclusive)
> TXTIMEOUT 0x12c # Transaction timeout (in sec)
> STACKSIZE 128 # Stack size (Kbytes)>
> # System Page Size
> # BUFFSIZE - Dynamic Server no longer supports this configuration
parameter.
> # To determine the page size used by Dynamic Server on your
> platform
> # see the last line of output from the command, 'onstat -b'.
>
>
> # Recovery Variables
> # OFF_RECVRY_THREADS:
> # Number of parallel worker threads during fast recovery or an offline
> restore.
> # ON_RECVRY_THREADS:
> # Number of parallel worker threads during an online restore.
>
> OFF_RECVRY_THREADS 10 # Default number of offline worker> threads
> ON_RECVRY_THREADS 1 # Default number of online workerthreads
>
> # Data Replication Variables
> # DRAUTO: 0 manual, 1 retain type, 2 reverse type
> DRAUTO 0 # DR automatic switchover
> DRINTERVAL 30 # DR max time between DR buffer flushes
(in
> sec)
> DRTIMEOUT 30 # DR network timeout (in sec)
> DRLOSTFOUND /usr/informix/etc/dr.lostfound # DR lost+found file path>
> # CDR Variables
> CDR_LOGBUFFERS 2048 # size of log reading buffer pool (Kbytes)
> CDR_EVALTHREADS 1,2 # evaluator threads
(per-cpu-vp,additional)
> CDR_DSLOCKWAIT 5 # DS lockwait timeout (seconds)
> CDR_QUEUEMEM 4096 # Maximum amount of memory for any CDRqueue
> (Kbytes)
> CDR_LOGDELTA 30 # % of log space allowed in queue memory
> CDR_NUMCONNECT 16 # Expected connections per server
> CDR_NIFRETRY 300 # Connection retry (seconds)
> CDR_NIFCOMPRESS 0 # Link level compression (-1 never, 0
none,
> 9 max)>
> # Backup/Restore variables
> BAR_ACT_LOG /usr/informix/log/bar_act_nazca.log
> BAR_MAX_BACKUP 0
> BAR_RETRY 1
> BAR_NB_XPORT_COUNT 10
> BAR_XFER_BUF_SIZE 31
> # BAR_DEBUG 9
> BAR_DEBUG_LOG /usr/informix/log/bar_debug.log>
> # Informix Storage Manager variables
> ISM_DATA_POOL ISMData # If the data pool name is changed, be
sure
> to
> # update $INFORMIXDIR/bin/onbar. Change
to
> # ism_catalog -create_bootstrap -pool <new
> name>
> ISM_LOG_POOL ISMLogs
>
> # Read Ahead Variables
> RA_PAGES 32 # Number of pages to attempt to read ahead
> RA_THRESHOLD 30 # Number of pages left before next group>
> # DBSPACETEMP:
> # Dynamic Server equivalent of DBTEMP f
Comments embedded.
If somebody told me to change my $ONCONFIG, I'd take it with a large grain
of salt and check up on every parameter they suggested I modify. I'd then
make the changes one at a time and see how each one worked differently.
Looks like an OLTP instance. Also looks like you're sharing the box with
something else? Doesn't quite make sense, you've got 12GB of memory and
connections for 1500 users, and yet you appear to be only allocating 500MB
or so for the instance.
j.
----- Original Message -----
From: "Bono Vox" <in4mixperu@hotmail.com>
To: <ids@iiug.org>
Sent: Tuesday, May 10, 2005 4:00 AM
Subject: ONCONFIG comments [4891]
[...]
> ============================================================
> HP-UX 11.11 (64 bits)
> 4 CPU's
> 12 GB Memory
> Array VA7400
> Informix 7.31 FD8
> ============================================================
>
> ONCONFIG
> =======
>
> # Root Dbspace Configuration
>
> ROOTNAME rootdbs # Root dbspace name> ROOTPATH /dev/informix/nazcasysch01 # Path for device containing
> root dbspace
I trust this is a symbolic link.
> ROOTOFFSET 0 # Offset of root> dbspace into device (Kbytes)
I've never been keen on offset 0, some drives consider the first couple of
KB as their own - I have seen this wipe out instances in the past. I
usually go for an offset of 40.
> ROOTSIZE 204800 # Size of rootdbspace
> (Kbytes)
Seems a little small, but if it is sufficient...
>
> # Disk Mirroring Configuration Parameters
>
> MIRROR 1 # Mirroring flag (Yes = 1, No = 0)
> MIRRORPATH # Path for device containing mirrored root
> MIRROROFFSET 0 # Offset into mirrored device (Kbytes)
??? You have mirroring turned on, but no device specified to mirror to. I
would think this would generate an error during instance startup.
>
> # Physical Log Configuration
>
> PHYSDBS phydbs # Location (dbspace) of physical log
> PHYSFILE 64000 # Physical log file size (Kbytes)
I would check the sizing of this by checking Checkpoint frequency in your
log.
>
> # Logical Log Configuration
>
> LOGFILES 80 # Number of logical log files
> LOGSIZE 32768 # Logical log size (Kbytes)
Quite a few of these. Does this indicate that you aren't backing them off
as fast as they fill? How many are full when the backup comes to town?
[...]
> TBLSPACE_STATS 1
If you are using table space statistics then this is fine, but othetrwise it
is overhead and you might want to go back to 0.
>
> # System Archive Tape Device
>
> TAPEDEV /dev/rmt/2m # Tape device path
> #TAPEDEV /dev/rmt/2m # Tape device path
> TAPEBLK 4000 # Tape block size (Kbytes)
> TAPESIZE 40000000 # Maximum amount of data to put
> on tape (Kbytes)
Doesn't look like a no-rewind device, are you using this for backups?
>
> # Log Archive Tape Device
>
> LTAPEDEV /dev/rmt/2m # Log tape device path
> #LTAPEDEV /dev/rmt/2m # Log tape device path
> LTAPEBLK 4000 # Log tape block size (Kbytes)
> LTAPESIZE 40000000 # Max amount of data to put on log tape
> (Kbytes)
Looks like the same device. Are you using logging?
[...]
> NETTYPE ipcshm,3,250,CPU # Configure poll thread(s) fornettype
> NETTYPE soctcp,3,250,CPU # Configure poll thread(s) fornettype
While of minimal impact, still this is 6 processes to handle user
connections, 3 shared memory and 3 network. Check how many users you
actually have and adjust accordingly.
> DEADLOCK_TIMEOUT 60 # Max time to wait of lock in> distributed env.
> RESIDENT 0 # Forced residency flag (Yes =
> 1, No = 0)
Not resident? Check release notes and see if there is an issue with
residency on this platform.
>
> MULTIPROCESSOR 1 # 0 for single-processor, 1 for> multi-processor
> NUMCPUVPS 3 # Number of user (cpu) vps
If this were Solaris, I'd bump this to 4.
> SINGLE_CPU_VP 0 # If non-zero, limit number of cpu vps> to one
>
> NOAGE 0 # Process aging
> AFF_SPROC 0 # Affinity start processor
> AFF_NPROCS 0 # Affinity number of processors
I've forgotten if NOAGE should be 1 or 0 - again this is something you'd
check release notes for. You might also want to affinitize the processors.
>
> # Shared Memory Parameters
>
> LOCKS 1024000 # Maximum number of locks
> BUFFERS 850000 # Maximum number of shared buffers
> NUMAIOVPS 1 # Number of IO vps
Are you using KIO? (that's what this would seem to indicate) check queue
length for your AIO processor. If long, you might want to add to this.
> PHYSBUFF 512 # Physical log buffer size (Kbytes)
> LOGBUFF 512 # Logical log buffer size (Kbytes)
Again, minimal effect - check the usage of your buffers.
> LOGSMAX 100 # Maximum number of logical log files
> CLEANERS 64 # Number of buffer cleaner processes
That's pretty hefty. Seems larger than would be required given the small
size of your memory footprint.
> SHMBASE 0x0 # Shared memory base address
> SHMVIRTSIZE 393216 # initial virtual shared memory segmentsize
> SHMADD 131072 # Size of new shared memory segments
> (Kbytes)
Check your memory usage - are you adding a lot of memory segments? If so,
resize your SHMVIRT to try to get a single chunk of memory instead of a lot
of little ones.
> SHMTOTAL 0 # Total shared memory (Kbytes).
0=>unlimited
If you are sharing the box, then you might not want unlimited memory going
to the instance.
> CKPTINTVL 300 # Check point interval (in sec)
> LRUS 64 # Number of LRU queues
> LRU_MAX_DIRTY 10 # LRU percent dirty begin cleaning limit
> LRU_MIN_DIRTY 5 # LRU percent dirty end cleaning limit
Check how many foreground writes you are doing to tune this.
> LTXHWM 50 # Long transaction high water mark> percentage
> LTXEHWM 60 # Long transaction high water mark
> (exclusive)
Look like the default values. Generally nothing wrong with that.
[...]
> # Backup/Restore variables
> BAR_ACT_LOG /usr/informix/log/bar_act_nazca.log
> BAR_MAX_BACKUP 0
> BAR_RETRY 1
> BAR_NB_XPORT_COUNT 10
> BAR_XFER_BUF_SIZE 31
> # BAR_DEBUG 9
> BAR_DEBUG_LOG /usr/informix/log/bar_debug.log
Ah. good.
[...]
> # Read Ahead Variables
> RA_PAGES 32 # Number of pages to attempt to read ahead
> RA_THRESHOLD 30 # Number of pages left before next group
Check how much of your read ahead you are using. If you have a lot of
users, this may be too high. For DSS this is too low.
[...]
> DBSPACETEMP temporal1,temporl2 # Default temp dbspaces
I'd have gone for 8 of these with 4 CPUs. How is temp performing?
[...]
> # Parallel Database Queries (pdq)
> MAX_PDQPRIORITY 80 # Maximum allowed pdqpriority
> DS_MAX_QUERIES 20 # Maximum number of decision supportqueries
> DS_TOTAL_MEMORY 102400 # Decision support memory (Kbytes)
> DS_MAX_SCANS 1048576 # Maximum number of decision support scans
> DATASKIP off # List of dbspaces to skip
100 MB for DSS stuff. Won't get you very far - how is it performing?
[d
Should have qualified my comment on rootoffset. I assumed you are using KAIO and raw disk because your NUMAIOVPS is so small - in this case rootoffset is important. Especially since the first 13 pages of rootdbs are the crucial pages. If, on the other hand, your are using AIO (in which case your NUMAIOVPS is way too small) and cooked files then an offset of 0 is fine. You might also be subject to a logical volume manager - in which case rootoffset of 0 might be fine as well. j. ----- Original Message ----- From: "Bono Vox" <in4mixperu@hotmail.com> To: <ids@iiug.org> Sent: Tuesday, May 10, 2005 4:00 AM Subject: ONCONFIG comments [4891] > Hi: > Let me begin by saying thanks to all of the frequent posters to this group. > I wanted to offer my config for comments. > thanks >
Related threads
- onbar -c -F in Windows Informix instance
- Anyone... SQLCODE=-668, ISAM error=-1
- Not using the 100% logical log page size alloacted to informix