Performance issues vis a vis checkpoints and uhhh what am I doing wrong...
Posted in 2000
Dear Informix Experts and non-experts and pseudo-experts,
After a nice leisurely summer, the fall has brought on performance
issues that I would like your advice on. Specifically checkpoints that used
to take 0-1 seconds are now taking 2-6 seconds and at least twice per day
will escalate to 15-20 seconds, which begets user groaning and dba job
pressure. In addition the bufwaits ratio will avg 10-17% during the first
hour of being zero'd out. As the sample period progresses to 2-3 hours it
edges back down to 5-10%. The same is true for bufwaits only inversed,
starting at 92-97% and dropping to 75-85%. Occasionally, but not always,
the problems occur when the app (primarily a oltp back office application)
is used by staff for DSS reporting (fy year reports, ad hoc analysis, etc).
One thing I am considering trying is setting the DSS session env parameters
to take advantage of PDQ and modifying all the sql for dirty read...?
Each week I have been incrementing the buffers, shmvirt, and last weekend
the ra parameters, otherwise I haven't been toying with much else.
One area I know needs to be addresses is the single tempdbs, which will be
fixed this weekend by creating two additional tempdbs. Another area some of
you pointed out in a previous posting is the amount of physical log space
and the root dbs which will also be increased this weekend. I do not have
KAIO on as I recall several posts which indicated sporadic problems with the
HP 11x platform. I think onstat -g * output looks ok, except in onstat iov
the io/wup's can reach above 1.0 for all the aiovp's, not sure if this is an
indicator of something serious.
HP 11.0 64 bit
Infx 7.31 UC2A 32 bit
8 gig mem
4 cpu
Usual unix apps/services but nothing consuming resources. 30-55 users with
300-375 active 450-550 total connections.
Your advice is very much appreciated!
tia,
Doug
p.s. I hope I haven't made an obvious error aka the poor stiff posting the
issue of the 32 gig db piped to 19gig tape...I don't think I could handle
the clowning around of carlos, et al, oohh probably don't have to worry, as
the holder of the procrastinators list he'll put off any broadsides till
tomorrow.
Informix Dynamic Server Version 7.31.UC2A -- On-Line -- Up 1 days
13:52:59 -- 482128 Kbytes
# Root Dbspace Configuration
ROOTNAME rootdbs # Root dbspace nameROOTPATH /dbms/links/rootdbs # Path for device containing root
dbspace
ROOTOFFSET 512 # Offset of root dbspace into device
(Kbytes)
ROOTSIZE 127488 # Size of root dbspace (Kbytes)
# Physical Log Configuration
PHYSDBS plogdbs # Location (dbspace) of physical log
PHYSFILE 5000 # Physical log file size (Kbytes)
# Logical Log Configuration
LOGFILES 50 # Number of logical log files
LOGSIZE 5000 # Logical log size (Kbytes)
# Diagnostics
TBLSPACE_STATS 0
# Optical
STAGEBLOB # Informix Dynamic Server/Optical staging
area
# System Configuration
SERVERNUM 0 # Unique id corresponding to a DynamicServer instance
DBSERVERNAME online # Name of default database server
DBSERVERALIASES online2 # List of alternate dbservernames
NETTYPE ipcshm,2,200,CPU # Configure poll thread(s) for nettype
DEADLOCK_TIMEOUT 60 # Max time to wait of lock in distributed
env.
RESIDENT 1 # Forced residency flag (Yes = 1, No = 0)
MULTIPROCESSOR 1 # 0 for single-processor, 1 formulti-processor
NUMCPUVPS 3 # change from Number of user (cpu) vps
SINGLE_CPU_VP 0 # If non-zero, limit number of cpu vps toone
NOAGE 1 # Process aging
AFF_SPROC 0 # Affinity start processor
AFF_NPROCS 3 # change from 3 Affinity number ofprocessors
# Shared Memory Parameters
LOCKS 75000 # Maximum number of locks
BUFFERS 150000 # Maximum number of shared buffers
NUMAIOVPS 28 # (from 0 to 2 * chuncks) Number of IO vps
PHYSBUFF 256 # Physical log buffer size (Kbytes)
LOGBUFF 256 # 128 Logical log buffer size (Kbytes)LOGSMAX 50 # Maximum number of logical log files
CLEANERS 127 # Number of buffer cleaner processes
SHMBASE 0x0 # Shared memory base address
SHMVIRTSIZE 155456 # initial virtual shared memory segment size
SHMADD 24576 # Size of new shared memory segments (Kbyte)
SHMTOTAL 0 # Total shared memory (Kbytes). 0=>unlimited
CKPTINTVL 360 #300Check point interval (in sec)
LRUS 127 # Number of LRU queues
LRU_MAX_DIRTY 2 # LRU percent dirty begin cleaning limit
LRU_MIN_DIRTY 1 # 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 32 # Stack size (Kbytes)
# 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 /dbms/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)
# Read Ahead Variables
RA_PAGES 16 #8 Number of pages to attempt to read ahead
RA_THRESHOLD 12 #4 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.