diff options
author | dg <dg@FreeBSD.org> | 1994-08-01 11:25:45 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1994-08-01 11:25:45 +0000 |
commit | 0e87163cbf8172e92cddba7c2aafcbde92386bca (patch) | |
tree | 1feaef790bf62d4d5a0238efdc5c6afb93a718c6 /sys | |
parent | 4470f3d596cc20c7dc9a20846eecabe7d58f4a0b (diff) | |
download | FreeBSD-src-0e87163cbf8172e92cddba7c2aafcbde92386bca.zip FreeBSD-src-0e87163cbf8172e92cddba7c2aafcbde92386bca.tar.gz |
Removed all code related to the pagescan daemon, and changed 'act_count'
adjustments to compensate for a world without the pagescan daemon.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/amd64/amd64/trap.c | 4 | ||||
-rw-r--r-- | sys/i386/i386/trap.c | 4 | ||||
-rw-r--r-- | sys/kern/init_main.c | 19 | ||||
-rw-r--r-- | sys/kern/subr_trap.c | 4 | ||||
-rw-r--r-- | sys/vm/swap_pager.c | 1 | ||||
-rw-r--r-- | sys/vm/vm_page.c | 4 | ||||
-rw-r--r-- | sys/vm/vm_pageout.c | 86 |
7 files changed, 15 insertions, 107 deletions
diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c index 8bfe85e..7084791 100644 --- a/sys/amd64/amd64/trap.c +++ b/sys/amd64/amd64/trap.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)trap.c 7.4 (Berkeley) 5/13/91 - * $Id: trap.c,v 1.24 1994/05/25 08:55:18 rgrimes Exp $ + * $Id: trap.c,v 1.26 1994/06/11 05:13:33 davidg Exp $ */ /* @@ -408,6 +408,8 @@ trap_pfault(frame, usermode) *(volatile char *)v += 0; ptepg = (vm_page_t) pmap_pte_vm_page(vm_map_pmap(map), v); + if( ptepg->hold_count == 0) + ptepg->act_count += 3; vm_page_hold(ptepg); /* Fault in the user page: */ diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c index 8bfe85e..7084791 100644 --- a/sys/i386/i386/trap.c +++ b/sys/i386/i386/trap.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)trap.c 7.4 (Berkeley) 5/13/91 - * $Id: trap.c,v 1.24 1994/05/25 08:55:18 rgrimes Exp $ + * $Id: trap.c,v 1.26 1994/06/11 05:13:33 davidg Exp $ */ /* @@ -408,6 +408,8 @@ trap_pfault(frame, usermode) *(volatile char *)v += 0; ptepg = (vm_page_t) pmap_pte_vm_page(vm_map_pmap(map), v); + if( ptepg->hold_count == 0) + ptepg->act_count += 3; vm_page_hold(ptepg); /* Fault in the user page: */ diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c index f1fcc44..ea604ab 100644 --- a/sys/kern/init_main.c +++ b/sys/kern/init_main.c @@ -81,7 +81,7 @@ struct filedesc0 filedesc0; struct plimit limit0; struct vmspace vmspace0; struct proc *curproc = &proc0; -struct proc *initproc, *pageproc, *pagescanproc, *updateproc; +struct proc *initproc, *pageproc, *updateproc; int cmask = CMASK; extern struct user *proc0paddr; @@ -299,24 +299,9 @@ main(framep) vm_pageout(); /* NOTREACHED */ } -#if 1 - /* - * Start page scanner daemon (process 3). - */ - if (fork(p, (void *) NULL, rval)) - panic("failed fork page scanner daemon"); - if (rval[1]) { - p = curproc; - pagescanproc = p; - p->p_flag |= P_INMEM | P_SYSTEM; - bcopy("pagescan", p->p_comm, sizeof("pagescan")); - vm_pagescan(); - /*NOTREACHED*/ - } -#endif /* - * Start update daemon (process 4). + * Start update daemon (process 3). */ #ifndef LAPTOP if (fork(p, (void *) NULL, rval)) diff --git a/sys/kern/subr_trap.c b/sys/kern/subr_trap.c index 8bfe85e..7084791 100644 --- a/sys/kern/subr_trap.c +++ b/sys/kern/subr_trap.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)trap.c 7.4 (Berkeley) 5/13/91 - * $Id: trap.c,v 1.24 1994/05/25 08:55:18 rgrimes Exp $ + * $Id: trap.c,v 1.26 1994/06/11 05:13:33 davidg Exp $ */ /* @@ -408,6 +408,8 @@ trap_pfault(frame, usermode) *(volatile char *)v += 0; ptepg = (vm_page_t) pmap_pte_vm_page(vm_map_pmap(map), v); + if( ptepg->hold_count == 0) + ptepg->act_count += 3; vm_page_hold(ptepg); /* Fault in the user page: */ diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c index 5a1efae..a534d42 100644 --- a/sys/vm/swap_pager.c +++ b/sys/vm/swap_pager.c @@ -1194,7 +1194,6 @@ swap_pager_input(swp, m, count, reqpage) * to deactivate the readahead pages. */ vm_page_deactivate(m[i]); - m[i]->act_count = 2; /* * just in case someone was asking for this diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 38d320f..4304100 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)vm_page.c 7.4 (Berkeley) 5/7/91 - * $Id: vm_page.c,v 1.17 1994/04/20 07:07:14 davidg Exp $ + * $Id: vm_page.c,v 1.2 1994/05/25 09:20:05 rgrimes Exp $ */ /* @@ -838,7 +838,7 @@ void vm_page_activate(m) m->flags |= PG_ACTIVE; TAILQ_REMOVE(&m->object->memq, m, listq); TAILQ_INSERT_TAIL(&m->object->memq, m, listq); - m->act_count = 10; + m->act_count = 1; cnt.v_active_count++; } splx(s); diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index cb4c1bf..cabb102 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -65,7 +65,7 @@ * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. * - * $Id: vm_pageout.c,v 1.20 1994/04/20 07:07:15 davidg Exp $ + * $Id: vm_pageout.c,v 1.3 1994/06/06 11:56:27 davidg Exp $ */ /* @@ -102,7 +102,7 @@ extern int swap_pager_ready(); #define MAXSCAN 512 /* maximum number of pages to scan in active queue */ /* set the "clock" hands to be (MAXSCAN * 4096) Bytes */ #define ACT_DECLINE 1 -#define ACT_ADVANCE 6 +#define ACT_ADVANCE 3 #define ACT_MAX 300 #define LOWATER ((2048*1024)/NBPG) @@ -724,88 +724,6 @@ rescan1: return force_wakeup; } -void -vm_pagescan() -{ - int maxscan, pages_scanned, pages_referenced, nextscan, scantick = hz/20; - int m_ref, next_ref; - vm_page_t m, next; - - (void) spl0(); - - nextscan = scantick; - -scanloop: - - pages_scanned = 0; - pages_referenced = 0; - maxscan = min(cnt.v_active_count, MAXSCAN); - - /* - * Gather statistics on page usage. - */ - m = vm_page_queue_active.tqh_first; - while (m && (maxscan-- > 0)) { - - ++pages_scanned; - - next = m->pageq.tqe_next; - - /* - * Dont mess with pages that are busy. - */ - if ((m->flags & PG_BUSY) || (m->hold_count != 0)) { - m = next; - continue; - } - - /* - * Advance pages that have been referenced, decline pages that - * have not. - */ - if (pmap_is_referenced(VM_PAGE_TO_PHYS(m))) { - pmap_clear_reference(VM_PAGE_TO_PHYS(m)); - pages_referenced++; - if (m->act_count < ACT_MAX) - m->act_count += ACT_ADVANCE; - TAILQ_REMOVE(&vm_page_queue_active, m, pageq); - TAILQ_INSERT_TAIL(&vm_page_queue_active, m, pageq); - TAILQ_REMOVE(&m->object->memq, m, listq); - TAILQ_INSERT_TAIL(&m->object->memq, m, listq); - } else { - m->act_count -= min(m->act_count, ACT_DECLINE); - /* - * if the page act_count is zero, and we are low on mem -- then we deactivate - */ - if (!m->act_count && - (cnt.v_free_count+cnt.v_inactive_count < cnt.v_free_target+cnt.v_inactive_target )) { - vm_page_deactivate(m); - /* - * else if on the next go-around we will deactivate the page - * we need to place the page on the end of the queue to age - * the other pages in memory. - */ - } else { - TAILQ_REMOVE(&vm_page_queue_active, m, pageq); - TAILQ_INSERT_TAIL(&vm_page_queue_active, m, pageq); - TAILQ_REMOVE(&m->object->memq, m, listq); - TAILQ_INSERT_TAIL(&m->object->memq, m, listq); - } - } - m = next; - } - - if (pages_referenced) { - nextscan = (pages_scanned / pages_referenced) * scantick; - nextscan = max(nextscan, scantick); - nextscan = min(nextscan, hz); - } else - nextscan = hz; - tsleep((caddr_t) &vm_pagescanner, PVM, "scanw", nextscan); - - goto scanloop; -} - /* * vm_pageout is the high level pageout daemon. */ |