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