DOCUMENT ID: 1196-02
SYNOPSIS: Estimating Memory Requirements
OS RELEASE:
PRODUCT: Solaris x86
KEYWORDS: estimate memory requirement system V
DESCRIPTION:
Estimating Memory for System V
SOLUTION:
Let's assume that you're running System V. You have a handicap to work
against: ps won't really supply the information you need. However, it
is still possible to estimate memory requirements using ps -el. In this
case, you want to:
* Use "file" to determine whether of not the process is shared
text. Shared text files are either "pure" or "demand paged."
Some System V versions of "file" don't give you this
information. However, V.3 and V.4 make programs "shared text"
by default, so you should assume that programs share their text
segments unless you can prove otherwise.
* If the process is not shared text, its data and stack sizes are
given in 1-KB pages). Multiply this number by the number of
invocations you expect; this is the total data and stack
memory required for all invocations. To find the text size, use
the command "size".
* If the process shares its text segment, the SZ field only gives
its data and stack size. Multiply this number by the number of
invocations you expect; this is the total data and stack memory
required for all invocations. To find the text size, use the
command "size". For example:
# size /usr/local/bin/myprog
20996 + 6080 + 3000 = 30076
The first number is the program's text size. Add this number to
the total data and stack area; the result is the total memory
required (text, data, and stack) for all invocations of the
program.
For example, let's compute the amount of memory required to run four
invocations of myprog simultaneously. Here's the data you need:
# file /usr/local/bin/myprog
/usr/local/bin/myprog: 80386 pure executable.
# ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
...
1 s 204 3603 67 0 30 20 8aa 364 14ec4 10 0:14 myprog
...
# size /usr/local/bin/myprog
20996 + 6080 + 3000 = 30076
"file" says this program is a pure executable, so we need to account for
the text and data/stack segments separately. For each invocation, we
need to allow 364 KB for the data and stack segments. For all
invocations, we need to allow for 20 KB for the executable. Therefore,
the program's total requirement is 346*4+20 KB, or 1476 KB. To estimate
the total system requirement, perform a similar computation for all the
programs your system will be running. Don't forget to account for
daemons and other system processes. **
** System Performance Tuning - O'Reilly & Associates, Inc.
DATE APPROVED: 10/10/95
k