You can reduce the number of shared memory segements by raising the
SHMVIRTSIZE parameter. Set SHMVIRTSIZE to a value approximately equal to
the sum of the sizes of the 50 segments. You should probably also raise
the SHMADD size. Both are set to 16 MB. That's very small for most
instances.
In general, 20 instances on a single server is a matter of balancing
resources. Each instance does require memory and CPU cycles. There is
no magic for avoiding that. If you only give a small amount of memory to
an instance, then it probably will run slowly. If you give too few CPU
cycles to an instance (too few CPU VPs), then it will probably run slowly.
You will have to assign appropriate resources to each instance. There is
some point at which the system just can't service all the instances fast
enough to get the performance you want. Once you pass that point, you'll
have a hard time getting all the instances to do well.
Dick Snoke
IBM Data Management - ChannelWorks
dsnoke@us.ibm.com
(404) 487-1595
From:
"ANEES AHMAD" <aanees@i2cinc.com>
To:
ids@iiug.org
Date:
01/30/2009 09:43 AM
Subject:
Re: Poor Performanc with Multiple DB's in one Inst [14664]
Sent by:
ids-bounces@iiug.org
we are ussing SunOS CA-MCPDB2 5.10 Generic_125100-09 sun4v sparc
SUNW,Sun-Fire-T200 with IDS Version 10.0.Total concurrent users are almost
200
per DB.
We have updated the buffers to 80,000 but please see that we are using
almost
20 instances in parallel. This particular instance has 5 databases running
on
it. There are 50 virtual segments in this instance.
The results of onstat –d , onstat –m and onstat -p are as follows
====================================================
onstat -d
====================================================
IBM Informix Dynamic Server Version 10.00.FC5 -- On-Line (Prim) -- Up 4
days
05:04:17 -- 982016 Kbytes
Dbspaces
address number flags fchunk nchunks pgsize flags owner name
119babe78 1 0x40001 1 1 2048 N B informix rootdbs_mcp15
11c7e7848 2 0x40001 2 1 2048 N B informix datadbs_mcp15
11c7e79e0 3 0x40001 3 1 2048 N B informix logdbs_mcp15
11c7e7b78 4 0x42001 4 1 2048 N TB informix tempdbs_mcp15
11c7e7d10 6 0x40001 6 5 2048 N B informix datadbs_mcp17
11c7e9028 7 0x41001 7 1 2048 N B informix datadbs_mcp19
11c7e91c0 8 0x40001 8 2 2048 N B informix datadbs_mcp20
7 active, 2047 maximum
Chunks
address chunk/dbs offset size free bpages flags pathname
119bac028 1 1 0 128000 17120 PO-B /u1/ids_space/rootdbs_mcp15
119bac5f0 2 2 0 1024000 973419 PO-B /u1/ids_space/datadbs_mcp15
119bac790 3 3 0 1024000 51147 PO-B /u1/ids_space/logdbs_mcp15
119bac930 4 4 0 1024000 1023947 PO-B /u1/ids_space/tempdbs_mcp15
119bacad0 6 6 0 1024000 155 PO-B /u1/ids_space/datadbs_mcp17
119bacc70 7 7 0 1024000 462349 PO-B /u1/ids_space/datadbs_mcp19
119bace10 8 8 0 1024000 115556 PO-B /u1/ids_space/datadbs_mcp20
11c7e7028 9 6 0 512000 689 PO-B /u1/ids_space/datadbs_mcp17_1
11c7e71c8 10 6 0 512000 0 PO-B /u2/ids_space/datadbs_mcp17_2
11c7e7368 11 6 0 1024000 77565 PO-B /u3/ids_space/datadbs_mcp17_3
11c7e7508 12 8 0 512000 511997 PO-B /u1/ids_space/datadbs_mcp20_1
11c7e76a8 13 6 0 1024000 1023997 PO-B /u3/ids_space/datadbs_mcp17_4
12 active, 32766 maximum
NOTE: The values in the "size" and "free" columns for DBspace chunks are
displayed in terms of "pgsize" of the DBspace to which they belong.
Expanded chunk capacity mode: always
===================================================================
onstat -m
===================================================================
IBM Informix Dynamic Server Version 10.00.FC5 -- On-Line (Prim) -- Up 4
days
05:03:31 -- 982016 Kbytes
Message Log File: /u/informix/online_mcp15.log
06:01:24 listener-thread: err = -25582: oserr = 9: errstr = : Network
connection is broken.
System error = 9.
06:02:34 listener-thread: err = -25582: oserr = 9: errstr = : Network
connection is broken.
System error = 9.
06:06:24 listener-thread: err = -25582: oserr = 9: errstr = : Network
connection is broken.
System error = 9.
06:06:24 Checkpoint Completed: duration was 0 seconds.
06:06:24 Checkpoint loguniq 17971, logpos 0x236a018, timestamp: 0x37cc12c0
06:06:24 Maximum server connections 501
06:07:35 listener-thread: err = -25582: oserr = 9: errstr = : Network
connection is broken.
System error = 9.
06:11:24 listener-thread: err = -25582: oserr = 9: errstr = : Network
connection is broken.
System error = 9.
06:11:25 Checkpoint Completed: duration was 0 seconds.
06:11:25 Checkpoint loguniq 17971, logpos 0x47bb018, timestamp: 0x37ccd347
06:11:25 Maximum server connections 501
06:12:35 listener-thread: err = -25582: oserr = 9: errstr = : Network
connection is broken.
============================================================
onstat -p
============================================================
Profile
dskreads pagreads bufreads %cached dskwrits pagwrits bufwrits %cached
271298587 309917607 1355874794 79.99 945142 1401015 3611393 73.89
isamtot open start read write rewrite delete commit rollbk
1207750804 29722553 51104894 1035124601 390575 767451 160802 573155 219
gp_read gp_write gp_rewrt gp_del gp_alloc gp_free gp_curs
0 0 0 0 0 0 0
ovlock ovuserthread ovbuff usercpu syscpu numckpts flushes
0 0 0 127776.31 34386.69 1196 2398
bufwaits lokwaits lockreqs deadlks dltouts ckpwaits compress seqscans
4657818 489 1228094352 0 0 167 132651 641062
ixda-RA idx-RA da-RA RA-pgsused lchwaits
29115363 67044 3597317 32611572 1262355
===================================================================
onconfig file
===================================================================
# vi /u/informix/etc/onconfig_mcp15
#**************************************************************************
#
# Licensed Material - Property Of IBM
#
# "Restricted Materials of IBM"
#
# IBM Informix Dynamic Server
# (c) Copyright IBM Corporation 1996, 2005 All rights reserved.
#
# Title: onconfig.std
# Description: IBM Informix Dynamic Server Configuration Parameters
#
#**************************************************************************
# Root Dbspace Configuration
ROOTNAME rootdbs_mcp15 # Root dbspace name
ROOTPATH /u1/ids_space/rootdbs_mcp15
# Path for device containing root dbspace
ROOTOFFSET 0 # Offset of root dbspace into device (Kbytes)
ROOTSIZE 256000 # Size of root dbspace (Kbytes)
# Disk Mirroring Configuration Parameters
MIRROR 0 # Mirroring flag (Yes = 1, No = 0)
MIRRORPATH # Path for device containing mirrored root
MIRROROFFSET 0 # Offset into mirrored device (Kbytes)
# Physical Log Configuration
PHYSDBS rootdbs_mcp15 # Location (dbspace) of physical log
PHYSFILE 10000 # Physical log file size (Kbytes)
# Logical Log Configuration
LOGFILES 23 # Number of logical log files
LOGSIZE 50000 # Logical log size (Kbytes)
LOG_BACKUP_MODE CONT # Logical log backup mode (MANUAL, CONT)
# Tablespace Tablespace Configuration in Root Dbspace
TBLTBLFIRST 5120 # First extent size (Kbytes) (0 = default)
TBLTBLNEXT 5120 # Next extent size (Kbytes) (0 = default)
# Security
# DBCREATE_PERMISSION:
# By default any user can create a database. Uncomment DBCREATE_PERMISSON
to
# limit database creation to a specific user. Add a new
DBCREATE_PERMISSION
# line for each permitted user.
#DBCREATE_PERMISSION informix
# DB_LIBRARY_PATH:
# When loading a (C or C++) shared object (for a UDR or UDT), IDS checks
that
# the user-specified path starts with one of the directory prefixes listed
in
# the comma-separated list of prefixes in DB_LIBRARY_PATH. The string
# "$INFORMIXDIR/extend" must be included in DB_LIBRARY_PATH in order for
# extensibility and IBM supplied blades to work correctly.
# DB_LIBRARY_PATH $INFORMIXDIR/extend
# IFX_EXTEND_ROLE:
# 0 (or off) => Disable use of EXTEND role to control who can register
# external routines.
# 1 (or on) => Enable use of EXTEND role to control who can register
# external routines. This is the default behaviour.
#
IFX_EXTEND_ROLE 1 # To control the usage of EXTEND role.
# Diagnostics
MSGPATH /u/informix/online_mcp15.log # System message log file path
CONSOLE /dev/console # System console message path
# To automatically backup logical logs, edit alarmprogram.sh and set
# BACKUPLOGS=Y
ALARMPROGRAM /u/informix/etc/alarmprogram.sh # Alarm program path
ALRM_ALL_EVENTS 1 # Triggers ALARMPROGRAM for any event occur
TBLSPACE_STATS 1 # Maintain tblspace statistics
# System Archive Tape Device
TAPEDEV /u/ids_backup/data_mcp15 # Tape device path
TAPEBLK 128 # Tape block size (Kbytes)
TAPESIZE 2048000 # Maximum amount of data to put on tape (Kbytes)
# Log Archive Tape Device
LTAPEDEV /u/ids_backup/llog_mcp15 # Log tape device path
LTAPEBLK 128 # Log tape block size (Kbytes)
LTAPESIZE 2048000 # Max amount of data to put on log tape (Kbytes)
# Optical
STAGEBLOB # Informix Dynamic Server staging area
# System Configuration
SERVERNUM 15 # Unique id corresponding to a OnLine instance
DBSERVERNAME ids_rep15 # Name of default database server
DBSERVERALIASES ids_net_rep15 # List of alternate dbservernames
NETTYPE ipcshm,23,250,CPU # Configure poll thread(s) for nettype
NETTYPE tlitcp,23,250,NET # Configure poll thread(s) for nettype
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 23 # 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 23 # Affinity number of processors
# Shared Memory Parameters
LOCKS 2000000 # Maximum number of locks
NUMAIOVPS 8 # Number of IO vps
PHYSBUFF 128 # Physical log buffer size (Kbytes)
LOGBUFF 128 # Logical log buffer size (Kbytes)
CLEANERS 16 # Number of buffer cleaner processes
SHMBASE 0x10a000000 # Shared memory base address
SHMVIRTSIZE 16384 # initial virtual shared memory segment size
SHMADD 16384 # Size of new shared memory segments (Kbytes)
EXTSHMADD 16384 # Size of new extension shared memory segments (Kbytes)
SHMTOTAL 2048000 # Total shared memory (Kbytes). 0=>unlimited
CKPTINTVL 300 # Check point interval (in sec)
TXTIMEOUT 0x12c # Transaction timeout (in sec) 300
STACKSIZE 128 # Stack size (Kbytes)
# Dynamic Logging
# DYNAMIC_LOGS:
# 2 : server automatically add a new logical log when necessary. (ON)
# 1 : notify DBA to add new logical logs when necessary. (ON)
# 0 : cannot add logical log on the fly. (OFF)
#
# When dynamic logging is on, we can have higher values for
LTXHWM/LTXEHWM,
# because the server can add new logical logs during long transaction
rollback.
# However, to limit the number of new logical logs being added,
LTXHWM/LTXEHWM
# can be set to smaller values.
#
# If dynamic logging is off, LTXHWM/LTXEHWM need to be set to smaller
values
# to avoid long transaction rollback hanging the server due to lack of
logical
# log space, i.e. 50/60 or lower.
#
# In case of system configured with CDR, the difference between LTXHWM and
# LTXEHWM should be atleast 30% so that we could minimize log overrun
issue.
DYNAMIC_LOGS 0
LTXHWM 50
LTXEHWM 60
# System Page Size
# BUFFSIZE - OnLine no longer supports this configuration parameter.
# To determine the page size used by OnLine 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 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 /u/informix/etc/dr.lostfound # DR lost+found file path
DRIDXAUTO 0 # DR automatic index repair. 0=off, 1=on
# CDR Variables
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_NIFCOMPRESS 0 # Link level compression (-1 never, 0 none, 9 max)
CDR_SERIAL 0,0 # Serial Column Sequence
CDR_DBSPACE # dbspace for syscdr database
CDR_QHDR_DBSPACE # CDR queue dbspace (default same as catalog)
CDR_QDATA_SBSPACE # List of CDR queue smart blob spaces
# CDR_MAX_DYNAMIC_LOGS
# -1 => unlimited
# 0 => disable dynamic log addition
# >0 => limit the no. of dynamic log additions with the specified value.
# Max dynamic log requests that CDR can make within one server session.
CDR_MAX_DYNAMIC_LOGS 0 # Dynamic log addition disabled by default
# Backup/Restore variables
BAR_ACT_LOG /u/informix/bar_act.log # ON-Bar Log file - not in /tmp please
BAR_DEBUG_LOG /u/informix/bar_dbug.log # ON-Bar Debug Log - not in /tmp
please
BAR_MAX_BACKUP 0
BAR_RETRY 1
BAR_NB_XPORT_COUNT 20
BAR_XFER_BUF_SIZE 31
RESTARTABLE_RESTORE on
BAR_PROGRESS_FREQ 0
# Informix Storage Manager variables
ISM_DATA_POOL ISMData
ISM_LOG_POOL ISMLogs
# Read Ahead Variables
RA_PAGES 30 # Number of pages to attempt to read ahead
RA_THRESHOLD 25 # Number of pages left before next group
# DBSPACETEMP:
# OnLine equivalent of DBTEMP for SE. This is the list of dbspaces
# that the OnLine SQL Engine will use to create temp tables etc.
# If specified it must be a colon separated list of dbspaces that exist
# when the OnLine 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 tempdbs_mcp15 # 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 OnLine operations.
# For DUMPSHMEM, DUMPGCORE and DUMPCORE 1 means Yes, 0 means No.
DUMPDIR /u/informix/tmp # Preserve diagnostics in this directory
DUMPSHMEM 1 # Dump a copy of shared memory
DUMPGCORE 0 # Dump a core image using 'gcore'
DUMPCORE 0 # Dump a core image (Warning:this aborts OnLine)
DUMPCNT 1 # Number of shared memory or gcore dumps for
# a single user's session
FILLFACTOR 90 # Fill factor for building indexes
# method for OnLine to use when determining current time
USEOSTIME 0 # 0: use internal time(fast), 1: get time from OS(slow)
# Parallel Database Queries (pdq)
MAX_PDQPRIORITY 100 # Maximum allowed pdqpriority
DS_MAX_QUERIES # Maximum number of decision support queries
DS_TOTAL_MEMORY # Decision support memory (Kbytes)
DS_MAX_SCANS 1048576 # Maximum number of decision support scans
DS_NONPDQ_QUERY_MEM 512 # Non PDQ query memory (Kbytes)
DATASKIP off # List of dbspaces to skip
# OPTCOMPIND
# 0 => Nested loop joins will be preferred (where
# possible) over sortmerge joins and hash joins.
# 1 => If the transaction isolation mode is not
# "repeatable read", optimizer behaves as in (2)
# below. Otherwise it behaves as in (0) above.
# 2 => Use costs regardless of the transaction isolation
# mode. Nested loop joins are not necessarily
# preferred. Optimizer bases its decision purely
# on costs.
OPTCOMPIND 2 # To hint the optimizer
DIRECTIVES 1 # Optimizer DIRECTIVES ON (1/Default) or OFF (0)
ONDBSPACEDOWN 2 # Dbspace down option: 0 = CONTINUE, 1 = ABORT, 2 = WAIT
OPCACHEMAX 0 # Maximum optical cache size (Kbytes)
# HETERO_COMMIT (Gateway participation in distributed transactions)
# 1 => Heterogeneous Commit is enabled
# 0 (or any other value) => Heterogeneous Commit is disabled
HETERO_COMMIT 0
SBSPACENAME # Default smartblob space name - this is where blobs
# go if no sbspace is specified when the smartblob is
# created. It is also used by some datablades as
# the location to put their smartblobs.
SYSSBSPACENAME # Default smartblob space for use by the Informix
# Server. This is used primarily for Informix Server
# system statistics collection.
BLOCKTIMEOUT 3600 # Default timeout for system block
SYSALARMPROGRAM /u/informix/etc/evidence.sh # System Alarm program path
# Optimization goal: -1 = ALL_ROWS(Default), 0 = FIRST_ROWS
OPT_GOAL 0
ALLOW_NEWLINE 0 # embedded newlines(Yes = 1, No = 0 or anything but 1)
#Create Index Online Shared Memory usage limitation
ONLIDX_MAXMEM 5120 # Per pool per index (Kbytes)
#Timeout for client connection request
LISTEN_TIMEOUT 10 # Timeout (in Seconds)
#Following are the deprecated configuration parameters, instead of these
#use BUFFERPOOL configuration parameter
#BUFFERS, LRUS, LRU_MIN_DIRTY, LRU_MAX_DIRTY
IFX_FOLDVIEW 1 # fold multiple tables or union all view with ansi joins
#
# The following are default settings for enabling Java in the database.
# Replace all occurrences of /usr/informix with the value of $INFORMIXDIR.
#VPCLASS jvp,num=1 # Number of JVPs to start with
JVPJAVAHOME /u/informix/extend/krakatoa/jre/
# JRE installation root directory
JVPHOME /u/informix/extend/krakatoa # Krakatoa installation directory
JVPPROPFILE /u/informix/extend/krakatoa/.jvpprops # JVP property file
JVPLOGFILE /u/informix/jvp.log # JVP log file.
JDKVERSION 1.4 # JDK version supported by this server
# The path to the JRE libraries relative to JVPJAVAHOME
JVPJAVALIB /lib/sparcv9/
# The JRE libraries to use for the Java VM
JVPJAVAVM hpi:server:verify:java:net:zip:jpeg
# use JVPARGS to change Java VM configuration
#To display jni call
#JVPARGS -verbose:jni
# Classpath to use upon Java VM start-up (use _g version for debugging)
# JVPCLASSPATH
/usr/informix/extend/krakatoa/krakatoa_g.jar:/usr/informix/extend/krakatoa/jdbc_g.jar
JVPCLASSPATH
/u/informix/extend/krakatoa/krakatoa.jar:/u/informix/extend/krakatoa/jdbc.jar
# The following parameters are related to the buffer pool
#BUFFERPOOL default,buffers=1000,lrus=8,lru_min_dirty=50,lru_max_dirty=60
BUFFERPOOL
size=2K,buffers=6000,lrus=23,lru_min_dirty=50.000000,lru_max_dirty=60.000000
DEF_TABLE_LOCKMODE ROW
Regards,
Anees Ahmad
*******************************************************************************
Forum Note: Use "Reply" to post a response in the discussion forum.