diff options
author | dillon <dillon@FreeBSD.org> | 2000-12-26 19:41:38 +0000 |
---|---|---|
committer | dillon <dillon@FreeBSD.org> | 2000-12-26 19:41:38 +0000 |
commit | fd223545d4ce7c8c6fe4896ce1eb916f587f77a8 (patch) | |
tree | 8bc9147cc365625dec8071f12bd60d2119d819e4 /sys/vm/vm_page.h | |
parent | a042274eabc95cdbaadcbde28ce1b8bdbb79d6f8 (diff) | |
download | FreeBSD-src-fd223545d4ce7c8c6fe4896ce1eb916f587f77a8.zip FreeBSD-src-fd223545d4ce7c8c6fe4896ce1eb916f587f77a8.tar.gz |
This implements a better launder limiting solution. There was a solution
in 4.2-REL which I ripped out in -stable and -current when implementing the
low-memory handling solution. However, maxlaunder turns out to be the saving
grace in certain very heavily loaded systems (e.g. newsreader box). The new
algorithm limits the number of pages laundered in the first pageout daemon
pass. If that is not sufficient then suceessive will be run without any
limit.
Write I/O is now pipelined using two sysctls, vfs.lorunningspace and
vfs.hirunningspace. This prevents excessive buffered writes in the
disk queues which cause long (multi-second) delays for reads. It leads
to more stable (less jerky) and generally faster I/O streaming to disk
by allowing required read ops (e.g. for indirect blocks and such) to occur
without interrupting the write stream, amoung other things.
NOTE: eventually, filesystem write I/O pipelining needs to be done on a
per-device basis. At the moment it is globalized.
Diffstat (limited to 'sys/vm/vm_page.h')
-rw-r--r-- | sys/vm/vm_page.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h index 4c31df9..dc8290e 100644 --- a/sys/vm/vm_page.h +++ b/sys/vm/vm_page.h @@ -242,6 +242,7 @@ extern struct vpgqueues vm_page_queues[PQ_COUNT]; */ #define PG_BUSY 0x0001 /* page is in transit (O) */ #define PG_WANTED 0x0002 /* someone is waiting for page (O) */ +#define PG_WINATCFLS 0x0004 /* flush dirty page on inactive q */ #define PG_FICTITIOUS 0x0008 /* physical page doesn't exist (O) */ #define PG_WRITEABLE 0x0010 /* page is mapped writeable */ #define PG_MAPPED 0x0020 /* page is mapped */ |