small patch for pageout. Comments?
Larry McVoy
lm at mcvoy.com
Thu Nov 30 17:42:41 UTC 2017
https://reviews.freebsd.org/D13308
On Thu, Nov 30, 2017 at 09:34:24AM -0800, Larry McVoy wrote:
> In a recent numa meeting that Scott called, Jeff suggested a small
> patch to the pageout daemon (included below).
>
> It's rather dramatic the difference it makes for me. If I arrange to
> thrash the crap out of memory, without this patch the kernel is so
> borked with all the processes in disk wait that I can't kill them,
> I can't reboot, my only option is to power off.
>
> With the patch there is still some borkage, the kernel is randomly
> killing processes because of out of mem, it should kill one of my
> processes that is causing the problem but it doesn't, it killed
> random stuff like dhclient, getty (logged me out), etc.
>
> But the system is responsive.
>
> What the patch does is say "if we have more than one core, don't sleep
> in pageout, just keep running until we freed enough mem".
>
> Comments?
>
> --lm
>
> diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c
> index 4ecae5ad5fd..f59a09e96e2 100644
> --- a/sys/vm/vm_pageout.c
> +++ b/sys/vm/vm_pageout.c
> @@ -1815,10 +1815,18 @@ vm_pageout_worker(void *arg)
> * (page reclamation) scan, then increase the level
> * and scan again now. Otherwise, sleep a bit and
> * try again later.
> + * LM: per discussions with the numa team, don't
> + * sleep if we have at least 2 cpus, just keep
> + * scanning. This makes a HUGE difference when
> + * the system is thrashing on memory, it's the
> + * difference between usable and borked.
> */
> mtx_unlock(&vm_page_queue_free_mtx);
> - if (pass >= 1)
> - pause("psleep", hz / VM_INACT_SCAN_RATE);
> + if (pass >= 1) {
> + if (mp_ncpus < 2) {
> + pause("psleep", hz /VM_INACT_SCAN_RATE);
> + }
> + }
> pass++;
> } else {
> /*
--
---
Larry McVoy lm at mcvoy.com http://www.mcvoy.com/lm
More information about the freebsd-arch
mailing list