Re: Memory allocation failed during query processing -AIX 5.1
Posted in 2004
Jonathan Leffler <jleffler@earthlink.net> wrote in message news:<jvsCc.15795$Wr.1627@newsread1.news.pas.earthlink.net>...
> CKGeier@nwc.edu wrote:
> > here is what we have in our onconf file:
> >
> > # Parallel Database Queries (pdq)
> > MAX_PDQPRIORITY 80 # Maximum allowed pdqpriority (was 100)
> > [...]>
> > "Savio Pinto (s)" <spinto@cap.org> wrote:
> >> have you turned on PDQ?, is the DS_TOTAL_MEMORY set greater than
> >> SHMTOTAL in the onconfig?. Also, may need to check SHMADD
> >> onconfig parameter.
> >
> > -----Original Message-----
> > From: CKGeier@nwc.edu
> >
> > A process failed on AIX 5.1, IDS 7.31 UD6 with this error:
> >
> > -208 Memory allocation failed during query processing.
> >
> > The database server needed to allocate data-space memory in order to
> > process the query, but none was available. This error may reflect a
> > hardware limit, an operating-system configuration limit, or a temporary
> > shortage of space.
> >
> > We had PLENTY of memory left so I'm not sure why the process couldn't get
> > data-space memory. What can I tweak and how can I see the problem
> > happening?
>
> Is SHMBASE set correctly? If it is set wrong (and wrong can be too
> high, too low, zero, or non-zero, depending on platform), then the
> shared memory can interfere with other memory allocations, leading to
> error -208.
>
> Look in the machine notes (in $INFORMIXDIR/release/en_us/0333) for
> guidance.
The 208 error is a failure to increase the data-space segment of the
process memory, and doesn't really depend on the engine
configuration. This can be caused by 2 different situations. The
first is when your application is using shared memory connections.
The unix process must attach the engine communications ("M") segment
into its process space. If the "M" segment attach point restrists
the growth of the data segment, then the attach point can be
manipulated with the enviornment variable INFORMIXSHMBASE.
The other (more likely) cause of the 208 error is your ulimit
settings. Run 'ulimit -a' to display your settings.
ulimit -a
data(kbytes) 131072
stack(kbytes) 32768
The 'data' value is what controls the maximum amount of data-space
memory that a process under this userid can access. Increasing this
value should resolve your problem. The values for ulimit can be
changed by editing /etc/security/limits. Pay attention, as ulimit is
in 1K units and /etc/security/limits is in 512 byte units.
Under 32 bit AIX, there is one more possible limitation. The
data-space and stack are both created in the same 256MB memory
segment, and grow in opposite directions. Make sure that stack+data
size in ulimit is < 256MB, or you can expect memory corruptions.
If you have already maxed out the data+stack values to be just under
256MB, then you must either upgrade to 64 bit applications, or
modify the applications to use smaller/fewer host variables.