37 #include <sys/cdefs.h>
40 #include "opt_param.h"
41 #include "opt_msgbuf.h"
42 #include "opt_maxusers.h"
44 #include <sys/param.h>
45 #include <sys/systm.h>
46 #include <sys/kernel.h>
47 #include <sys/limits.h>
48 #include <sys/msgbuf.h>
49 #include <sys/sysctl.h>
53 #include <vm/vm_param.h>
61 # if defined(__mips__) || defined(__arm__)
74 #define NPROC (20 + 16 * maxusers)
79 #define MAXFILES (maxproc * 2)
110 "Number of clock ticks per second");
112 "Number of pre-allocated timer events");
114 "Number of buffers in the buffer cache");
116 "Number of swap buffers");
118 "Size of the kernel message buffer");
120 "Maximum memory for swap metadata");
122 "Maximum value of vfs.maxbufspace");
125 "Maximum number of transient BIOs mappings");
127 "Maximum text size");
129 "Initial data size limit");
131 "Maximum data size");
133 "Initial stack size limit");
135 "Maximum stack size");
137 "Amount to grow stack on a stack fault");
140 "Virtual machine guest detected? (none|generic|xen)");
172 "VMware Virtual Platform",
175 "Parallels Virtual Platform",
190 sysenv =
getenv(
"smbios.bios.vendor");
191 if (sysenv != NULL) {
195 return (VM_GUEST_VM);
199 sysenv =
getenv(
"smbios.system.product");
200 if (sysenv != NULL) {
204 return (VM_GUEST_VM);
208 return (VM_GUEST_NO);
224 TUNABLE_INT_FETCH(
"kern.hz", &
hz);
229 #ifdef VM_SWZONE_SIZE_MAX
232 TUNABLE_LONG_FETCH(
"kern.maxswzone", &
maxswzone);
233 #ifdef VM_BCACHE_SIZE_MAX
236 TUNABLE_LONG_FETCH(
"kern.maxbcache", &
maxbcache);
238 TUNABLE_INT_FETCH(
"kern.msgbufsize", &
msgbufsize);
241 TUNABLE_ULONG_FETCH(
"kern.maxtsiz", &
maxtsiz);
243 TUNABLE_ULONG_FETCH(
"kern.dfldsiz", &
dfldsiz);
245 TUNABLE_ULONG_FETCH(
"kern.maxdsiz", &
maxdsiz);
247 TUNABLE_ULONG_FETCH(
"kern.dflssiz", &
dflssiz);
249 TUNABLE_ULONG_FETCH(
"kern.maxssiz", &
maxssiz);
251 TUNABLE_ULONG_FETCH(
"kern.sgrowsiz", &
sgrowsiz);
267 TUNABLE_INT_FETCH(
"kern.pid_max", &
pid_max);
273 TUNABLE_INT_FETCH(
"vfs.unmapped_buf_allowed", &unmapped_buf_allowed);
285 TUNABLE_INT_FETCH(
"kern.maxusers", &
maxusers);
287 maxusers = physpages / (2 * 1024 * 1024 / PAGE_SIZE);
290 #ifdef VM_MAX_AUTOTUNE_MAXUSERS
291 if (
maxusers > VM_MAX_AUTOTUNE_MAXUSERS)
292 maxusers = VM_MAX_AUTOTUNE_MAXUSERS;
309 TUNABLE_INT_FETCH(
"kern.maxproc", &
maxproc);
310 if (
maxproc > (physpages / 12))
320 TUNABLE_INT_FETCH(
"kern.maxfiles", &
maxfiles);
329 TUNABLE_INT_FETCH(
"kern.nbuf", &
nbuf);
339 TUNABLE_INT_FETCH(
"kern.ncallout", &
ncallout);
346 TUNABLE_LONG_FETCH(
"kern.ipc.maxpipekva", &
maxpipekva);
349 if (
maxpipekva > (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) / 64)
350 maxpipekva = (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) /
static const char *const vm_pnames[]
SYSCTL_LONG(_kern, OID_AUTO, maxswzone, CTLFLAG_RDTUN,&maxswzone, 0,"Maximum memory for swap metadata")
SYSCTL_ULONG(_kern, OID_AUTO, maxtsiz, CTLFLAG_RW|CTLFLAG_TUN,&maxtsiz, 0,"Maximum text size")
static enum VM_GUEST detect_virtual(void)
SYSCTL_PROC(_kern, OID_AUTO, vm_guest, CTLFLAG_RD|CTLTYPE_STRING, NULL, 0, sysctl_kern_vm_guest,"A","Virtual machine guest detected? (none|generic|xen)")
SYSCTL_INT(_kern, OID_AUTO, hz, CTLFLAG_RDTUN,&hz, 0,"Number of clock ticks per second")
static const char *const vm_bnames[]
char * getenv(const char *name)
void init_param2(long physpages)
static const char *const vm_guest_sysctl_names[]
static int sysctl_kern_vm_guest(SYSCTL_HANDLER_ARGS)