RE: Informix Dynamic Server 9.30 - Shared Memory
Posted in 2006
First off you shouldn't be getting shared memory access errors. That sounds
more like a bug that technical support should address. I wouldn't be
surprised if your getting can't allocate additional shared memory segment
messages.
Informix 32-bit on AIX is a bitch. The problem is a limit in the number of
shared memory segments AIX can allocate for shared memory for a single
process. The hard number is 11 which will max out at 2.75 gig. For
Informix the trick is to maximize the use of this memory by having all your
shared memory segments (onstat -g seg) fall on the 256 meg boudaries. This
means your SHMADD must be set to 262144. The same strategy applies to your
SHMVIRTSIZE. You want it to be a multiple of 262144. This values are
critical. For example if you set SHMVIRTSIZE to 524288, two 256 meg
segments will be allocated. If you set SHMVIRTSIZE to 524289, three 256 meg
segments will be allocated. You will lose all the unused memory in the 3rd
segment. It can NOT be used by anything else. In a typical environment,
you are going to lose a good portion of a single segment to the message
portion of share memory. There isn't much you can do about this.
Here comes the tricky part. Your remaining shared memory segment
allocations are going to be highly influenced by your ONCONFIG settings for
BUFFERS and LOCKS. There is no formula for calculating the proper values
for each parameter that will allocate the remaining shared memory segments
on the 256 meg boundaries. Now it become pure trial and error. Setting the
values, starting the engine, examining the output of onstat -g seg and going
through the whole process over and over until you hit the boudary
alignments. The numbers will not be round numbers like 600000, more likely
623975. Seriously. You have to tweak both parameter together.
There is one more "trick" you can use with 32-bit AIX. There is an
environment variable EXTSHM. Setting this to on will allow you to get more
than 11 shared memory segments. It will not get you past the 2.75 gig
limitation. It will let you carve up a 256 meg segment into smaller
allocations. All it will give you for Informix is the ability to have
SHMADD take smaller pieces of a single 256 meg segment. Not really useful.
There is some documentation on 32-bit AIX shared memory allocation. Much of
it can be found by googling EXTSHM adn AIX. It's been some time since I had
to deal with this. Hopefully I didn't confuse matter too much. My
recommendation to you is to upgrade to 64-bit.
>From: "Ronald Schwingel" <rons@dis-corp.com>
>To: <informix-list@iiug.org>
>Subject: Informix Dynamic Server 9.30 - Shared Memory
>Date: Wed, 8 Feb 2006 11:34:33 -0800
>
>
>
>Can someone please tell me how much Shared Memory (gigabytes?) Informix
>
>Dynamic Server 9.30 (32-bit version) for AIX 5L can use before asserting
>with
>
>a Shared Memory access error? Can you provide documentation that I can
>
>pass on also?
>
>
>
>We are looking at providing one of customers with an RS/6000 to satisfy
>a
>
>200+ user need and need to know how to size the system properly.
>
>
>
>Thank you.
>
>
>
>Ron C. Schwingel
>
>Dealer Information Systems
>
>rons@dis-corp.com <mailto:ronss@dis-corp.com>
>
>(800) 426-8870 (Phone)
>
>(720) 921-0013 (Fax)
>
>
>
>
>
>_______________________________________________
>Informix-list mailing list
>Informix-list@iiug.org
>http://www.iiug.org/mailman/listinfo/informix-list