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

Andrew Morton
2009-05-26T20:55:10Z

On Tue, 26 May 2009 13:45:13 -0700
Randy Dunlap <randy.dunlap@oracle.com> wrote:

> Andrew Morton wrote:
> > On Tue, 26 May 2009 10:23:36 -0400 (EDT)
> > Christoph Lameter <cl@linux.com> wrote:
> >
> >> @@ -410,6 +412,11 @@ swp_entry_t get_swap_page(void)
> >> }
> >>
> >> nr_swap_pages++;
> >> + if (!out_of_swap_message_printed) {
> >> + out_of_swap_message_printed = 1;
> >> + printk(KERN_WARNING "All of swap is in use. Some pages "
> >> + "cannot be swapped out.\n");
> >> + }
> >> noswap:
> >> spin_unlock(&swap_lock);
> >> return (swp_entry_t) {0};
> >> Index: linux-2.6/mm/vmscan.c
> >> ===================================================================
> >> --- linux-2.6.orig/mm/vmscan.c 2009-05-26 09:06:03.000000000 -0500
> >> +++ linux-2.6/mm/vmscan.c 2009-05-26 09:20:30.000000000 -0500
> >> @@ -1945,6 +1945,15 @@ out:
> >> goto loop_again;
> >> }
> >>
> >> + /*
> >> + * If we had an out of swap condition but things have improved then
> >> + * reset the flag so that we print the message again when we run
> >> + * out of swap again.
> >> + */
> >> +#ifdef CONFIG_SWAP
> >> + if (out_of_swap_message_printed && !vm_swap_full())
> >> + out_of_swap_message_printed = 0;
> >> +#endif
> >> return sc.nr_reclaimed;
> >> }
> >
> > I still worry that there may be usage patterns which will result in
> > this message coming out many times.
>
> and using printk_ratelimit() or printk_timed_ratelimit() would be OK or not?

Well... it would help. We'd then get the same thing in the logs
thousands of times rather than hundreds of thousands of times.

But what's wrong with printing the thing just once, and not printing it
again until after someone ran swapon or swapoff? I think that matches up
with the operator's actions pretty closely?