_mprshut - Why?

Hello Everyone,
I ran a round of dump test yesterday and got couple of questions, thought of getting them clarified;

Progress Version: 9.1E
OS: Sun Solaris (Unix)

I ran 4 sessions of proutil dump and was monitoring the same. Below is the statistics from top command (pardon me for changing the db name and table names as am not supposed to put them here);

load averages: 3.48, 2.95, 1.84; up 15+01:47:10 18:50:23
145 processes: 143 sleeping, 2 on cpu
CPU states: 88.1% idle, 1.8% user, 10.1% kernel, 0.0% iowait, 0.0% swap
Memory: 256G phys mem, 27G free mem, 4096M total swap, 4096M free swap

PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND
13713 10116 1 59 0 16G 16G sleep 0:00 0.00% /opt/dlc/bin/_mprshut /opt/db/test -0
10890 root 1 13 0 16G 16G cpu/3 3:29 0.61% /opt/dlc/bin/_proutil /opt/db/test -C dump t1 /test_migration
13710 root 1 0 0 16G 16G sleep 3:30 1.89% /opt/dlc/bin/_proutil /opt/db/test -C dump t2 /test_migration/
13637 root 1 23 0 16G 16G sleep 0:45 0.42% /opt/dlc/bin/_proutil /opt/db/test -C dump t3 /test_migration
13768 root 1 42 0 16G 16G sleep 0:19 0.32% /opt/dlc/bin/_proutil /opt/db/test -C dump t4 /test_migration
8828 root 1 59 0 16G 16G sleep 4:09 0.00% /opt/dlc/bin/_mprosrv test -L 3000000 -n 325 -spin 24000 -B 2000000 -bibufs

Questions:
1. I was able to see the '_mprshut' process running for about couple of minutes and then it was not there. Why? I was the only one using the test machine by that time.
2. I don't understand why 16G is allocated to each of 'proutil' process? May be a dumb question, I have provided -B as 16G but I was under impression that 16G will be shared by all process. Is that not how it works?
 
Does this mean all of those 4 processes are sharing only 16 GB but depending on OS all 16 GB might be assigned to one process at a given point of time? If yes before running these 4 processes the RAM had 56 GB free space whereas it came down to less than 1 GB in about 10 to 15 minutes. I was worried that server will get crashed running out of free RAM space but that didn't happen either.
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
Every process (broker, server, client, utility) that connects to the database locally, i.e. not via TCP, maps the database's shared memory segment(s) into its virtual memory address space. The memory used by each process will include both its own private memory and also the shared memory. For a proutil you probably have a few MB of private memory, and the rest of the number reported by top or ps is the size of shared memory. Because the memory is shared, you can't add the totals together. It isn't "assigned" to one process or another, per se. It is allocate by the primary broker and may be read or written by any process.

Also, most OSes by default will take any free RAM and use it as file cache so it is common to see very little free memory reported by the OS. That looks like a problem but it isn't. The OS will give it back when processes want to allocate memory.
 
Top