svn commit: r339601 - head/sys/vm

O. Hartmann ohartmann at walstatt.org
Mon Oct 22 17:16:05 UTC 2018


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Am Mon, 22 Oct 2018 17:04:05 +0000 (UTC)
Mark Johnston <markj at FreeBSD.org> schrieb:

> Author: markj
> Date: Mon Oct 22 17:04:04 2018
> New Revision: 339601
> URL: https://svnweb.freebsd.org/changeset/base/339601
> 
> Log:
>   Swap in processes unless there's a global memory shortage.
>   
>   On NUMA systems, we would not swap in processes unless all domains
>   had some free pages.  This is too conservative in general.  Instead,
>   permit swapins so long as at least one domain has free pages, and add
>   a kernel stack NUMA policy which ensures that we will try to allocate
>   kernel stack pages from any domain.
>   
>   Reported and tested by:	pho, Jan Bramkamp <crest at bultmann.eu>
>   Reviewed by:	alc, kib
>   Discussed with:	jeff
>   MFC after:	3 days
>   Sponsored by:	The FreeBSD Foundation
>   Differential Revision:	https://reviews.freebsd.org/D17304
> 
> Modified:
>   head/sys/vm/vm_glue.c
>   head/sys/vm/vm_swapout.c
> 
> Modified: head/sys/vm/vm_glue.c
> ==============================================================================
> --- head/sys/vm/vm_glue.c	Mon Oct 22 16:21:50 2018	(r339600)
> +++ head/sys/vm/vm_glue.c	Mon Oct 22 17:04:04 2018	(r339601)
> @@ -68,6 +68,7 @@ __FBSDID("$FreeBSD$");
>  
>  #include <sys/param.h>
>  #include <sys/systm.h>
> +#include <sys/domainset.h>
>  #include <sys/limits.h>
>  #include <sys/lock.h>
>  #include <sys/malloc.h>
> @@ -298,7 +299,7 @@ vm_sync_icache(vm_map_t map, vm_offset_t va, vm_offset
>  
>  struct kstack_cache_entry *kstack_cache;
>  static int kstack_cache_size = 128;
> -static int kstacks;
> +static int kstacks, kstack_domain_iter;
>  static struct mtx kstack_cache_mtx;
>  MTX_SYSINIT(kstack_cache, &kstack_cache_mtx, "kstkch", MTX_DEF);
>  
> @@ -367,6 +368,17 @@ vm_thread_new(struct thread *td, int pages)
>  		printf("vm_thread_new: kstack allocation failed\n");
>  		vm_object_deallocate(ksobj);
>  		return (0);
> +	}
> +
> +	/*
> +	 * Ensure that kstack objects can draw pages from any memory
> +	 * domain.  Otherwise a local memory shortage can block a process
> +	 * swap-in.
> +	 */
> +	if (vm_ndomains > 1) {
> +		ksobj->domain.dr_policy = DOMAINSET_RR();
> +		ksobj->domain.dr_iter = atomic_fetchadd_int(&kstack_domain_iter,
> +		    1);
>  	}
>  
>  	atomic_add_int(&kstacks, 1);
> 
> Modified: head/sys/vm/vm_swapout.c
> ==============================================================================
> --- head/sys/vm/vm_swapout.c	Mon Oct 22 16:21:50 2018	(r339600)
> +++ head/sys/vm/vm_swapout.c	Mon Oct 22 17:04:04 2018	(r339601)
> @@ -742,7 +742,8 @@ swapper_selector(bool wkilled_only)
>  /*
>   * Limit swapper to swap in one non-WKILLED process in MAXSLP/2
>   * interval, assuming that there is:
> - * - no memory shortage;
> + * - there exists at least one domain that is not suffering from a shortage of
> + *   free memory;
>   * - no parallel swap-ins;
>   * - no other swap-ins in the current SWAPIN_INTERVAL.
>   */
> @@ -750,7 +751,7 @@ static bool
>  swapper_wkilled_only(void)
>  {
>  
> -	return (vm_page_count_min() || swap_inprogress > 0 ||
> +	return (vm_page_count_min_set(&all_domains) || swap_inprogress > 0 ||
>  	    (u_int)(ticks - last_swapin) < SWAPIN_INTERVAL);
>  }
>  
> _______________________________________________
> svn-src-head at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe at freebsd.org"

This commit breaks CURRENT buildkernel:
[...]
- --- vm_glue.o ---
/usr/src/sys/vm/vm_glue.c:380:17: error: no member named 'dr_iter' in 'struct
domainset_ref'


Kind regards,

oh

- -- 
O. Hartmann

Ich widerspreche der Nutzung oder Übermittlung meiner Daten für
Werbezwecke oder für die Markt- oder Meinungsforschung (§ 28 Abs. 4 BDSG).
-----BEGIN PGP SIGNATURE-----

iLUEARMKAB0WIQQZVZMzAtwC2T/86TrS528fyFhYlAUCW84FwwAKCRDS528fyFhY
lMYGAf9h+vf8AI9JLGVUhUwwblt8GjAvrqRAcDw1Q6NG/I5xX8npX4OrXmrlzmpf
8VZ7n9fnnlZAD7e3/6MvgkfNMjPGAf96XTFAiTMSXTpQ84N5g2G03L5kAZaMaRKS
0mViZJlgQnjQaoV7089M0httbwXhz3oqGW+L0ZoZL5O5Rg9mDK/Y
=0PHK
-----END PGP SIGNATURE-----


More information about the svn-src-all mailing list