Re: [PATCH] Warn if we run out of swap space

KAMEZAWA Hiroyuki
2009-05-25T00:54:11Z

On Fri, 22 May 2009 21:38:47 -0700
Andrew Morton <akpm@linux-foundation.org> wrote:

> On Fri, 22 May 2009 14:58:19 -0400 (EDT) Christoph Lameter <cl@linux-foundation.org> wrote:
>
> >
> > Subject: Warn if we run out of swap space
> >
> > Running out of swap space means that the evicton of anonymous pages may no longer
> > be possible which can lead to OOM conditions.
> >
> > Print a warning when swap space first becomes exhausted.
> >
> > Signed-off-by: Christoph Lameter <cl@linux-foundation.org>
> >
> > ---
> > mm/swapfile.c | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > Index: linux-2.6/mm/swapfile.c
> > ===================================================================
> > --- linux-2.6.orig/mm/swapfile.c 2009-05-22 12:25:19.000000000 -0500
> > +++ linux-2.6/mm/swapfile.c 2009-05-22 13:56:10.000000000 -0500
> > @@ -380,6 +380,7 @@ swp_entry_t get_swap_page(void)
> > pgoff_t offset;
> > int type, next;
> > int wrapped = 0;
> > + static int printed = 0;
> >
> > spin_lock(&swap_lock);
> > if (nr_swap_pages <= 0)
> > @@ -410,6 +411,10 @@ swp_entry_t get_swap_page(void)
> > }
> >
> > nr_swap_pages++;
> > + if (!printed) {
> > + printed = 1;
> > + printk(KERN_WARNING "All of swap is in use. Some pages cannot be swapped out.");
> > + }
> > noswap:
> > spin_unlock(&swap_lock);
> > return (swp_entry_t) {0};
>
> I think the warning is useful. (Although the missing \n makes me wonder
> how well tested this is).
>
> However the once-per-boot thing weakens it quite a lot. Suppose someone
> runs out of swap, sees the message, adds more swap then later runs out
> again?
>
> Perhaps we could clear the `printed' flag each time the amount of online
> swap is altered?
>
How about clearing it in the condition vm_swap_full() returns false ?
Anyway, I welcome this patch :)

Thanks,
-Kame