kernel - Improve physio performance (2)
commit9942a85186eb01e7d377406f3f6c91aba66a35ac
authorMatthew Dillon <dillon@apollo.backplane.com>
Sun, 17 Jul 2016 18:56:49 +0000 (17 11:56 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sun, 17 Jul 2016 18:56:49 +0000 (17 11:56 -0700)
tree936fd501324acab59381b93472889c7f70f0402c
parentee85f114e672e06e8a81cfdfe32ea58ea656b981
kernel - Improve physio performance (2)

* Increase the cap on pbuf_mem buffers from 256 to 512.  256
  wasn't enough to max-out three NVMe devices.

* Add 25% hysteresis to the pbuf_{mem,kva,raw}_count counters
  to reduce unnecessary tsleep()s and wakeup()s (and thus
  unnecessary IPIs) when the pbuf pool is exhausted.

  Add a tiny bit of hysteresis for the localized *pfreecnt
  as subsystems tend to use smaller values (e.g. pageout
  code).

* In physio tests throughput with 3 x NVMe + 4 x SATA SSDs
  increases to 6.5 GBytes/sec and max IOPS @ 4K increases
  to 1.05M IOPS (yes, that's million).   (random read
  from urandom-filled partition using 32KB and 4KB blocks,
  with high user process concurrency).
sys/platform/pc64/x86_64/machdep.c
sys/vm/vm_pager.c