kernel - Improve VM fault performance for sequential access
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 15 Jan 2010 03:40:14 +0000 (19:40 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 15 Jan 2010 03:40:14 +0000 (19:40 -0800)
commitcf1bb2a83970df7e08f3ca2ed871657ca2185944
tree3128cc6e41294cde8904a4efb16ca32a6c39cafc
parentd09ccdb59c37e56a61a19a99a3b5b75521a10fcf
kernel - Improve VM fault performance for sequential access

* VM fault I/O pipelining was not working properly.

* Temporarily fix pipelining by introducing PG_RAM, A read-ahead mark
  for vm_page_t, and adjust vm_fault to pass VM pages through to
  getpages calls if PG_RAM is set, even if they are fully valid.

* Remove code in vnode_pager_generic_getpages() which shortcutted
  the operation when the requested page was fully valid.  This
  prevented read-aheads from being issued.

* A more permanent solution is in the works (basically getting rid of
  the whole VM read-ahead/read-behind array entirely, just passing
  a single page through to vnode_pager_generic_getpages(), and
  letting the filesystem handle the read-ahead in a more efficient
  fashion.

Reported-by: "Mikhail T." <mi+thun@aldan.algebra.com>
sys/kern/vfs_cluster.c
sys/sys/vnode.h
sys/vm/vm_fault.c
sys/vm/vm_page.h
sys/vm/vnode_pager.c