linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Mahmood Naderan <nt_mahmood@yahoo.com>
To: Denys Vlasenko <vda.linux@googlemail.com>
Cc: David Rientjes <rientjes@google.com>,
	Randy Dunlap <rdunlap@xenotime.net>,
	"\"linux-kernel@vger.kernel.org\"" <linux-kernel@vger.kernel.org>,
	"\"linux-mm@kvack.org\"" <linux-mm@kvack.org>
Subject: Re: running of out memory => kernel crash
Date: Thu, 11 Aug 2011 08:13:45 -0700 (PDT)	[thread overview]
Message-ID: <1313075625.50520.YahooMailNeo@web111715.mail.gq1.yahoo.com> (raw)
In-Reply-To: <CAK1hOcN7q=F=UV=aCAsVOYO=Ex34X0tbwLHv9BkYkA=ik7G13w@mail.gmail.com>

>What it can possibly do if there is no swap and therefore it 

>can't free memory by writing out RAM pages to swap?


>the disk activity comes from constant paging in (reading)
>of pages which contain code of running binaries.

Why the disk activity does not appear in the first scenario?


>Thus the only option is to find some not recently used page
> with read-only, file-backed content (usually some binary's 

>text page, but can be any read-only file mapping) and reuse it.
Why "killing" does not appear here? Why it try to "find some 

recently used page"?


Both scenarios have one common thing... Running out of memory.
But they behave differently.


// Naderan *Mahmood;


________________________________
From: Denys Vlasenko <vda.linux@googlemail.com>
To: Mahmood Naderan <nt_mahmood@yahoo.com>
Cc: David Rientjes <rientjes@google.com>; Randy Dunlap <rdunlap@xenotime.net>; """"linux-kernel@vger.kernel.org"""" <linux-kernel@vger.kernel.org>; """linux-mm@kvack.org""" <linux-mm@kvack.org>
Sent: Thursday, August 11, 2011 5:17 PM
Subject: Re: running of out memory => kernel crash

On Thu, Aug 11, 2011 at 10:02 AM, Mahmood Naderan <nt_mahmood@yahoo.com> wrote:
>>Despite it's name, kswapd is still active, it's trying to reclaim memory
>>to prevent having to kill a process as the last resort.
>
> I understand what you said, but I did two scenarios:
> 1- I wrote a simple C++ program that "new" a lot of pointers.
>    for ( int i = 0; i < n; i++ ) {
>      for ( int j = 0; j < n; j++ ) {
>        for ( int k = 0; k < n; k++ ) {
>          for ( int l = 0; l < n; l++ ) {
>            double *ptr1 = new double[n*i];
>            double *ptr2 = new double[n*j];
>      }}}}
>
> When I run the program, it ill eat the memory and when it reaches the
> maximum ram, it get killed and I saw  message on terminal:
>
> mahmood@vpc:~$ ./leak
> Killed
>
> for this scenario, there is no kswapd process running.

Why do you think kswapd should get active? What it can possibly do
if there is no swap and therefore it can't free memory by writing
out RAM pages to swap?

> 2- There is 300MB ram. I opened an application saw that
> free space reduced to 100MB, then another application reduced the free
> space to 30MB. Another application reduced to 4MB. Now the "kswapd"
> is running with a lot of disk activity and tries to keep free space at 4MB.
> In this scenario, No application is killed.
>
> The question is why in one scenario, the application is killed and in one
> scenario, kswapd is running.

In scenario 2, the disk activity comes from constant paging in (reading)
of pages which contain code of running binaries.

Since machine has no free RAM and no swap at all, when it needs
a free page it can't swap out a dirty (modified) page or anon
(usually malloced space) page. Thus the only option is to find some
not recently used page with read-only, file-backed content (usually some
binary's text page, but can be any read-only file mapping) and reuse it.

If there are no really old, unused read-only, file-backed pages,
then the discarded page will be needed soon, will need to be read from disk,
and will evict another similar page. Which will be needed soon too,
will need to be read from disk, and will evict another such page...
ad infinitum.

-- 
vda 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2011-08-11 15:13 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1312872786.70934.YahooMailNeo@web111712.mail.gq1.yahoo.com>
2011-08-09  7:06 ` Randy Dunlap
     [not found]   ` <1312874259.89770.YahooMailNeo@web111704.mail.gq1.yahoo.com>
2011-08-09 16:03     ` David Rientjes
2011-08-10  8:14       ` Mahmood Naderan
2011-08-11  4:09         ` David Rientjes
2011-08-11  7:07           ` Mahmood Naderan
2011-08-11  7:13             ` David Rientjes
2011-08-11  8:02               ` Mahmood Naderan
2011-08-11 12:47                 ` Denys Vlasenko
2011-08-11 15:13                   ` Mahmood Naderan [this message]
2011-08-11 17:38                     ` Denys Vlasenko
2011-08-17  8:50                       ` Mahmood Naderan
2011-08-18  2:18                       ` Pavel Ivanov
2011-08-18 12:44                         ` Denys Vlasenko
2011-08-18 14:26                           ` Pavel Ivanov
2011-08-18 22:25                             ` Denys Vlasenko
2011-08-19 19:21                               ` David Rientjes
2011-08-19 19:29                             ` Bryan Donlan
2011-08-19 21:19                               ` Chris Friesen
2011-08-19 21:38                                 ` Alan Cox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1313075625.50520.YahooMailNeo@web111715.mail.gq1.yahoo.com \
    --to=nt_mahmood@yahoo.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=rdunlap@xenotime.net \
    --cc=rientjes@google.com \
    --cc=vda.linux@googlemail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox