xref: /freebsd/share/man/man4/geom_zero.4 (revision 80ca573fc4e65db6f17cb476b6e857fe06b2e3d8)
139acb7fdSMateusz Piotrowski.\"
239acb7fdSMateusz Piotrowski.\" Copyright (c) 2019 Greg White <gkwhite@gmail.com>. All rights reserved.
339acb7fdSMateusz Piotrowski.\" Copyright (c) 2025 Mateusz Piotrowski <0mp@FreeBSD.org>
439acb7fdSMateusz Piotrowski.\"
539acb7fdSMateusz Piotrowski.\" SPDX-License-Identifier: BSD-2-Clause
639acb7fdSMateusz Piotrowski.\"
739acb7fdSMateusz Piotrowski.Dd November 9, 2025
839acb7fdSMateusz Piotrowski.Dt GEOM_ZERO 4
939acb7fdSMateusz Piotrowski.Os
1039acb7fdSMateusz Piotrowski.Sh NAME
1139acb7fdSMateusz Piotrowski.Nm gzero ,
1239acb7fdSMateusz Piotrowski.Nm geom_zero
1339acb7fdSMateusz Piotrowski.Nd GEOM-based zero disk/block device
1439acb7fdSMateusz Piotrowski.Sh SYNOPSIS
1539acb7fdSMateusz Piotrowski.Cd "options GEOM_ZERO"
1639acb7fdSMateusz Piotrowski.Pp
1739acb7fdSMateusz PiotrowskiIn
1839acb7fdSMateusz Piotrowski.Xr loader.conf 5
1939acb7fdSMateusz Piotrowskior
2039acb7fdSMateusz Piotrowski.Xr sysctl.conf 5 :
2139acb7fdSMateusz Piotrowski.Cd kern.geom.zero.byte
2239acb7fdSMateusz Piotrowski.Cd kern.geom.zero.clear
2339acb7fdSMateusz Piotrowski.Sh DESCRIPTION
2439acb7fdSMateusz Piotrowski.Nm
2539acb7fdSMateusz Piotrowskiis a
2639acb7fdSMateusz Piotrowski.Xr GEOM 4
2739acb7fdSMateusz Piotrowskidevice simulating a one-exabyte disk.
2839acb7fdSMateusz PiotrowskiIt throws away any data written to it,
2939acb7fdSMateusz Piotrowskiand returns the value of
3039acb7fdSMateusz Piotrowski.Va kern.geom.zero.byte
3139acb7fdSMateusz Piotrowskifor every byte read from it.
3239acb7fdSMateusz Piotrowski.Pp
3339acb7fdSMateusz Piotrowski.Nm
3439acb7fdSMateusz Piotrowskidiffers from
3539acb7fdSMateusz Piotrowski.Xr zero 4 ,
3639acb7fdSMateusz Piotrowskiwhich is a regular character device and has an infinite length,
3739acb7fdSMateusz Piotrowskiwhile
3839acb7fdSMateusz Piotrowski.Pa /dev/gzero
3939acb7fdSMateusz Piotrowskiis a
4039acb7fdSMateusz Piotrowski.Xr GEOM 4
4139acb7fdSMateusz Piotrowskiprovider of large, but limited, size.
4239acb7fdSMateusz Piotrowski.Pp
4339acb7fdSMateusz PiotrowskiConsult
4439acb7fdSMateusz Piotrowski.Xr geom 8
4539acb7fdSMateusz Piotrowskifor instructions on how to use the supported commands of the
4639acb7fdSMateusz Piotrowski.Xr GEOM 4
4739acb7fdSMateusz Piotrowski.Nm ZERO
4839acb7fdSMateusz Piotrowskiclass.
4939acb7fdSMateusz Piotrowski.Pp
5039acb7fdSMateusz Piotrowski.Nm
5139acb7fdSMateusz Piotrowskiis useful for benchmarking performance of GEOM and GEOM classes
5239acb7fdSMateusz Piotrowskiwhere compression of the data does not affect the results
5339acb7fdSMateusz Piotrowski.Po blocks from
5439acb7fdSMateusz Piotrowski.Pa /dev/gzero
5539acb7fdSMateusz Piotrowskicompress exceptionally well
5639acb7fdSMateusz Piotrowski.Pc .
5739acb7fdSMateusz PiotrowskiExamples of such benchmarks include
5839acb7fdSMateusz Piotrowskicomparing the speed of two disk encryption algorithms and
5939acb7fdSMateusz Piotrowskicomparing a hardware versus software implementation
6039acb7fdSMateusz Piotrowskiof a single encryption algorithm.
6139acb7fdSMateusz Piotrowski.Sh MIB VARIABLES
6239acb7fdSMateusz PiotrowskiThe following variables are available as both
6339acb7fdSMateusz Piotrowski.Xr sysctl 8
6439acb7fdSMateusz Piotrowskivariables and
6539acb7fdSMateusz Piotrowski.Xr loader 8
6639acb7fdSMateusz Piotrowskitunables:
6739acb7fdSMateusz Piotrowski.Bl -tag -width "kern.geom.zero.clear"
6839acb7fdSMateusz Piotrowski.It Va kern.geom.zero.byte
6939acb7fdSMateusz PiotrowskiThis variable sets the fill byte of the
7039acb7fdSMateusz Piotrowski.Nm
7139acb7fdSMateusz Piotrowskidevice.
7239acb7fdSMateusz PiotrowskiDefault:
7339acb7fdSMateusz Piotrowski.Ql 0 .
7439acb7fdSMateusz Piotrowski.It Va kern.geom.zero.clear
7539acb7fdSMateusz PiotrowskiThis variable controls the clearing of the read data buffer.
7639acb7fdSMateusz PiotrowskiIf set to
7739acb7fdSMateusz Piotrowski.Ql 0 ,
7839acb7fdSMateusz Piotrowski.Nm
7939acb7fdSMateusz Piotrowskiwill not copy any data into the read data buffers
8039acb7fdSMateusz Piotrowskiand just return the read data buffers as they are without modifying them.
81*80ca573fSMaxim KonovalovIn particular, it will not fill the read buffer with the value of
8239acb7fdSMateusz Piotrowski.Va kern.geom.zero.byte .
8339acb7fdSMateusz PiotrowskiThis is useful for read benchmarking to reduce the measurement noise
8439acb7fdSMateusz Piotrowskicaused by extra memory initialization.
8539acb7fdSMateusz PiotrowskiDefault:
8639acb7fdSMateusz Piotrowski.Ql 1 .
8739acb7fdSMateusz Piotrowski.El
8839acb7fdSMateusz Piotrowski.Sh FILES
8939acb7fdSMateusz Piotrowski.Bl -tag -width /dev/gzero
9039acb7fdSMateusz Piotrowski.It Pa /dev/gzero
9139acb7fdSMateusz PiotrowskiThe
9239acb7fdSMateusz Piotrowski.Nm
9339acb7fdSMateusz Piotrowskidevice.
9439acb7fdSMateusz Piotrowski.El
9539acb7fdSMateusz Piotrowski.Sh EXAMPLES
9639acb7fdSMateusz PiotrowskiCreate the
9739acb7fdSMateusz Piotrowski.Pa /dev/gzero
9839acb7fdSMateusz Piotrowskidevice by loading the
9939acb7fdSMateusz Piotrowski.Nm geom_zero
10039acb7fdSMateusz Piotrowskikernel module:
10139acb7fdSMateusz Piotrowski.Bd -literal -offset indent
10239acb7fdSMateusz Piotrowski# geom zero load
10339acb7fdSMateusz Piotrowski.Ed
10439acb7fdSMateusz Piotrowski.Pp
10539acb7fdSMateusz PiotrowskiShow information about the
10639acb7fdSMateusz Piotrowski.Nm
10739acb7fdSMateusz Piotrowskidevice:
10839acb7fdSMateusz Piotrowski.Bd -literal -offset indent
10939acb7fdSMateusz Piotrowski# geom zero list
11039acb7fdSMateusz PiotrowskiGeom name: gzero
11139acb7fdSMateusz PiotrowskiProviders:
11239acb7fdSMateusz Piotrowski1. Name: gzero
11339acb7fdSMateusz Piotrowski   Mediasize: 1152921504606846976 (1.0E)
11439acb7fdSMateusz Piotrowski   Sectorsize: 512
11539acb7fdSMateusz Piotrowski   Mode: r0w0egzero0
11639acb7fdSMateusz Piotrowski.Ed
11739acb7fdSMateusz Piotrowski.Pp
11839acb7fdSMateusz PiotrowskiSet the fill byte of the
11939acb7fdSMateusz Piotrowski.Nm
12039acb7fdSMateusz Piotrowskidevice to 70
12139acb7fdSMateusz Piotrowski.Po decimal for letter
12239acb7fdSMateusz Piotrowski.Dq F
12339acb7fdSMateusz Piotrowskiin
12439acb7fdSMateusz Piotrowski.Xr ascii 7
12539acb7fdSMateusz Piotrowski.Pc :
12639acb7fdSMateusz Piotrowski.Bd -literal -offset indent
12739acb7fdSMateusz Piotrowski# sysctl kern.geom.zero.byte=70
12839acb7fdSMateusz Piotrowskikern.geom.zero.byte: 0 -> 70
12939acb7fdSMateusz Piotrowski# head -c 1 /dev/gzero
13039acb7fdSMateusz PiotrowskiF
13139acb7fdSMateusz Piotrowski.Ed
13239acb7fdSMateusz Piotrowski.Pp
13339acb7fdSMateusz PiotrowskiBenchmark read and write throughput of
13439acb7fdSMateusz Piotrowski.Xr geli 8 Ap s
13539acb7fdSMateusz Piotrowskidefault encryption algorithm with a 4-KiB sector size:
13639acb7fdSMateusz Piotrowski.Bd -literal -offset indent
13739acb7fdSMateusz Piotrowski# geom zero load
13839acb7fdSMateusz Piotrowski# geli onetime -s 4096 gzero
13939acb7fdSMateusz Piotrowski# sysctl kern.geom.zero.clear=0
14039acb7fdSMateusz Piotrowski# dd if=/dev/gzero.eli of=/dev/zero bs=4k count=$((1024 * 256))
14139acb7fdSMateusz Piotrowski262144+0 records in
14239acb7fdSMateusz Piotrowski262144+0 records out
14339acb7fdSMateusz Piotrowski1073741824 bytes transferred in 1.258195 secs (853398307 bytes/sec)
14439acb7fdSMateusz Piotrowski# dd if=/dev/zero of=/dev/gzero.eli bs=4k count=$((1024 * 256))
14539acb7fdSMateusz Piotrowski262144+0 records in
14639acb7fdSMateusz Piotrowski262144+0 records out
14739acb7fdSMateusz Piotrowski1073741824 bytes transferred in 1.663118 secs (645619658 bytes/sec)
14839acb7fdSMateusz Piotrowski.Ed
14939acb7fdSMateusz Piotrowski.Sh SEE ALSO
15039acb7fdSMateusz Piotrowski.Xr GEOM 4 ,
15139acb7fdSMateusz Piotrowski.Xr zero 4 ,
15239acb7fdSMateusz Piotrowski.Xr geom 8 ,
15339acb7fdSMateusz Piotrowski.Xr sysctl 8 ,
15439acb7fdSMateusz Piotrowski.Xr bio 9
15539acb7fdSMateusz Piotrowski.Sh HISTORY
15639acb7fdSMateusz PiotrowskiA
15739acb7fdSMateusz Piotrowski.Nm
15839acb7fdSMateusz Piotrowskidevice first appeared in
15939acb7fdSMateusz Piotrowski.Fx 6 .
16039acb7fdSMateusz Piotrowski.Sh AUTHORS
16139acb7fdSMateusz Piotrowski.An -nosplit
16239acb7fdSMateusz PiotrowskiThe
16339acb7fdSMateusz Piotrowski.Nm
16439acb7fdSMateusz Piotrowskidevice was written by
16539acb7fdSMateusz Piotrowski.An Paweł Jakub Dawidek Aq Mt pjd@FreeBSD.org .
16639acb7fdSMateusz Piotrowski.Pp
16739acb7fdSMateusz PiotrowskiThe
16839acb7fdSMateusz Piotrowski.Nm
16939acb7fdSMateusz Piotrowskimanual page was originally written by
17039acb7fdSMateusz Piotrowski.An Greg White Aq Mt gkwhite@gmail.com
17139acb7fdSMateusz Piotrowskiand rewritten by
17239acb7fdSMateusz Piotrowski.An Mateusz Piotrowski Aq Mt 0mp@FreeBSD.org
17339acb7fdSMateusz Piotrowskibefore landing in
17439acb7fdSMateusz Piotrowski.Fx .
175