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