Mercurial > unleashed > wips
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(); }