Hello,
Sorry for the late summary on this. Due to holidays and scheduling of
reboots to
try to get this problem fixed took some time.
I received 2 responses from the list (thanks) and I talked with DEC about
this also.
The problem: A user was running a Splus program and running out of
dynamic memory for his process. I asked about changing the amount
of dynamic memory for a process instead of the overall system.
One response suggested changing the
max-per-proc-stack-size to 400000000 in sysconfigtab (proc:)
This did not fix my problem. Another response suggested looking at
numerous proc configuration which I will include in this summary. It
seemed to go along with the discussion I had with DEC.
Anyway, the final fix, as I suspected, was the users program itself.
It was creating subprocesses incorrectly until it exhausted the
process' dynamic memory.
one response is included below as I think it explains it very well.
Original question follows after that.
Allan
>
>Digital UNIX Support
>
>How to increase process virtual memory limits in Digital Unix
>=============================================================
>
>The best reference source for all this good stuff is the book titled
>"System tuning and Performance management"
>
>
>1) Do the following command to see what your current parameters are:
>
># sysconfig -q proc
>max-proc-per-user = 256
>max-threads-per-user = 1024
>per-proc-stack-size = 2097152
>max-per-proc-stack-size = 33554432
>per-proc-data-size = 134217728
>max-per-proc-data-size = 1073741824
>max-per-proc-address-space = 1073741824
>per-proc-address-space = 1073741824
>autonice = 0
>open-max-soft = 4096
>open-max-hard = 4096
>ncallout = 66084
>round-robin-switch-rate = 0
>sched-min-idle = 0
>sched_min_idle = 0
>give-boost = 1
>give_boost = 1
>
># sysconfig -q vm
>ubc-minpercent = 10
>ubc-maxpercent = 100 (Amount of physical memory, RAM,
> allowed for disk I/O
buffering)
>
>ubc-borrowpercent = 10 (let this one be about 10 to 20)
>ubc-maxdirtywrites = 5
>ubc-wait-for-io = 1
>vm-max-wrpgio-kluster = 32768
>vm-max-rdpgio-kluster = 16384
>vm-cowfaults = 4
>vm-mapentries = 200
>vm-maxvas = 1073741824
>vm-maxwire = 16777216
>vm-heappercent = 7
>vm-anonklshift = 17
>vm-anonklpages = 1
>vm-vpagemax = 16384
>vm-segmentation = 1
>vm-ubcpagesteal = 24
>vm-ubcdirtypercent = 10
>vm-ubcseqstartpercent = 50
>vm-ubcseqpercent = 10
>vm-csubmapsize = 1048576
>vm-ubcbuffers = 256
>vm-syncswapbuffers = 128
>vm-asyncswapbuffers = 4
>vm-clustermap = 1048576
>vm-clustersize = 65536
>vm-zone_size = 0
>vm-kentry_zone_size = 16777216
>vm-syswiredpercent = 80
>vm-inswappedmin = 1
>vm-page-free-target = 128
>vm-page-free-min = 20
>vm-page-free-reserved = 10
>vm-page-free-optimal = 74
>
>
>2) You need to increase the following parameters according to your
> requirements:
>
> (parameters that start with "max" are hard limits that apply to
> super user also. So if you want to change the limit on the total
> allocated memory of a user process you would tweak the
> "per-proc-data-size" parameter)
>
>per-proc-stack-size = 2097152 (Can be as huge as vm-maxvas, but
> would be about 10 times lesser)
>max-per-proc-stack-size = 33554432 (Can be as huge as vm-maxvas, but
> would be about 10 times lesser)
>per-proc-data-size = 134217728 (Can equal vm-maxvas)
>max-per-proc-data-size = 1073741824 (Can equal vm-maxvas)
>max-per-proc-address-space = 1073741824 (Can equal vm-maxvas)
>per-proc-address-space = 1073741824 (Can equal vm-maxvas)
>vm-kentry_zone_size (You can double the default value, if you get a warning
> while running the program that kernel zone_size
> is smaller for managing the system work-load)
>vm-maxvas (Total virtual address space the system has and a user can
>access)
> on immediate swap systems., its better close to total amount
> of virtual memory you have., but if your system is specifically
> configured for lazy swap., then you might have a much higher
> value)
>vm-maxwire ( Amount of RAM (wired) memory allocated per process
> before it uses swap-space for memory allocation;
> Can go close to the amount of your physical memory,
> which can be allocated per any process. Your RAM - 30 Meg
> would be a good estimate. Don't change the default value
> if you have less than 48 Meg of RAM on the system)
>
>
>3) See limit (if using csh) or ulimit (ksh/sh) commands to figure out
> what are your current limits.
> ("csh" might rarely reports erroneous values, because of some
> software correction, also, ksh/sh on some versions of operating
> systems might limit softlimits at 1 Gig even though hard
> limit is set at a higher value)
>
>4) Run your program and see if it gets you going!
>
>For Example with 128 MB memory (RAM) and about 300 Meg swap, the
>following values give you a rough idea of maximum values you can assign
>with immediate swap mode (having the link /sbin/swapdefault to the primary
>swap partition). If you have lazy swap and you believe you never use all
>the memory you allocate., you can have proc: sub-system values much higher.
>(If you have LOTTA memory (RAM) you might have to double the default
>values for the vm-kentry_zone_size!)
>
>When you need to change some parameters., you can do so by incorporating
>them into /etc/sysconfigtab file. For EXAMPLE my /etc/sysconfigtab file
>is: (note that this is purely an example., not a directive)
>
>vm:
> ubc-maxpercent=80
> ubc-borrowpercent = 10
> vm-maxwire = 104857600
> vm-maxvas = 2134217728
> vm-vpagemax = 16000
> vm-syswiredpercent = 90
>
>proc:
> per-proc-stack-size = 222097152
> max-per-proc-stack-size = 222097152
> per-proc-data-size = 1134217728
> max-per-proc-data-size = 2134217728
> max-per-proc-address-space = 2134217728
> per-proc-address-space = 2134217728
>
>
>NOTE1:
> Please make sure which sub-section which parameter belongs before
> trying to change them. Also, once you change've these values
> in /etc/sysconfigtab file., you need a system re-boot to
> update the system with new values.
>
>NOTE2:
> If you are allocating large arrays you might want to do the
>following
> thing as root:
>
> # dbx -k /vmunix /dev/mem
> (dbx) p stackinc
> 32768
> (dbx) a stackinc=0x20000
> 131072
> (dbx)quit
>
>
>NOTE3:
> If you get a message fork/procdup:task create fail code 0x11,
> you need to increase the values (in the file /etc/sysconfigtab)
>
>proc:
>max-proc-per-user = 256
>max-threads-per-user = 2048
>
> If you are running large web-server or a database server., you
> might want to push these limits further. Just make sure you
> have enough "maxusers" parameter set to go with it.
> ( max-proc-per-user should be less than 8 times maxusers
> ie., max-proc-per-user < 8 * maxusers )
> Also, make sure make sure max-threads-per-user is
> about as large or more than max-proc-per-user.
>
>
>NOTE4:
>
> For 2.x and 3.0 and 3.2 series versions of operating systems:
> You might need to incease maxusers parameter in your
> kernel configuration file (/sys/conf/HOSTNAME) and re-build
> the kernel (doconfig -c HOSTNAME) to increase the system
> wide number of processes. After this you need to reboot
> with the newly built kernel.
>
> For 4.0 or above versions of operating systems:
> maxusers is configurable via sysconfigtab itself. Check the
> current value by typing "/sbin/sysconfig -q proc"
>
>This parameter is particularly important if
>you have lotta memory and lotta users/processes going on the
>system. You can check it by:
>
># echo "p maxusers" | dbx -k /vmunix /dev/mem
>
>(If you don't have enough maxusers values., you might see
>a message that task/proc table full messages, or fork, too many
>processes, or no more processes)
_____________________________________________
> ----------
> From: SIMEONE, Allan J.
> Sent: Wednesday, December 16, 1998 9:42 AM
> To: 'Alpha-osf-managers_at_ornl.gov'
> Subject: process tuning
>
> Hi,
>
> I have a user running Splus on a Alpha4100 with 1 gig of memory running
> DU4.0B patch kit 7. The user is running in ksh.
>
> The user is running a Splus program and gets the following error....
>
> Unable to obtain requested dynamic memory (this request is for
> 400144 bytes, 268320784 bytes already in use)
>
> I think this may be a ulimit parameter or a sysconfig parameter that has
> to be
> changed as dynamic memory is constantly 90% free.
>
> Would anyone know which parameter effects the amount of memory a process
> can use? It would be good if I can change a parameter for just this one
> process
> for the user instead of changing it for the whole system if that is
> possible.
>
> thanks,
> Allan
>
Received on Fri Jan 08 1999 - 16:42:07 NZDT