IDS instance memory
Posted in 2009
A user running four IDS 11.5 instances on an 8GB Solaris SPARC box saw free memory steadily drop (6GB to 3.2GB) even though 'onstat -' reported only ~1GB of shared memory, and prstat showed several oninit processes each apparently using ~900MB. Art Kagel explained that the multiple oninit processes are virtual processors (CPU, ADM, MSC, AIO, NET, user VPs) sharing almost all that memory, so sizes can't simply be summed; only the small private portion per process adds up. He also suggested the declining free memory is likely Solaris filesystem caching of COOKED chunks, avoidable via DIRECT_IO or raw devices. No further confirmation from the poster is recorded.
Auto-generated by DrWatson from the posts below — may be imperfect; read the full thread.
Topics: General Discussion
Hi,
We are running 4 IDS (11.5 FC4) instances on a sun sparc machine with 8 GB
physical memory. We can see the shared memory through "onstat -" command which
is around 1 G. This machine is purely acting as databases server and no other
application is runnig on it (like web application etc). But memory on this
server keep on increasing. Does IDS consumes more memory than memory shown
through "onstat -" command? if yes than how can we find the amount of memory
used for those processes.
regards,
Kamran
Sorry I forgot to tell that one day free memory of server is 6GB (including swap) the other day it reduce to 4.5 GB and very next day 3.2 GB
Onstat - shows the amount of shared memory shared across the oninit
processes. In addition, you are using memory for one copy of the oninit
process itself (shared by all processes), static and dynamic process private
memory for each oninit process, etc. However, in general, the oninit
processes achieve a stable size quickly after startup and do not tend to
grow in my experience.
Art
Art S. Kagel
Oninit (www.oninit.com)
IIUG Board of Directors (art@iiug.org)
Disclaimer: Please keep in mind that my own opinions are my own opinions and
do not reflect on my employer, Oninit, the IIUG, nor any other organization
with which I am associated either explicitly or implicitly. Neither do
those opinions reflect those of other individuals affiliated with any entity
with which I am affiliated nor those of the entities themselves.
On Fri, Jul 17, 2009 at 8:51 AM, KAMRAN HAQ <khaq@i2cinc.com> wrote:
> Hi,
> We are running 4 IDS (11.5 FC4) instances on a sun sparc machine with 8 GB
> physical memory. We can see the shared memory through "onstat -" command
> which
> is around 1 G. This machine is purely acting as databases server and no
> other
> application is runnig on it (like web application etc). But memory on this
> server keep on increasing. Does IDS consumes more memory than memory shown
> through "onstat -" command? if yes than how can we find the amount of
> memory
> used for those processes.
> regards,
> Kamran
>
>
>
>
*******************************************************************************
> Forum Note: Use "Reply" to post a response in the discussion forum.
>
>
--001636c5b4962dc641046ee7090f
When virtual segment of memory are added then shared memory appears increased
by that segment, is there any other memory overhead on addition of virtual
segment?
Also why there appears more than one occurences for single running IDS
instance in prstat output. If we add these numbers to find memory consumed, it
leads to far large compared to actual used memory. as following prstat output
shows around 4 GB consumed by oninit process where "oninit -" shows it around
1 GB
---------------------------------------------------------------------
8017 informix 926M 810M sleep 50 -10 0:21:22 2.0% oninit/1
8009 informix 926M 869M cpu2 59 -10 1:07:06 2.0% oninit/1
8016 informix 926M 814M sleep 50 -10 0:26:01 1.9% oninit/1
8011 informix 926M 840M cpu3 59 -10 1:08:27 1.9% oninit/1
That could just be the OS allocating memory for system buffer cache, etc. IB you said you system is Sun, Solaris is aggressive about keeping most IO in cache. Are your IDS chunks COOKED or RAW? If COOKED, then they are likely being cached by the OS unless you have enabled DIRECT_IO and that's what's causing the decrease in free memory. Art Art S. Kagel Oninit (www.oninit.com) IIUG Board of Directors (art@iiug.org) Disclaimer: Please keep in mind that my own opinions are my own opinions and do not reflect on my employer, Oninit, the IIUG, nor any other organization with which I am associated either explicitly or implicitly. Neither do those opinions reflect those of other individuals affiliated with any entity with which I am affiliated nor those of the entities themselves. On Fri, Jul 17, 2009 at 9:35 AM, KAMRAN HAQ <khaq@i2cinc.com> wrote: > Sorry I forgot to tell that one day free memory of server is 6GB (including > swap) the other day it reduce to 4.5 GB and very next day 3.2 GB > > > > ******************************************************************************* > Forum Note: Use "Reply" to post a response in the discussion forum. > > --001636c5a72eaed415046ee7cb96
An IDS engine instance consists of several oninit processes, known
internally as Virtual Processors or VPs, performing different functions for
the engine. If you run onstat -g glo you will see all of the oninit
processes (VPs) and what VP class each is running as. At a minimum you will
have:
- one or more CPU VPs - these process user sessions and may poll for
connections depending on configuration. The CPU VPs also maintain a second
OS level light weight thread of execution known as the KAIO thread that
manages IO and communicates with the OS Asynchronous IO mechanism.
- one ADM or administration VP - Performs some housekeeping functions and
oversees the health of the other VPs.
- one MSC or miscellaneous VP - another housekeeping virtual processor
- one or more AIO VPs - these handle asynchronous IO to file types that
do not support OS level asynchronous IO like COOKED file including COOKED
chunks that are not opened O_DIRECT and text files like the message log
(onstat -m).
- zero or more NET VPs (soc, tli, str, etc.) - these can be configured to
handle polling for connection and work requests from users to offload some
of that from the CPU VPs where appropriate.
- User VPs - virtual processors created by you to execute User Defined
Routines (UDRs) that may impact the server's performance or which are not
yet completely tested. This isolates UDRs from the mainline server
processes to prevent a UDR from crashing the server.
There are others, but these are the main ones. As to the total memory,
almost all of that memory is shared including the oninit code space. If you
run 'size $INFORMIXDIR/bin/oninit' the last one or two values listed (see
the size man page) are usually the executable's private memory. This is the
only memory that is not shared between the oninits and so those blocks are
the only memory you can add up across the number of oninit processes. The
remainder only counts once as does the shared memory.
You can use the output below to estimate this. Take the 926MB once and add
in the difference between that and the value in the next column for each
oninit. So below, of these are the only oninit processes, the total use is
close to (but actually a bit lower than): 926 + 116 + 57 + 120 + 86 =
~1305MB
Art S. Kagel
Oninit (www.oninit.com)
IIUG Board of Directors (art@iiug.org)
Disclaimer: Please keep in mind that my own opinions are my own opinions and
do not reflect on my employer, Oninit, the IIUG, nor any other organization
with which I am associated either explicitly or implicitly. Neither do
those opinions reflect those of other individuals affiliated with any entity
with which I am affiliated nor those of the entities themselves.
On Fri, Jul 17, 2009 at 10:24 AM, KAMRAN HAQ <khaq@i2cinc.com> wrote:
> When virtual segment of memory are added then shared memory appears
> increased
> by that segment, is there any other memory overhead on addition of virtual
> segment?
> Also why there appears more than one occurences for single running IDS
> instance in prstat output. If we add these numbers to find memory consumed,
> it
> leads to far large compared to actual used memory. as following prstat
> output
> shows around 4 GB consumed by oninit process where "oninit -" shows it
> around
> 1 GB
> ---------------------------------------------------------------------
>
> 8017 informix 926M 810M sleep 50 -10 0:21:22 2.0% oninit/1
> 8009 informix 926M 869M cpu2 59 -10 1:07:06 2.0% oninit/1
> 8016 informix 926M 814M sleep 50 -10 0:26:01 1.9% oninit/1
> 8011 informix 926M 840M cpu3 59 -10 1:08:27 1.9% oninit/1
>
>
>
>
*******************************************************************************
> Forum Note: Use "Reply" to post a response in the discussion forum.
>
>
--001636c5afb6332abf046ee818e5
Related threads
- Posting from the Informix-list
- Migrating from IDS 9.40.UC6 to 11.50.UC3
- Ip for a network session
- questions onstat -g