How to use more than 2GB share memory in Informix?
Posted in 2000
A 7.31.UC4 (32-bit Solaris) site with 400 sessions, 400,000 buffers and 2,000 sessions expected was hitting what they thought was a 2GB shared-memory ceiling and wondered whether to switch DBMS. Advice: on 32-bit Solaris you can use up to ~3.75GB — set OS SHMMAX to ~4GB, BUFFERS up to 768000, and generous SHMVIRTSIZE/SHMADD. The real blocker was SHMTOTAL, which can't take values over 2GB; setting it to 0 (the default, meaning unlimited) removes the cap. Beyond that, move to Solaris 7/8 with a 64-bit Informix port (7.31.FCn), or offload connections with MaxConnect. On HP-UX, SHMEM MAGIC or 64-bit was suggested.
Auto-generated by DrWatson from the posts below — may be imperfect; read the full thread.
Topics: General Discussion
Hi, I know that there is a limit for share memory in Informix. Our project just launched recently. We have 400 user sessions right now. They eat up about 1GB virtual memory. Including 400,000 buffers, the total used share memory almost gets to the 2GB limit. We will have about 2000 user sessions at the beginning of next year. What should I do? Is there any method to use more than 2GB memory in Informix? Or we have to move to other DBMS? Thanks for your attention. Btw, our Informix version is IDS7.31.uc4. Have a nice day. Hanna Sent via Deja.com http://www.deja.com/ Before you buy.
The max limit for BUFFERS is 512000, so you can try setting your parameter to that as long as you have enough physical memory. hanna_shaw@my-deja.com wrote: > Hi, > > I know that there is a limit for share memory in Informix. Our project > just launched recently. We have 400 user sessions right now. They eat > up about 1GB virtual memory. Including 400,000 buffers, the total used > share memory almost gets to the 2GB limit. We will have about 2000 user > sessions at the beginning of next year. What should I do? Is there any > method to use more than 2GB memory in Informix? Or we have to move to > other DBMS? Thanks for your attention. > > Btw, our Informix version is IDS7.31.uc4. > > Have a nice day. > > Hanna > > Sent via Deja.com http://www.deja.com/ > Before you buy. -- Phillip It's not gonna be an orgy...it's a toga party.
The max limit for BUFFERS is 512000, so you can try setting your parameter to that as long as you have enough physical memory. hanna_shaw@my-deja.com wrote: > Hi, > > I know that there is a limit for share memory in Informix. Our project > just launched recently. We have 400 user sessions right now. They eat > up about 1GB virtual memory. Including 400,000 buffers, the total used > share memory almost gets to the 2GB limit. We will have about 2000 user > sessions at the beginning of next year. What should I do? Is there any > method to use more than 2GB memory in Informix? Or we have to move to > other DBMS? Thanks for your attention. > > Btw, our Informix version is IDS7.31.uc4. > > Have a nice day. > > Hanna > > Sent via Deja.com http://www.deja.com/ > Before you buy. -- Phillip It's not gonna be an orgy...it's a toga party.
I work mostly with HP-UX. There is a limitation on HP-UX (not in 64-bit mode) where if you have > 2GB of memory, you can only get any process to use about 1.75 GB of SHARED MEMORY (which Informix uses). The way around it is to use Informix with SHMEM MAGIC or HP-UX 11.00 64-bit with Informix 64-bit. Bill If this posting has been helpful, please visit http://dbamon.com Phillip wrote in message <3A1C0F59.2A44FBCF@wholefood.com>... >The max limit for BUFFERS is 512000, so you can try setting your parameter >to that as long as you have enough physical memory. > >hanna_shaw@my-deja.com wrote: > >> Hi, >> >> I know that there is a limit for share memory in Informix. Our project >> just launched recently. We have 400 user sessions right now. They eat >> up about 1GB virtual memory. Including 400,000 buffers, the total used >> share memory almost gets to the 2GB limit. We will have about 2000 user >> sessions at the beginning of next year. What should I do? Is there any >> method to use more than 2GB memory in Informix? Or we have to move to >> other DBMS? Thanks for your attention. >> >> Btw, our Informix version is IDS7.31.uc4. >> >> Have a nice day. >> >> Hanna >> >> Sent via Deja.com http://www.deja.com/ >> Before you buy. > >-- >Phillip > >It's not gonna be an orgy...it's a toga party. > >
I have no problem to set "BUFFERS".(it's 400000 right now.) More user sessions will use more virtual memory. The total used virtual memory of our server is already 1GB. In article <3A1C0F4C.628C5B07@wholefood.com>, Phillip <tienp@wholefood.com> wrote: > The max limit for BUFFERS is 512000, so you can try setting your parameter > to that as long as you have enough physical memory. > > hanna_shaw@my-deja.com wrote: > > > Hi, > > > > I know that there is a limit for share memory in Informix. Our project > > just launched recently. We have 400 user sessions right now. They eat > > up about 1GB virtual memory. Including 400,000 buffers, the total used > > share memory almost gets to the 2GB limit. We will have about 2000 user > > sessions at the beginning of next year. What should I do? Is there any > > method to use more than 2GB memory in Informix? Or we have to move to > > other DBMS? Thanks for your attention. > > > > Btw, our Informix version is IDS7.31.uc4. > > > > Have a nice day. > > > > Hanna > > > > Sent via Deja.com http://www.deja.com/ > > Before you buy. > > -- > Phillip > > It's not gonna be an orgy...it's a toga party. > > Sent via Deja.com http://www.deja.com/ Before you buy.
On 32 bit solaris ports (which you have - UC4...) the limit for BUFFERS is 768K, *not* 512K. The max shared memory you can use is 3.75GB. Set SHMMAX at the OS level to 4000000000 and forget about it. Then set BUFFERS <=768000, SHMVIRTSIZE to something big (Like 1024000 (= 1GB), and SHMADD to something pretty big as well, say 256000. You should then be OK until you hit the 3.75GB limit. I've done it and it works. If that isn't enough, then upgrade to solaris 7 or 8 (2.7 or 2.8 depending on your perspective...), and upgrade to a 64 bit Informix port (i.e. 7.31.FCn), and you should be able to use all the memory you can afford to buy. Moving to another DBMS won't help, but it will waste your time and money. Greg p.s. are these connections persistent, or do they come and go regularly? Phillip wrote: > The max limit for BUFFERS is 512000, so you can try setting your parameter > to that as long as you have enough physical memory. > > hanna_shaw@my-deja.com wrote: > > > Hi, > > > > I know that there is a limit for share memory in Informix. Our project > > just launched recently. We have 400 user sessions right now. They eat > > up about 1GB virtual memory. Including 400,000 buffers, the total used > > share memory almost gets to the 2GB limit. We will have about 2000 user > > sessions at the beginning of next year. What should I do? Is there any > > method to use more than 2GB memory in Informix? Or we have to move to > > other DBMS? Thanks for your attention. > > > > Btw, our Informix version is IDS7.31.uc4.
Thanks, Greg. Now I have some idea about it. I did set SHMMAX to 4G.
Now I'm thinking that it's SHMTOTAL in onconfig which causes the
problem. I once set SHMTOTAL to 3GB. But when I tried to restart
Informix, it failed with an error:
size of resident + virtual segments xxx + yyy > 500MB total allowed by
configuration parameter SHMTOTAL
(I can't remember the message very clearly.) It seems that Informix
can't recognize any number greater than 2GB. So I have to set SHMTOTAL
to 2GB again. I think there will be no problem to use more than 2GB if
I set it to 0. Do you know what's the default SHMTOTAL if it's 0 in
onconfig? What will happen if it gets to 3.75GB? Is there any potential
problem to set it to 0? I heard it's not good to set it to 0. But I
don't know the reason.
In article
<B875AB35CDD648B7.AA29810C93EA172D.1412DA64A6086D05@lp.airnews.net>,
Greg <greg@fastlane.xnet> wrote:
> On 32 bit solaris ports (which you have - UC4...) the limit for
BUFFERS is
> 768K, *not* 512K.> The max shared memory you can use is 3.75GB. Set SHMMAX at the OS
level to
> 4000000000 and forget about it. Then set BUFFERS <=768000,
SHMVIRTSIZE to> something big (Like 1024000 (= 1GB), and SHMADD to something pretty
big as
> well, say 256000. You should then be OK until you hit the 3.75GB
limit.
> I've done it and it works.
>
> If that isn't enough, then upgrade to solaris 7 or 8 (2.7 or 2.8
depending on
> your perspective...), and upgrade to a 64 bit Informix port (i.e.
7.31.FCn),
> and you should be able to use all the memory you can afford to buy.
>
> Moving to another DBMS won't help, but it will waste your time and
money.
>
> Greg
>
> p.s. are these connections persistent, or do they come and go
regularly?
>
> Phillip wrote:
>
> > The max limit for BUFFERS is 512000, so you can try setting your
parameter
> > to that as long as you have enough physical memory.
> >
> > hanna_shaw@my-deja.com wrote:
> >
> > > Hi,
> > >
> > > I know that there is a limit for share memory in Informix. Our
project
> > > just launched recently. We have 400 user sessions right now. They
eat
> > > up about 1GB virtual memory. Including 400,000 buffers, the total
used
> > > share memory almost gets to the 2GB limit. We will have about
2000 user
> > > sessions at the beginning of next year. What should I do? Is
there any
> > > method to use more than 2GB memory in Informix? Or we have to
move to
> > > other DBMS? Thanks for your attention.
> > >
> > > Btw, our Informix version is IDS7.31.uc4.
>
>
Sent via Deja.com http://www.deja.com/
Before you buy.
Unless you are specifically trying to limit Informix consumption of shared memory (i.e. to keep Informix from crowding out another application), set SHMTOTAL to 0 and forget it too. It's the default, and basically means unlimited. It's what most people use, especially if the machine is exclusively a DB server. If you try to use more than 3.75 GB, the OS will return an error and I can't remember what Informix does. It won't do anything destructive though. At that point you need to find way to reduce SHM demand or go 64 bit. Again, are these connections in place for a long time, or do they get created and destroyed fairly frequently? If you are going to have large numbers of connections, you might look into a new product called MaxConnect that can offload the management of those connections, and a lot of the resource demand onto another server (which would have another 3.75GB of shared memory available for use....). greg hanna_shaw@my-deja.com wrote: > Thanks, Greg. Now I have some idea about it. I did set SHMMAX to 4G. > Now I'm thinking that it's SHMTOTAL in onconfig which causes the > problem. I once set SHMTOTAL to 3GB. But when I tried to restart > Informix, it failed with an error: > size of resident + virtual segments xxx + yyy > 500MB total allowed by > configuration parameter SHMTOTAL > > (I can't remember the message very clearly.) It seems that Informix > can't recognize any number greater than 2GB. So I have to set SHMTOTAL > to 2GB again. I think there will be no problem to use more than 2GB if > I set it to 0. Do you know what's the default SHMTOTAL if it's 0 in > onconfig? What will happen if it gets to 3.75GB? Is there any potential > problem to set it to 0? I heard it's not good to set it to 0. But I > don't know the reason. > snip.....