<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
Here are some ideas that contribute to handling out of memory being useful/good:<BR>
 <BR>
 <BR>
"stress"<BR><BR>
Stress a system.<BR>Things start going slow and failing, ok. You can't succeed against<BR>
all odds, you can only try.<BR>Remove the stress.<BR>System should go back to normal, as if the stress was never applied.<BR>System should not require reboot, should not have leaked, etc.<BR><BR>
 <BR>
(I see a lot of "leaks in error paths" in traditional code<BR>that tries lamely to be right:<BR>
 p = malloc(); <BR> q = malloc(); <BR> if (q == NULL) <BR>  return error; /* p leaked */<BR> )<BR>
 <BR>
 <BR>
"running at the edge of resource exhaustion"<BR>
<BR>A system is "dedicated" to a certain task.<BR>It should make the most use of the resources it has.<BR>That is, it should use all the memory and/or cpu available.<BR>Diskspace is a different matter -- so much of it generally, hard to exhaust,<BR>and hard to consume more than one resource.<BR>Using it all means it will occasionally go too far,<BR>which should gracefully fail and use a little less.<BR>If you don't aim to use it all, you won't, and you will under-utilize.<BR>
 <BR>
 <BR>
You could perhaps modify this and say "aim for 90% utilization".<BR>
 <BR>
<BR>Certain "applications" might not strive to be this way,<BR>but if "the system" is not, then no application can be.<BR>The whole can only be as good as all the parts, etc.<BR>One bad apple spoils the bunch, etc.<BR>(Possible cultural-ism there.)<BR>
 <BR>
 <BR>
Another approach though is to kill processes that are low on resources.<BR>
Assuming that important state is managed well, like in a transactional database.<BR>
And that most state is expendable.<BR>
As well, resource hungry processes might be "run away" and/or "malicious".<BR>
 <BR>
 <BR>
Trick of course is to discern the "important non-malicious" from the "run away"/<BR>
"malicious", as well as insulating "important" server processes (daemons)<BR>
from run away/malicious clients. Guard against "denial of service attacks".<BR>
Some people like to put hard limits on things.<BR>
  "I will reject any strings longer than 2gig".<BR>
However that has the affect of imposing arbitrary capacity limits where<BR>
  larger capacity might just work and there might be legitimate clients for it.<BR>
Lately I'm using Windows findstr against text files with very long lines.<BR>
  It fails, it says "line too long". Darn.<BR>
 <BR>
<BR> - Jay<BR><BR><BR>

<HR id=stopSpelling>
<BR>
Date: Thu, 5 Feb 2009 09:56:06 -0800<BR>From: dabenavidesd@yahoo.es<BR>To: m3devel@elegosoft.com<BR>Subject: Re: [M3devel] elminating pthread_attr_t from cloned headers<BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD vAlign=top>Hi all;<BR>I guess there was a 1995 try to change that Runtime error into an exception (not sure if they succeed). Take a look at:<BR>ftp://ftp.u-aizu.ac.jp/pub/lang/Modula/m3/pkg/contrib/whenNEWfails/src/<BR>Please be patient if the files don't appear when loading the web page (I tried 2 times to open that url with the source files). Hope this helps.<BR>Thanks<BR><BR>--- El <B>mié, 4/2/09, Mika Nystrom <I><mika@async.caltech.edu></I></B> escribió:<BR>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px">De: Mika Nystrom <mika@async.caltech.edu><BR>Asunto: Re: [M3devel] elminating pthread_attr_t from cloned headers<BR>Para: "Jay" <jay.krell@cornell.edu><BR>CC: m3devel@elegosoft.com<BR>Fecha: miércoles, 4 febrero, 2009 11:33<BR><BR><PRE>Jay writes:<BR>...<BR>>I'll maybe review more code along these lines.<BR>>I gather the general gist of things in Modula-3 though<BR>>is that out of memory is fatal anyway. Raising an exception<BR>>vs. failing an assertion probably not significantly different<BR>>if the exception is not meant to be caught and isn't ever caught.<BR>>(Strange though then the gymnastics I pointed out elsewhere<BR>>converting one form of out
 of memory to another form..)<BR>...<BR><BR>Back in SRC days I remember there was a discussion at some length<BR>about what to do in case of running out of memory.  I think the<BR>project was abandoned as people realized it was quite a tricky<BR>problem...<BR><BR>I don't believe PM3 has out of memory exceptions, nor did SRC<BR>M3...?  It's a wild guess but maybe this has something to do with<BR>the Critical Mass modifications for their JVM?<BR><BR>     Mika<BR></PRE></BLOCKQUOTE></TD></TR></TBODY></TABLE><BR></body>
</html>