As a user, without administrative privileges,
I want to determine if I really can consume
a certain amount of memory.
Even though "ulimit -a" returned
max memory size unlimited,
I have an application that seemed limited to 2.1GB,
so I wanted to EMPIRICALLY TEST the memory limit.
I welcome other approaches for checking memory limits.
The following script does check this 2100MB,
with the command line argument $1 as "2200".
/usr/bin/bc <<+++
scale=1020000
for (x=1; x<=$1; x++) {z[x]=1/3}
+++
if [ $? -eq 0 ] ; then
echo "SUCCESSFUL: Consumed \"$1\" megabytes memory (possibly as swap space)."
else
echo "FAILED: Could not consume \"$1\" megabytes memory."
fi
You can watch as the memory use increases with something like
while : ; do /bin/ps -A -o %cpu,%mem,vsize,rss,cmd |
egrep 'RSS|bc'; sleep 1; done
With the "bc" calculator set with a "scale" of 1,020,000,
each variable set to "1/3" uses 1MB.
So to consume 2200MB, we need to create 2200 variables.
This worked for "bc -v" GNU version of 1.06 on Linux,
but would not work with the limited IBM AIX installed bc
which won't even allow "scale=100" (so we installed the GNU version).
--
Jameson C. Burt, NJ9L Fairfax, Virginia, USA
jameson@coost.com http://www.coost.com
(202) 690-0380 (work)
LTSP.org: magic "mysterious and awe-inspiring even though
we know they are real and not supernatural"
Attachment:
signature.asc
Description: Digital signature