Assistance with getting DB memory usage over 2 gigs
Posted in 2005
Topics: Server Administration, Versions, Editions & End-of-Life, Jobs, Consulting & Announcements
Hi All, Suse 8 Informix IDS 9.4 UC4 6 Gigs memory I've been trying to increase the amount of memory Informix can use by changing the relevant settings in ONCONFIG files and changing the SHMMAX value in the operating system to 4294967295 but I seem unable to get informix to use more than 2 gigs of memory. Currently it can use up to just over 1.7 gigs of memory before it'll get allocation errors [I presume I get this limit becuse of my SHMBASE being set to 0x50000000L -> This means it starts at the 500Mb postion?]. I know that since this is 32bit I am limited to 4 gigs memory and I assumed that 3 gigs is for user space and 1 gig for kernel. So I should be able to use 3 gigs less 500Mbs for the base postion -> leaving 2.5 gigs available for database memory? But I can't seem to get this right. Perhaps my idea of how SHMBASE works is wrong, but surely I should be able to use more than 2 gigs of memory for the database?
\
Ok, I finally figured out what is happening. Shared memory base is currently set to 0x50000000L this is in hex, translating this back to decimal we get 1342177280 bytes (1.28 gigs) as the starting address for memory usage within the process space for the database. 32 Bit Linux allows for 4 gigs to be addressed by a process: 1 gig is reserved for kernel and 3 gigs for user. Since we set the start base address to 0x50000000L we have 3 gig - 1.28 gig = 1.72 gigs available for database memory! Does this mean the only way I can use more is by pushing mapped base address for the currently started process down? Are there any other ways of having more memory available to the database as it is frequently running low on memory and trying to allocate more than is available. It did this when I had SHMTOTAL set to 0 or 3500000, I am currently trying to limit this by setting the value to 1800000 to keep it within the limit. Obviously I'd like the database to be able to use more of the currently available memory. Would I need to run seperate instances to achieve this?
I'm going to be trying changing the base address like the note said but I've seen Oracle sites say something about setting up "bigpages" to get around the 3 gig user space issue. Is this something informix can use? I.E. if I set bigpages=4100MB then would Informix be able to use this for the database? Let me know if I am off the mark here.