[comp.unix.aix] '6000 performance issue

mikebe@i88.isc.com (Michael G. Beirne) (11/19/90)

In article <1990Nov5.100227@ibmpa.awdpa.ibm.com> marc@ibmpa.awdpa.ibm.com (Marc Pawliger) writes:
>
>A dumped gnumacs will be next to impossible on a '6000.  The unexec()
>included in the distribution assumes a fixed text load address so that
>offsets will be correct when the dumped gnumacs is exec'd.  As I under-
>stand things, the '6000's loader does not always load executables at the
>same address, so gnumacs will die horribly.  So take heart that all the
>files loaded from loadup.el load quickly.
>
>These are my opinions, not IBM's etc etc etc
>
>+---Marc Pawliger---IBM Advanced Workstations Division---Palo Alto, CA---+
>|    Internet: marc@ibminet.awdpa.ibm.com    VNET:    MARCP at AUSVM6    |
>|     UUCP:     uunet!ibmsupt!ibmpa!marc      Phone:   (415) 855-3493    |
>+------IBMnet:   marc@ibmpa.awdpa.ibm.com------IBM T/L:  465-3493--------+


This sounds like a performance problem to me. What happens when 5 or 6 people
start up Frame on a RS/6000 and the whole program is in paging/memory area
for each user instead of just the data and bss area separate for each user?

mikebe@laitnite.i88.isc.com
--
mikebe@i88.isc.com or beirne@chinet.chi.il.us

marc@arnor.uucp (11/20/90)

In article <1990Nov19.042905.26880@i88.isc.com> mikebe@i88.isc.com (Michael G. Beirne) writes:

>This sounds like a performance problem to me. What happens when 5 or 6 people
>start up Frame on a RS/6000 and the whole program is in paging/memory area
>for each user instead of just the data and bss area separate for each user?

Programs are executed out of a memory mapped instance of the text
file.  There will be only one copy (at most) of each page of the text
no matter how many processes run the program.  The same thing is true
of shared libraries, like libc.a and libX11.a.

Of course, each process has its own copy of any data pages it has
touched.


Marc Auslander

hbergh@oracle.nl (Herbert van den Bergh) (11/20/90)

In article <MARC.90Nov19114826@marc.watson.ibm.com> marc@arnor.uucp writes:
>Of course, each process has its own copy of any data pages it has
>touched.

Can you tell me if this is also the case when a process only reads a
data page from a shared library? Is it not copied on write?

And what happens to data pages from an executable file? If they are
only referenced for reading, does each process still get its own copy?

We're trying some time now to figure out how efficient AIX memory usage
is related to our applications. When running a client-server application,
each client forks and executes a process that communicates with the server.
This process currently has a data segment of 180Kb, of which about 100Kb is
never modified. You can imagine what performance improvement sharing this
data could give.

We haven't found a way to figure out exactly how much memory is in use by
a certain process (virual and real) and by all processes together in the
system. The getrusage() routine doesn't seem to tell the truth, and we're
not sure about ps.

-- 
Herbert van den Bergh,		Email:	hbergh@oracle.nl, hbergh@oracle.com
ORACLE Europe

jfc@Achates.MIT.edu (John F Carr) (11/22/90)

In article <1131@nlsun1.oracle.nl> hbergh@oracle.nl (Herbert van den Bergh) writes:
>This process currently has a data segment of 180Kb, of which about 100Kb is
>never modified. You can imagine what performance improvement sharing this
>data could give.

AIX copies shared data pages when they are first accessed, not when they are
first modified.  Some may find this suprising, but it is a natural consequence
of the memory management unit architecture.  Unfortunately, the C compiler
does not put objects declared "const" in read-only, shared storage.

--
    John Carr (jfc@athena.mit.edu)