freebsd-skq/sys/fs/fuse
glebius 7ee1aa34d4 Allocate pager bufs from UMA instead of 80-ish mutex protected linked list.
o In vm_pager_bufferinit() create pbuf_zone and start accounting on how many
  pbufs are we going to have set.
  In various subsystems that are going to utilize pbufs create private zones
  via call to pbuf_zsecond_create(). The latter calls uma_zsecond_create(),
  and sets a limit on created zone. After startup preallocate pbufs according
  to requirements of all pbuf zones.

  Subsystems that used to have a private limit with old allocator now have
  private pbuf zones: md(4), fusefs, NFS client, smbfs, VFS cluster, FFS,
  swap, vnode pager.

  The following subsystems use shared pbuf zone: cam(4), nvme(4), physio(9),
  aio(4). They should have their private limits, but changing that is out of
  scope of this commit.

o Fetch tunable value of kern.nswbuf from init_param2() and while here move
  NSWBUF_MIN to opt_param.h and eliminate opt_swap.h, that was holding only
  this option.
  Default values aren't touched by this commit, but they probably should be
  reviewed wrt to modern hardware.

This change removes a tight bottleneck from sendfile(2) operation, that
uses pbufs in vnode pager. Other pagers also would benefit from faster
allocation.

Together with:	gallatin
Tested by:	pho
2019-01-15 01:02:16 +00:00
..
fuse_debug.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
fuse_device.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
fuse_file.c FUSE: Remove some set-but-not-used variables 2018-08-08 04:46:03 +00:00
fuse_file.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
fuse_internal.c Remove unused argument to priv_check_cred. 2018-12-11 19:32:16 +00:00
fuse_internal.h Remove comments made obsolete by the ino64 work. 2018-11-19 17:33:44 +00:00
fuse_io.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
fuse_io.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
fuse_ipc.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
fuse_ipc.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
fuse_kernel.h FUSE extattrs: fix issue when neither uio nor size were not passed to VOP_*. 2018-08-21 18:39:47 +00:00
fuse_main.c Allocate pager bufs from UMA instead of 80-ish mutex protected linked list. 2019-01-15 01:02:16 +00:00
fuse_node.c FUSE: Document global sysctl knobs 2018-08-15 17:41:19 +00:00
fuse_node.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
fuse_param.h Update link count handling in fuse for post-ino64. 2017-12-19 22:40:54 +00:00
fuse_vfsops.c FUSE: Remove some set-but-not-used variables 2018-08-08 04:46:03 +00:00
fuse_vnops.c Allocate pager bufs from UMA instead of 80-ish mutex protected linked list. 2019-01-15 01:02:16 +00:00
fuse.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00