changeset 20699:92933bc30445 draft

vm: segpcache_maxwindow is useless Well... sort of.
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Tue, 27 Jun 2017 23:54:38 +0300
parents 8763c068fd48
children d75ddda3d04d
files kernel/vm/vm_seg.c
diffstat 1 files changed, 3 insertions(+), 38 deletions(-) [+]
line wrap: on
line diff
--- a/kernel/vm/vm_seg.c	Tue Jun 27 23:53:58 2017 +0300
+++ b/kernel/vm/vm_seg.c	Tue Jun 27 23:54:38 2017 +0300
@@ -127,7 +127,6 @@
  */
 
 int	segpcache_enabled = 1;		/* if 1, shadow lists are cached */
-pgcnt_t	segpcache_maxwindow = 0;	/* max # of pages that can be cached */
 ulong_t	segpcache_hashsize_win = 0;	/* # of non wired buckets */
 ulong_t	segpcache_hashsize_wired = 0;	/* # of wired buckets */
 int	segpcache_reap_sec = 1;		/* reap check rate in secs */
@@ -150,14 +149,13 @@
  */
 static struct p_ctrl1 {
 	uint_t p_disabled;		/* if not 0, caching temporarily off */
-	pgcnt_t p_maxwin;		/* max # of pages that can be cached */
 	size_t p_hashwin_sz;		/* # of non wired buckets */
 	struct seg_phash *p_htabwin;	/* hash table for non wired entries */
 	size_t p_hashwired_sz;		/* # of wired buckets */
 	struct seg_phash_wired *p_htabwired; /* hash table for wired entries */
 	kmem_cache_t *p_kmcache;	/* kmem cache for seg_pcache structs */
 #ifdef _LP64
-	ulong_t pad[1];
+	ulong_t pad[2];
 #endif /* _LP64 */
 } pctrl1;
 
@@ -182,7 +180,6 @@
 } pctrl3;
 
 #define	seg_pdisabled			pctrl1.p_disabled
-#define	seg_pmaxwindow			pctrl1.p_maxwin
 #define	seg_phashsize_win		pctrl1.p_hashwin_sz
 #define	seg_phashtab_win		pctrl1.p_htabwin
 #define	seg_phashsize_wired		pctrl1.p_hashwired_sz
@@ -757,10 +754,6 @@
 		return (SEGP_SUCCESS);
 	}
 
-	if (seg_plocked_window + btop(len) > seg_pmaxwindow) {
-		return (SEGP_FAIL);
-	}
-
 	if (freemem < desfree) {
 		return (SEGP_FAIL);
 	}
@@ -830,10 +823,6 @@
 	npages = btop(len);
 	mutex_enter(&seg_pmem_mtx);
 	if (!IS_PFLAGS_WIRED(flags)) {
-		if (seg_plocked_window + npages > seg_pmaxwindow) {
-			mutex_exit(&seg_pmem_mtx);
-			return (SEGP_FAIL);
-		}
 		seg_plocked_window += npages;
 	}
 	seg_plocked += npages;
@@ -949,7 +938,6 @@
 	pcache_link_t *hlinkp;
 	pcache_link_t *hlnextp = NULL;
 	int lowmem;
-	int trim;
 
 	ASSERT(seg_phashsize_win != 0);
 
@@ -962,7 +950,6 @@
 
 	if (!force) {
 		lowmem = 0;
-		trim = 0;
 		if (freemem < lotsfree + needfree) {
 			spgcnt_t fmem = MAX((spgcnt_t)(freemem - needfree), 0);
 			if (fmem <= 5 * (desfree >> 2)) {
@@ -979,10 +966,7 @@
 				}
 			}
 		}
-		if (seg_plocked_window >= 7 * (seg_pmaxwindow >> 3)) {
-			trim = 1;
-		}
-		if (!lowmem && !trim) {
+		if (!lowmem) {
 			return;
 		}
 		npgs_to_purge = seg_plocked_window >>
@@ -1110,7 +1094,7 @@
 			if (npgs_purged >= npgs_to_purge) {
 				break;
 			}
-			if (!trim && !(seg_pathr_full_ahb & 15)) {
+			if (!(seg_pathr_full_ahb & 15)) {
 				ASSERT(lowmem);
 				if (freemem >= lotsfree + needfree) {
 					break;
@@ -1471,25 +1455,6 @@
 		mutex_init(&hp->p_hmutex, NULL, MUTEX_DEFAULT, NULL);
 	}
 
-	if (segpcache_maxwindow == 0) {
-		if (physmegs < 64) {
-			/* 3% of memory */
-			segpcache_maxwindow = availrmem >> 5;
-		} else if (physmegs < 512) {
-			/* 12% of memory */
-			segpcache_maxwindow = availrmem >> 3;
-		} else if (physmegs < 1024) {
-			/* 25% of memory */
-			segpcache_maxwindow = availrmem >> 2;
-		} else if (physmegs < 2048) {
-			/* 50% of memory */
-			segpcache_maxwindow = availrmem >> 1;
-		} else {
-			/* no limit */
-			segpcache_maxwindow = (pgcnt_t)-1;
-		}
-	}
-	seg_pmaxwindow = segpcache_maxwindow;
 	seg_pinit_mem_config();
 }