kernel - Remove most buffer_map contention on 64-bit systems
authorMatthew Dillon <dillon@apollo.backplane.com>
Thu, 7 Nov 2013 01:55:06 +0000 (17:55 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Thu, 7 Nov 2013 01:55:06 +0000 (17:55 -0800)
commit80e89abc73b34fc5e6520edc451a9f132bfac576
treebcd77ff0461726e2cb45d5150dcd0ed791f76b03
parent1ac92c8c857a15dc010924c5f066da404e568640
kernel - Remove most buffer_map contention on 64-bit systems

* Set BKVASIZE to MAXBSIZE (65536) on 64-bit systems.  This has the effect
  of always reserving a maximal amount of KVM for each buffer cache buffer.

* The change removes most buffer_map interactions once the system caches
  have stabilized.

* The change removes the need to defragment the buffer cache.

* Significant performance improvement for HAMMER1 and HAMMER2 which use
  larger buffers and were hitting degenerate fragmentation issues before
  this change.

* But also results in lower buffer data density when buffering data for
  smaller files, so may have a slight detrimental effect on UFS and on
  the amount of time dirty data can be cached before being flushed to
  disk.

* NOTE: The 64K limit is for normal buffers and is unrelated to the
  physical cluster buffer (pbuf) limit of 128KB (MAXPHYS).
sys/cpu/i386/include/param.h
sys/cpu/x86_64/include/param.h
sys/kern/vfs_bio.c
sys/platform/pc64/x86_64/machdep.c
sys/sys/param.h