Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Dec 2018 16:50:13 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r341375 - head/sys/vm
Message-ID:  <201812011650.wB1GoD4x047126@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Sat Dec  1 16:50:12 2018
New Revision: 341375
URL: https://svnweb.freebsd.org/changeset/base/341375

Log:
  Allow to create swap zone larger than v_page_count / 2.
  
  If user configured the maxswapzone tunable, just take the literal
  value for the initial zone sizing attempt.  Before, it was only
  possible to reduce the zone by the tunable.
  
  While there, correct the message which was not correct when zone
  creation rounded the size up.
  
  Reported by:	jmg
  Reviewed by:	markj
  MFC after:	1 week
  Sponsored by:	The FreeBSD Foundation
  Differential revision:	https://reviews.freebsd.org/D18381

Modified:
  head/sys/vm/swap_pager.c

Modified: head/sys/vm/swap_pager.c
==============================================================================
--- head/sys/vm/swap_pager.c	Sat Dec  1 16:43:18 2018	(r341374)
+++ head/sys/vm/swap_pager.c	Sat Dec  1 16:50:12 2018	(r341375)
@@ -547,12 +547,12 @@ swap_pager_swap_init(void)
 	mtx_unlock(&pbuf_mtx);
 
 	/*
-	 * Initialize our zone, guessing on the number we need based
-	 * on the number of pages in the system.
+	 * Initialize our zone, taking the user's requested size or
+	 * estimating the number we need based on the number of pages
+	 * in the system.
 	 */
-	n = vm_cnt.v_page_count / 2;
-	if (maxswzone && n > maxswzone / sizeof(struct swblk))
-		n = maxswzone / sizeof(struct swblk);
+	n = maxswzone != 0 ? maxswzone / sizeof(struct swblk) :
+	    vm_cnt.v_page_count / 2;
 	swpctrie_zone = uma_zcreate("swpctrie", pctrie_node_size(), NULL, NULL,
 	    pctrie_zone_init, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM);
 	if (swpctrie_zone == NULL)
@@ -580,7 +580,7 @@ swap_pager_swap_init(void)
 	n = uma_zone_get_max(swblk_zone);
 
 	if (n < n2)
-		printf("Swap blk zone entries reduced from %lu to %lu.\n",
+		printf("Swap blk zone entries changed from %lu to %lu.\n",
 		    n2, n);
 	swap_maxpages = n * SWAP_META_PAGES;
 	swzone = n * sizeof(struct swblk);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201812011650.wB1GoD4x047126>