43#include "opt_msgbuf.h"
44#include "opt_maxphys.h"
45#include "opt_maxusers.h"
50#include <sys/kernel.h>
51#include <sys/limits.h>
52#include <sys/msgbuf.h>
53#include <sys/sysctl.h>
58#include <vm/vm_param.h>
75#define NPROC (20 + 16 * maxusers)
80#define MAXFILES (40 + 32 * maxusers)
113 "Number of clock ticks per second");
115 "Number of buffers in the buffer cache");
117 "Number of swap buffers");
119 "Size of the kernel message buffer");
121 "Maximum memory for swap metadata");
123 "Maximum value of vfs.maxbufspace");
126 "Maximum number of transient BIOs mappings");
128 "Maximum text size");
130 "Initial data size limit");
132 "Maximum data size");
134 "Initial stack size limit");
136 "Maximum stack size");
138 "Amount to grow stack on a stack fault");
140 CTLFLAG_RD | CTLTYPE_STRING | CTLFLAG_MPSAFE, NULL, 0,
142 "Virtual machine guest detected?");
149 [VM_GUEST_NO] =
"none",
150 [VM_GUEST_VM] =
"generic",
151 [VM_GUEST_XEN] =
"xen",
152 [VM_GUEST_HV] =
"hv",
153 [VM_GUEST_VMWARE] =
"vmware",
154 [VM_GUEST_KVM] =
"kvm",
155 [VM_GUEST_BHYVE] =
"bhyve",
156 [VM_GUEST_VBOX] =
"vbox",
157 [VM_GUEST_PARALLELS] =
"parallels",
169#if !defined(__mips__) && !defined(__arm64__)
173 TUNABLE_INT_FETCH(
"kern.hz", &
hz);
184 ticks = INT_MAX - (
hz * 10 * 60);
190#ifdef VM_SWZONE_SIZE_MAX
193 TUNABLE_LONG_FETCH(
"kern.maxswzone", &
maxswzone);
194#ifdef VM_BCACHE_SIZE_MAX
197 TUNABLE_LONG_FETCH(
"kern.maxbcache", &
maxbcache);
199 TUNABLE_INT_FETCH(
"kern.msgbufsize", &
msgbufsize);
202 TUNABLE_ULONG_FETCH(
"kern.maxtsiz", &
maxtsiz);
204 TUNABLE_ULONG_FETCH(
"kern.dfldsiz", &
dfldsiz);
206 TUNABLE_ULONG_FETCH(
"kern.maxdsiz", &
maxdsiz);
208 TUNABLE_ULONG_FETCH(
"kern.dflssiz", &
dflssiz);
210 TUNABLE_ULONG_FETCH(
"kern.maxssiz", &
maxssiz);
212 TUNABLE_ULONG_FETCH(
"kern.sgrowsiz", &
sgrowsiz);
228 TUNABLE_INT_FETCH(
"kern.pid_max", &
pid_max);
234 TUNABLE_INT_FETCH(
"vfs.unmapped_buf_allowed", &unmapped_buf_allowed);
246 TUNABLE_INT_FETCH(
"kern.maxusers", &
maxusers);
248 maxusers = physpages / (2 * 1024 * 1024 / PAGE_SIZE);
251#ifdef VM_MAX_AUTOTUNE_MAXUSERS
252 if (
maxusers > VM_MAX_AUTOTUNE_MAXUSERS)
253 maxusers = VM_MAX_AUTOTUNE_MAXUSERS;
270 TUNABLE_INT_FETCH(
"kern.maxproc", &
maxproc);
271 if (
maxproc > (physpages / 12))
283 TUNABLE_INT_FETCH(
"kern.maxfiles", &
maxfiles);
293 TUNABLE_INT_FETCH(
"kern.nbuf", &
nbuf);
296 TUNABLE_ULONG_FETCH(
"kern.maxphys", &
maxphys);
299 }
else if (__bitcountl(
maxphys) != 1) {
312 TUNABLE_INT_FETCH(
"kern.nswbuf", &
nswbuf);
319 TUNABLE_LONG_FETCH(
"kern.ipc.maxpipekva", &
maxpipekva);
322 if (
maxpipekva > (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) / 64)
323 maxpipekva = (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) /
void bintime(struct bintime *bt)
CTASSERT(nitems(vm_guest_sysctl_names) - 1==VM_LAST)
static int sysctl_kern_vm_guest(SYSCTL_HANDLER_ARGS)
SYSCTL_LONG(_kern, OID_AUTO, maxswzone, CTLFLAG_RDTUN|CTLFLAG_NOFETCH, &maxswzone, 0, "Maximum memory for swap metadata")
SYSCTL_PROC(_kern, OID_AUTO, vm_guest, CTLFLAG_RD|CTLTYPE_STRING|CTLFLAG_MPSAFE, NULL, 0, sysctl_kern_vm_guest, "A", "Virtual machine guest detected?")
static const char *const vm_guest_sysctl_names[]
void init_param2(long physpages)
SYSCTL_ULONG(_kern, OID_AUTO, maxtsiz, CTLFLAG_RWTUN|CTLFLAG_NOFETCH, &maxtsiz, 0, "Maximum text size")
SYSCTL_INT(_kern, OID_AUTO, hz, CTLFLAG_RDTUN|CTLFLAG_NOFETCH, &hz, 0, "Number of clock ticks per second")
u_int vn_lock_pair_pause_max