1.\"	$MirOS: src/sbin/sysctl/sysctl.8,v 1.4 2006/10/18 00:52:25 tg Exp $
2.\"	$OpenBSD: sysctl.8,v 1.126 2005/05/04 05:12:53 jaredy Exp $
3.\"	$NetBSD: sysctl.8,v 1.4 1995/09/30 07:12:49 thorpej Exp $
4.\"
5.\" Copyright (c) 1993
6.\"	The Regents of the University of California.  All rights reserved.
7.\"
8.\" Redistribution and use in source and binary forms, with or without
9.\" modification, are permitted provided that the following conditions
10.\" are met:
11.\" 1. Redistributions of source code must retain the above copyright
12.\"    notice, this list of conditions and the following disclaimer.
13.\" 2. Redistributions in binary form must reproduce the above copyright
14.\"    notice, this list of conditions and the following disclaimer in the
15.\"    documentation and/or other materials provided with the distribution.
16.\" 3. Neither the name of the University nor the names of its contributors
17.\"    may be used to endorse or promote products derived from this software
18.\"    without specific prior written permission.
19.\"
20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30.\" SUCH DAMAGE.
31.\"
32.\"	@(#)sysctl.8	8.2 (Berkeley) 5/9/95
33.\"
34.Dd December 18, 2002
35.Dt SYSCTL 8
36.Os
37.Sh NAME
38.Nm sysctl
39.Nd get or set kernel state
40.Sh SYNOPSIS
41.Nm sysctl
42.Op Fl n
43.Ar variable ...
44.Nm sysctl
45.Op Fl nqw
46.Ar variable Ns = Ns Ar value ...
47.Nm sysctl
48.Op Fl n
49.Fl Aa
50.Sh DESCRIPTION
51The
52.Nm
53utility retrieves kernel state and allows processes with
54appropriate privilege to set kernel state.
55The state to be retrieved or set is described using a
56.Dq Management Information Base
57.Pq MIB
58style name, described as a dotted set of components.
59.Pp
60When setting a variable,
61the MIB name should be followed by an equal sign and the new value.
62Variables are set implicitly using the
63.Ar variable Ns = Ns Ar value
64syntax, or explicitly with the
65.Fl w
66option.
67Both forms are identical.
68.Pp
69The options are as follows:
70.Bl -tag -width xxx
71.It Fl A
72List all the known MIB names including tables.
73Those with string or integer values will be printed as with the
74.Fl a
75flag; for the table values, the name of the utility to retrieve them is given.
76.It Fl a
77List all the currently available string or integer values.
78.It Fl n
79Suppress printing of the field name, only output the field value.
80Useful for setting shell variables.
81For example, to set the psize shell variable to the pagesize of the hardware:
82.Pp
83.Dl # set psize=`sysctl -n hw.pagesize`
84.Pp
85.It Fl q
86Suppress all output when setting a variable.
87This option overrides the behaviour of
88.Fl n .
89.It Fl w
90Set a variable.
91It must be followed by a
92.Ar variable Ns = Ns Ar value
93assignment.
94The
95.Fl w
96flag is optional when setting a variable.
97.El
98.Pp
99The information available from
100.Nm
101consists of integers, strings, and tables.
102The tabular information can only be retrieved by special
103purpose programs such as
104.Xr ps 1 ,
105.Xr systat 1 ,
106and
107.Xr netstat 1 .
108The string and integer information is summarized below.
109For a detailed description of these variables, see
110.Xr sysctl 3 .
111The changeable column indicates whether a process with appropriate
112privilege can change the value.
113.Pp
114Note:
115not all of the variables are relevant to all architectures.
116.Bl -column net.inet.ip.ipsec-expire-acquirexxxx integerxxx
117.It Sy Name	Type	Changeable
118.It kern.ostype	string	no
119.It kern.osrelease	string	no
120.It kern.osrevision	integer	no
121.It kern.version	string	no
122.It kern.maxvnodes	integer	yes
123.It kern.maxproc	integer	yes
124.It kern.maxfiles	integer	yes
125.It kern.argmax	integer	no
126.It kern.securelevel	integer	raise only
127.It kern.hostname	string	yes
128.It kern.hostid	u_int	yes
129.It kern.clockrate	struct	no
130.It kern.posix1version	integer	no
131.It kern.ngroups	integer	no
132.It kern.job_control	integer	no
133.It kern.saved_ids	integer	no
134.It kern.boottime	struct	no
135.It kern.domainname	string	yes
136.It kern.maxpartitions	integer	no
137.It kern.rawpartition	integer	no
138.It kern.osversion	string	no
139.It kern.somaxconn	integer	yes
140.It kern.sominconn	integer	yes
141.It kern.usermount	integer	yes
142.It kern.random	struct	no
143.It kern.nosuidcoredump	integer	yes
144.It kern.fsync	integer	no
145.It kern.sysvmsg	integer	no
146.It kern.sysvsem	integer	no
147.It kern.sysvshm	integer	no
148.It kern.arandom	u_int	no
149.It kern.msgbufsize	integer	no
150.It kern.malloc.buckets	string	no
151.It kern.malloc.bucket.<sz>	string	no
152.It kern.malloc.kmemnames	string	no
153.It kern.malloc.kmemstat.<name>	string	no
154.It kern.cp_time	struct	no
155.It kern.nchstats	struct	no
156.It kern.forkstat	struct	no
157.It kern.nselcoll	integer	no
158.It kern.tty.tk_nin	int64_t	no
159.It kern.tty.tk_nout	int64_t	no
160.It kern.tty.tk_rawcc	int64_t	no
161.It kern.tty.tk_cancc	int64_t	no
162.It kern.tty.ttyinfo	struct	no
163.It kern.tty.maxptys	integer	yes
164.It kern.tty.nptys	integer	no
165.It kern.ccpu	u_int	no
166.It kern.fscale	integer	no
167.It kern.nprocs	integer	no
168.It kern.stackgap_random	integer	yes
169.It kern.usercrypto	integer	yes
170.It kern.cryptodevallowsoft	integer	yes
171.It kern.splassert	integer	yes
172.It kern.nfiles	integer	no
173.It kern.ttycount	integer	no
174.It kern.numvnodes	integer	no
175.It kern.userasymcrypto	integer	yes
176.It kern.seminfo.semmni	integer	yes
177.It kern.seminfo.semmns	integer	yes
178.It kern.seminfo.semmnu	integer	yes
179.It kern.seminfo.semmsl	integer	yes
180.It kern.seminfo.semopm	integer	yes
181.It kern.seminfo.semume	integer	no
182.It kern.seminfo.semusz	integer	no
183.It kern.seminfo.semvmx	integer	no
184.It kern.seminfo.semaem	integer	no
185.It kern.shminfo.shmmax	integer	yes
186.It kern.shminfo.shmmin	integer	yes
187.It kern.shminfo.shmmni	integer	yes
188.It kern.shminfo.shmseg	integer	yes
189.It kern.shminfo.shmall	integer	yes
190.It kern.watchdog.period	integer	yes
191.It kern.watchdog.auto	integer	yes
192.It kern.emul.nemuls	integer	no
193.It kern.emul.other	integer	yes
194.It kern.emul_uname	string	yes
195.It kern.maxclusters	integer	yes
196.It kern.timecounter.tick	integer	no
197.It kern.timecounter.timestepwarnings	integer	no
198.It kern.timecounter.hardware	string	yes
199.It kern.timecounter.choice	string	no
200.It vm.vmmeter	struct	no
201.It vm.loadavg	struct	no
202.It vm.psstrings	struct	no
203.It vm.uvmexp	struct	no
204.It vm.swapencrypt.enable	integer	yes
205.It vm.swapencrypt.keyscreated	integer	no
206.It vm.swapencrypt.keysdeleted	integer	no
207.It vm.nkmempages	integer	no
208.It vm.anonmin	integer	yes
209.It vm.vtextmin	integer	yes
210.It vm.vnodemin	integer	yes
211.It vm.maxslp	integer	no
212.It vm.uspace	integer	no
213.It fs.posix.setuid	integer	yes
214.It net.inet.ip.forwarding	integer	yes
215.It net.inet.ip.redirect	integer	yes
216.It net.inet.ip.ttl	integer	yes
217.\" .It net.inet.ip.mtu	integer	yes
218.It net.inet.ip.sourceroute	integer	yes
219.It net.inet.ip.directed-broadcast	integer	yes
220.It net.inet.ip.portfirst	integer	yes
221.It net.inet.ip.portlast	integer	yes
222.It net.inet.ip.porthifirst	integer	yes
223.It net.inet.ip.porthilast	integer	yes
224.It net.inet.ip.maxqueue	integer	yes
225.It net.inet.ip.encdebug	integer	yes
226.It net.inet.ip.ipsec-expire-acquire	integer	yes
227.It net.inet.ip.ipsec-invalid-life	integer	yes
228.It net.inet.ip.ipsec-pfs	integer	yes
229.It net.inet.ip.ipsec-soft-allocs	integer	yes
230.It net.inet.ip.ipsec-allocs	integer	yes
231.It net.inet.ip.ipsec-soft-bytes	integer	yes
232.It net.inet.ip.ipsec-bytes	integer	yes
233.It net.inet.ip.ipsec-timeout	integer	yes
234.It net.inet.ip.ipsec-soft-timeout	integer	yes
235.It net.inet.ip.ipsec-soft-firstuse	integer	yes
236.It net.inet.ip.ipsec-firstuse	integer	yes
237.It net.inet.ip.ipsec-enc-alg	string	yes
238.It net.inet.ip.ipsec-auth-alg	string	yes
239.It net.inet.ip.mtudisc	integer	yes
240.It net.inet.ip.mtudisctimeout	integer	yes
241.It net.inet.ip.ipsec-comp-alg	string	yes
242.It net.inet.icmp.maskrepl	integer	yes
243.It net.inet.icmp.bmcastecho	integer	yes
244.It net.inet.icmp.errppslimit	integer	yes
245.It net.inet.icmp.rediraccept	integer	yes
246.It net.inet.icmp.redirtimeout	integer	yes
247.It net.inet.icmp.tstamprepl	integer	yes
248.It net.inet.ipip.allow	integer	yes
249.It net.inet.tcp.rfc1323	integer	yes
250.It net.inet.tcp.keepinittime	integer	yes
251.It net.inet.tcp.keepidle	integer	yes
252.It net.inet.tcp.keepintvl	integer	yes
253.It net.inet.tcp.slowhz	integer	no
254.It net.inet.tcp.baddynamic	array	yes
255.It net.inet.tcp.recvspace	integer	yes
256.It net.inet.tcp.sendspace	integer	yes
257.It net.inet.tcp.sack	integer	yes
258.It net.inet.tcp.mssdflt	integer	yes
259.It net.inet.tcp.rstppslimit	integer	yes
260.It net.inet.tcp.ackonpush	integer	yes
261.It net.inet.tcp.ecn	integer	yes
262.It net.inet.tcp.syncachelimit	integer	yes
263.It net.inet.tcp.synbucketlimit	integer	yes
264.It net.inet.tcp.rfc3390	integer	yes
265.It net.inet.tcp.reasslimit	integer	yes
266.It net.inet.udp.checksum	integer	yes
267.It net.inet.udp.baddynamic	array	yes
268.It net.inet.udp.recvspace	integer	yes
269.It net.inet.udp.sendspace	integer	yes
270.It net.inet.gre.allow	integer	yes
271.It net.inet.gre.wccp	integer	yes
272.It net.inet.esp.enable	integer	yes
273.It net.inet.esp.udpencap	integer	yes
274.It net.inet.esp.udpencap_port	integer	yes
275.It net.inet.ah.enable	integer	yes
276.It net.inet.mobileip.allow	integer	yes
277.It net.inet.etherip.allow	integer	yes
278.It net.inet.ipcomp.enable	integer	yes
279.It net.inet.carp.allow	integer	yes
280.It net.inet.carp.preempt	integer	yes
281.It net.inet.carp.log	integer	yes
282.It net.inet.carp.arpbalance	integer	yes
283.It net.inet6.ip6.forwarding	integer	yes
284.It net.inet6.ip6.redirect	integer	yes
285.It net.inet6.ip6.hlim	integer	yes
286.It net.inet6.ip6.maxfragpackets	integer	yes
287.It net.inet6.ip6.accept_rtadv	integer	yes
288.It net.inet6.ip6.keepfaith	integer	yes
289.It net.inet6.ip6.log_interval	integer	yes
290.It net.inet6.ip6.hdrnestlimit	integer	yes
291.It net.inet6.ip6.dad_count	integer	yes
292.It net.inet6.ip6.auto_flowlabel	integer	yes
293.It net.inet6.ip6.defmcasthlim	integer	yes
294.It net.inet6.ip6.kame_version	string	no
295.It net.inet6.ip6.use_deprecated	integer	yes
296.It net.inet6.ip6.rr_prune	integer	yes
297.It net.inet6.ip6.v6only	integer	no
298.It net.inet6.ip6.maxfrags	integer	yes
299.It net.inet6.icmp6.rediraccept	integer	yes
300.It net.inet6.icmp6.redirtimeout	integer	yes
301.It net.inet6.icmp6.nd6_prune	integer	yes
302.It net.inet6.icmp6.nd6_delay	integer	yes
303.It net.inet6.icmp6.nd6_umaxtries	integer	yes
304.It net.inet6.icmp6.nd6_mmaxtries	integer	yes
305.It net.inet6.icmp6.nd6_useloopback	integer	yes
306.It net.inet6.icmp6.nodeinfo	integer	yes
307.It net.inet6.icmp6.errppslimit	integer	yes
308.It net.inet6.icmp6.nd6_maxnudhint	integer	yes
309.It net.inet6.icmp6.mtudisc_hiwat	integer	yes
310.It net.inet6.icmp6.mtudisc_lowat	integer	yes
311.It net.inet6.icmp6.nd6_debug	integer	yes
312.It net.ipx.ipx.checksum	integer	yes
313.It net.ipx.ipx.forwarding	integer	yes
314.It net.ipx.ipx.netbios	integer	yes
315.It net.ipx.ipx.recvspace	integer	yes
316.It net.ipx.ipx.sendspace	integer	yes
317.It debug.syncprt	integer	yes
318.It debug.busyprt	integer	yes
319.It debug.doclusterread	integer	yes
320.It debug.doclusterwrite	integer	yes
321.It debug.doreallocblks	integer	yes
322.It debug.doasyncfree	integer	yes
323.It debug.prtrealloc	integer	yes
324.It hw.machine	string	no
325.It hw.model	string	no
326.It hw.ncpu	integer	no
327.It hw.byteorder	integer	no
328.It hw.physmem	integer	no
329.It hw.usermem	integer	no
330.It hw.pagesize	integer	no
331.It hw.diskstats	struct	no
332.It hw.disknames	string	no
333.It hw.diskcount	integer	no
334.It hw.sensors	struct	no
335.It hw.cpuspeed	integer	no
336.It hw.setperf	integer	yes
337.It machdep.console_device	dev_t	no
338.It machdep.unaligned_print	integer	yes
339.It machdep.unaligned_fix	integer	yes
340.It machdep.unaligned_sigbus	integer	yes
341.It machdep.apmwarn	integer	yes
342.It machdep.apmhalt	integer	yes
343.It machdep.kbdreset	integer	yes
344.It machdep.userldt	integer	yes
345.It machdep.osxsfr	integer	no
346.It machdep.sse	integer	no
347.It machdep.sse2	integer	no
348.It machdep.xcrypt	integer	no
349.It machdep.allowaperture	integer	yes
350.It machdep.led_blink	integer	yes
351.It machdep.ceccerrs	integer	no
352.It machdep.cecclast	quad	no
353.It machdep.apvreset	integer	yes
354.It user.cs_path	string	no
355.It user.bc_base_max	integer	no
356.It user.bc_dim_max	integer	no
357.It user.bc_scale_max	integer	no
358.It user.bc_string_max	integer	no
359.It user.coll_weights_max	integer	no
360.It user.expr_nest_max	integer	no
361.It user.line_max	integer	no
362.It user.re_dup_max	integer	no
363.It user.posix2_version	integer	no
364.It user.posix2_c_bind	integer	no
365.It user.posix2_c_dev	integer	no
366.It user.posix2_char_term	integer	no
367.It user.posix2_fort_dev	integer	no
368.It user.posix2_fort_run	integer	no
369.It user.posix2_localedef	integer	no
370.It user.posix2_sw_dev	integer	no
371.It user.posix2_upe	integer	no
372.It user.stream_max	integer	no
373.It user.tzname_max	integer	no
374.It ddb.radix	integer	yes
375.It ddb.max_width	integer	yes
376.It ddb.max_line	integer	yes
377.It ddb.tab_stop_width	integer	yes
378.It ddb.panic	integer	yes
379.It ddb.console	integer	yes
380.It ddb.log	integer	yes
381.It ddb.crash	integer	yes
382.It vfs.mounts.*	struct	no
383.It vfs.ffs.doclusterread	integer	yes
384.It vfs.ffs.doclusterwrite	integer	yes
385.It vfs.ffs.doreallocblks	integer	yes
386.It vfs.ffs.doasyncfree	integer	yes
387.It vfs.ffs.max_softdeps	integer	yes
388.It vfs.ffs.sd_tickdelay	integer	yes
389.It vfs.ffs.sd_worklist_push	integer	no
390.It vfs.ffs.sd_blk_limit_push	integer	no
391.It vfs.ffs.sd_ino_limit_push	integer	no
392.It vfs.ffs.sd_blk_limit_hit	integer	no
393.It vfs.ffs.sd_ino_limit_hit	integer	no
394.It vfs.ffs.sd_sync_limit_hit	integer	no
395.It vfs.ffs.sd_indir_blk_ptrs	integer	no
396.It vfs.ffs.sd_inode_bitmap	integer	no
397.It vfs.ffs.sd_direct_blk_ptrs	integer	no
398.It vfs.ffs.sd_dir_entry	integer	no
399.It vfs.ffs.dirhash_dirsize	integer	yes
400.It vfs.ffs.dirhash_maxmem	integer	yes
401.It vfs.ffs.dirhash_mem	integer	no
402.It vfs.nfs.iothreads	integer	yes
403.El
404.Pp
405The
406.Nm
407program can get or set debugging variables
408that have been identified for its display.
409This information can be obtained by using the command:
410.Pp
411.Dl $ sysctl debug
412.Pp
413In addition,
414.Nm
415can extract information about the filesystems that have been compiled
416into the running system.
417This information can be obtained by using the command:
418.Pp
419.Dl $ sysctl vfs.mounts
420.Pp
421By default, only filesystems that are actively being used are listed.
422Use of the
423.Fl A
424flag lists all the filesystems compiled into the running kernel.
425.Sh FILES
426.Bl -tag -width <uvm/uvm_swap_encrypt.h> -compact
427.It Aq Pa sys/sysctl.h
428definitions for top level identifiers, second level kernel and hardware
429identifiers, and user level identifiers
430.It Aq Pa dev/rndvar.h
431definitions for
432.Xr random 4
433device's statistics structure
434.It Aq Pa sys/socket.h
435definitions for second level network identifiers
436.It Aq Pa uvm/uvm_param.h
437definitions for second level virtual memory identifiers
438.It Aq Pa uvm/uvm_swap_encrypt.h
439definitions for third level virtual memory identifiers
440.It Aq Pa netinet/in.h
441definitions for third level IPv4/v6 identifiers and
442fourth level IPv4/v6 identifiers
443.It Aq Pa netinet/icmp_var.h
444definitions for fourth level ICMP identifiers
445.It Aq Pa netinet6/icmp6.h
446definitions for fourth level ICMPv6 identifiers
447.It Aq Pa netinet/tcp_var.h
448definitions for fourth level TCP identifiers
449.It Aq Pa netinet/udp_var.h
450definitions for fourth level UDP identifiers
451.It Aq Pa netipx/ipx_var.h
452definitions for third level IPX identifiers and
453fourth level IPX identifiers
454.It Aq Pa ddb/db_var.h
455definitions for second level ddb identifiers
456.It Aq Pa sys/mount.h
457definitions for second level vfs identifiers
458.It Aq Pa nfs/nfs.h
459definitions for third level NFS identifiers
460.It Aq Pa ufs/ffs/ffs_extern.h
461definitions for third level FFS identifiers
462.El
463.Sh EXAMPLES
464To retrieve the maximum number of processes allowed
465in the system:
466.Pp
467.Dl $ sysctl kern.maxproc
468.Pp
469To set the maximum number of processes allowed
470in the system to 1000:
471.Pp
472.Dl # sysctl kern.maxproc=1000
473.Pp
474To retrieve information about the system clock rate:
475.Pp
476.Dl $ sysctl kern.clockrate
477.Pp
478To retrieve information about the load average history:
479.Pp
480.Dl $ sysctl vm.loadavg
481.Pp
482To make the
483.Xr chown 2
484system call use traditional BSD semantics (don't clear setuid/setgid bits):
485.Pp
486.Dl # sysctl fs.posix.setuid=0
487.Pp
488To set the list of reserved TCP ports that should not be allocated
489by the kernel dynamically:
490.Pp
491.Dl # sysctl net.inet.tcp.baddynamic=749,750,751,760,761,871
492.Pp
493This can be used to keep daemons
494from stealing a specific port that another program needs to function.
495List elements may be separated by commas and/or whitespace.
496.Pp
497It is also possible to add or remove ports from the current list:
498.Bd -literal -offset indent
499# sysctl net.inet.tcp.baddynamic=+748
500# sysctl net.inet.tcp.baddynamic=-871
501.Ed
502.Pp
503To adjust the number of kernel
504.Nm nfsio
505threads used to service asynchronous
506I/O requests on an NFS client machine:
507.Pp
508.Dl # sysctl vfs.nfs.iothreads=4
509.Pp
510The default is 4; 20 is the maximum.
511See
512.Xr nfssvc 2
513and
514.Xr nfsd 8
515for further discussion.
516.Pp
517To set the amount of shared memory available in the system and
518the maximum number of shared memory segments:
519.Bd -literal -offset indent
520# sysctl kern.shminfo.shmmax=33554432
521# sysctl kern.shminfo.shmseg=32
522.Ed
523.Sh SEE ALSO
524.Xr sysctl 3 ,
525.Xr sysctl.conf 5
526.Sh HISTORY
527.Nm sysctl
528first appeared in
529.Bx 4.4 .
530