diff options
author | dillon <dillon@FreeBSD.org> | 2002-10-18 17:24:30 +0000 |
---|---|---|
committer | dillon <dillon@FreeBSD.org> | 2002-10-18 17:24:30 +0000 |
commit | 277583f7f89409a073e22d5d745e14d0e60eb03c (patch) | |
tree | d01dd6df2fccbaa5a40ddb0d0da127c651c7c486 /sys/vm/vm_page.h | |
parent | bf5cd60a894d7810c40b4fdb4cbdae8e7be2c7eb (diff) | |
download | FreeBSD-src-277583f7f89409a073e22d5d745e14d0e60eb03c.zip FreeBSD-src-277583f7f89409a073e22d5d745e14d0e60eb03c.tar.gz |
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
Diffstat (limited to 'sys/vm/vm_page.h')
-rw-r--r-- | sys/vm/vm_page.h | 3 |
1 files changed, 2 insertions, 1 deletions
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) */ |