From 277583f7f89409a073e22d5d745e14d0e60eb03c Mon Sep 17 00:00:00 2001 From: dillon Date: Fri, 18 Oct 2002 17:24:30 +0000 Subject: Replace the vm_page hash table with a per-vmobject splay tree. There should be no major change in performance from this change at this time but this will allow other work to progress: Giant lock removal around VM system in favor of per-object mutexes, ranged fsyncs, more optimal COMMIT rpc's for NFS, partial filesystem syncs by the syncer, more optimal object flushing, etc. Note that the buffer cache is already using a similar splay tree mechanism. Note that a good chunk of the old hash table code is still in the tree. Alan or I will remove it prior to the release if the new code does not introduce unsolvable bugs, else we can revert more easily. Submitted by: alc (this is Alan's code) Approved by: re --- sys/vm/vm_page.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'sys/vm/vm_page.h') diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h index 646158e..156f929 100644 --- a/sys/vm/vm_page.h +++ b/sys/vm/vm_page.h @@ -110,8 +110,9 @@ TAILQ_HEAD(pglist, vm_page); struct vm_page { TAILQ_ENTRY(vm_page) pageq; /* queue info for FIFO queue or free list (P) */ - struct vm_page *hnext; /* hash table link (O,P) */ TAILQ_ENTRY(vm_page) listq; /* pages in same object (O) */ + struct vm_page *left; /* splay tree link (O) */ + struct vm_page *right; /* splay tree link (O) */ vm_object_t object; /* which object am I in (O,P)*/ vm_pindex_t pindex; /* offset into object (O,P) */ -- cgit v1.1