Shared memory problem???
Posted in 2003
Environment:
RH Linux 7.1
Kernel 2.4.10-ac11
Informix IDS 9.21.UC4
Dual x86 Processor
1.5 GB Memory
8 temp dbspaces, 256MB each
100 full time users during the day
My Informix shared memory parameters are as follows:
LOCKS 2000 # Maximum number of locks
BUFFERS 180000 # Maximum number of shared buffers
NUMAIOVPS 38 # Number of IO vps
PHYSBUFF 32 # Physical log buffer size (Kbytes)
LOGBUFF 32 # Logical log buffer size (Kbytes)LOGSMAX 500 # Maximum number of logical log files
CLEANERS 127 # Number of buffer cleaner processes#SHMBASE 0x10000000L # Shared memory base address
SHMBASE 0x50000000L # Shared memory base address
SHMVIRTSIZE 8000 # initial virtual shared memory segment size
SHMADD 64000 # Size of new shared memory segments (Kbytes)
#SHMTOTAL 768000 # Total shared memory (Kbytes). 0=>unlimited
SHMTOTAL 1000000 # Total shared memory (Kbytes). 0=>unlimited
CKPTINTVL 300 # Check 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 mark percentage
LTXEHWM 60 # Long transaction high water mark (exclusive)
TXTIMEOUT 0x12c # Transaction timeout (in sec)
STACKSIZE 32 # Stack size (Kbytes)
I changed my SHMBASE from 0x10000000L to 0x50000000L to get me past the 768KB
limit
of 0x10000000L give me. I then increased my SHMTOTAL from 768000 to 1000000.
The reason I have needed to do these things is I need to create a very large
reporting
table and in my select's I explictly create some hash indexes.
I have received as of late a couple of assertion errors when the reporting
table in being created
and am wondering if I may be trying to address memory out of range. The
assertion errors usually
occur on some of the intermediate temp tables that are created as part of the
process.
An example is listed below. An oncheck command cannot be run on this table
since tmp_ipayor2 is
a temp table created via a select statement like "select .... from tmp_ipayo1
into temp_ipay2 with no log;"
18:35:04 Assert Failed: Page Check Error in next_scan:bad data page
18:35:04 Informix Dynamic Server 2000 Version 9.21.UC4
18:35:04 Who: Session(9169, billing@sunfire.infinityhealthcare.com, 6460,
1752374476)
Thread(317319, xchg_3.6, 68715c68, 1)
File: rsdebug.c Line: 987
18:35:04 Results: Possible inconsistencies in 'dbihc:"billing".tmp_ipayor2'
18:35:04 Action: Run 'oncheck -cD 33554517'
18:35:04 stack trace for pid 897 written to /tmp/af.db6f0c38
18:35:04 See Also: /tmp/af.db6f0c38, shmem.db6f0c38.0
18:35:28 Error writing '/tmp/shmem.db6f0c38.0' errno = 28
18:40:23 Fuzzy Checkpoint Completed: duration was 0 seconds, 24 buffers not
flushed.
18:40:23 Checkpoint loguniq 16801, logpos 0x4d756c
If I change my SHMBASE to 0x1000000L and SHMTOTAL to 768000 when I try to
create some of the dynamic hashes
I receive the following error:
18:53:51 Dynamically allocated new virtual shared memory segment (size 64000KB)
18:54:12 Size of resident + virtual segments 383508KB + 393164KB > 768000KB
18:54:12 total allowed by configuration parameter SHMTOTAL
18:55:55 Fuzzy Checkpoint Completed: duration was 0 seconds, 5 buffers not
flushed.
18:55:55 Checkpoint loguniq 17032, logpos 0x2dc43c
So I am trying to figure out what if any part of my configuration my be
incorrect. Performance wise the
system is just fine based upon read/write cache hits, buffwaits, read ahead
utilization, and buffer turnover
percentage.
If I am doing something wrong please point it out. Thanks.
-Peter
pdiazdeleon@infinityhealthcare.com