public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ross Biro <rossb@google.com>
To: linux-kernel@vger.kernel.org
Subject: [BUG 2.4.18-2.4.21-pre5 at least]: MM vmscan doesn't free buffer heads under memory pressure
Date: Wed, 23 Apr 2003 14:36:33 -0700	[thread overview]
Message-ID: <3EA70761.5090306@google.com> (raw)


I reproduced this problem in 2.4.18 and visually verified it in 
2.4.21-pre5.  I haven't look at any other kernels.

Buffer Heads tend to be allocated in low memory (SLAB_NOFS) but point to 
pages in high memory.  If low memory is under heavy pressure, but high 
memory is not, then buffer heads in low memory that point to buffers in 
high memory are never freed.  This can cause OOM errors when there is 
still plenty of memory and plenty of buffer heads that could be easily 
freed.

Addint the following while loop to 
try_to_free_pages/try_to_free_pages_zone and trying to free pages again 
seems to alleviate the problem.

    Ross



                /* Problem, we couldn't free up the memory we want.
                   Currently buffer heads all end up in lowmem, so
                   we may be able to free up some low mem by freeing
                   up some highmem.  Try to do that. */
                while (pgdat) {
                        for (zone = pgdat->node_zones + MAX_NR_ZONES-1;
                             zone > classzone &&
                             zone >= pgdat->node_zones ;
                             zone--) {
                                shrink_caches(zone, priority, gfp_mask,
                                              nr_pages *
                                              (PAGE_SIZE /
                                               sizeof(struct 
buffer_head) + 1)
                                              * 8);
                        }
                        pgdat = pgdat->node_next;
                }



                 reply	other threads:[~2003-04-23 21:24 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=3EA70761.5090306@google.com \
    --to=rossb@google.com \
    --cc=linux-kernel@vger.kernel.org \
    /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