selftests/bpf: Add a new cgroup helper open_classid()
[linux-2.6-block.git] / Documentation / block / null_blk.rst
CommitLineData
04c56957
AA
1.. SPDX-License-Identifier: GPL-2.0
2
898bd37a 3========================
12f8f4fc 4Null block device driver
898bd37a 5========================
12f8f4fc 6
04c56957
AA
7Overview
8========
12f8f4fc 9
04c56957 10The null block device (``/dev/nullb*``) is used for benchmarking the various
12f8f4fc 11block-layer implementations. It emulates a block device of X gigabytes in size.
04c56957
AA
12It does not execute any read/write operation, just mark them as complete in
13the request queue. The following instances are possible:
898bd37a 14
12f8f4fc 15 Multi-queue block-layer
898bd37a 16
12f8f4fc
MB
17 - Request-based.
18 - Configurable submission queues per device.
898bd37a 19
12f8f4fc 20 No block-layer (Known as bio-based)
898bd37a 21
12f8f4fc
MB
22 - Bio-based. IO requests are submitted directly to the device driver.
23 - Directly accepts bio data structure and returns them.
24
89ed05ee 25All of them have a completion queue for each core in the system.
12f8f4fc 26
04c56957
AA
27Module parameters
28=================
12f8f4fc
MB
29
30queue_mode=[0-2]: Default: 2-Multi-queue
31 Selects which block-layer the module should instantiate with.
32
898bd37a
MCC
33 = ============
34 0 Bio-based
04c56957 35 1 Single-queue (deprecated)
898bd37a
MCC
36 2 Multi-queue
37 = ============
12f8f4fc
MB
38
39home_node=[0--nr_nodes]: Default: NUMA_NO_NODE
89ed05ee 40 Selects what CPU node the data structures are allocated from.
12f8f4fc
MB
41
42gb=[Size in GB]: Default: 250GB
43 The size of the device reported to the system.
44
45bs=[Block size (in bytes)]: Default: 512 bytes
46 The block size reported to the system.
47
e8815241 48nr_devices=[Number of devices]: Default: 1
12f8f4fc
MB
49 Number of block devices instantiated. They are instantiated as /dev/nullb0,
50 etc.
51
a2787312 52irqmode=[0-2]: Default: 1-Soft-irq
12f8f4fc
MB
53 The completion mode used for completing IOs to the block-layer.
54
898bd37a
MCC
55 = ===========================================================================
56 0 None.
57 1 Soft-irq. Uses IPI to complete IOs across CPU nodes. Simulates the overhead
89ed05ee 58 when IOs are issued from another CPU node than the home the device is
12f8f4fc 59 connected to.
898bd37a 60 2 Timer: Waits a specific period (completion_nsec) for each IO before
12f8f4fc 61 completion.
898bd37a 62 = ===========================================================================
12f8f4fc 63
e8815241 64completion_nsec=[ns]: Default: 10,000ns
a2787312 65 Combined with irqmode=2 (timer). The time each completion event must wait.
12f8f4fc 66
04c56957 67submit_queues=[1..nr_cpus]: Default: 1
12f8f4fc 68 The number of submission queues attached to the device driver. If unset, it
23c4490d 69 defaults to 1. For multi-queue, it is ignored when use_per_node_hctx module
70 parameter is 1.
12f8f4fc 71
89ed05ee 72hw_queue_depth=[0..qdepth]: Default: 64
12f8f4fc
MB
73 The hardware queue depth of the device.
74
058efe00
VF
75memory_backed=[0/1]: Default: 0
76 Whether or not to use a memory buffer to respond to IO requests
77
78 = =============================================
79 0 Transfer no data in response to IO requests
80 1 Use a memory buffer to respond to IO requests
81 = =============================================
82
83discard=[0/1]: Default: 0
84 Support discard operations (requires memory-backed null_blk device).
85
86 = =====================================
87 0 Do not support discard operations
88 1 Enable support for discard operations
89 = =====================================
90
91cache_size=[Size in MB]: Default: 0
92 Cache size in MB for memory-backed device.
93
94mbps=[Maximum bandwidth in MB/s]: Default: 0 (no limit)
95 Bandwidth limit for device performance.
96
04c56957
AA
97Multi-queue specific parameters
98-------------------------------
12f8f4fc 99
20005244 100use_per_node_hctx=[0/1]: Default: 0
04c56957 101 Number of hardware context queues.
898bd37a
MCC
102
103 = =====================================================================
104 0 The number of submit queues are set to the value of the submit_queues
20005244 105 parameter.
898bd37a 106 1 The multi-queue block layer is instantiated with a hardware dispatch
20005244 107 queue for each CPU node in the system.
898bd37a 108 = =====================================================================
b2b7e001 109
fc186311 110no_sched=[0/1]: Default: 0
04c56957 111 Enable/disable the io scheduler.
898bd37a
MCC
112
113 = ======================================
114 0 nullb* use default blk-mq io scheduler
115 1 nullb* doesn't use io scheduler
116 = ======================================
bf9fc98b 117
6723d8dc 118blocking=[0/1]: Default: 0
04c56957 119 Blocking behavior of the request queue.
898bd37a
MCC
120
121 = ===============================================================
122 0 Register as a non-blocking blk-mq driver device.
123 1 Register as a blocking blk-mq driver device, null_blk will set
6723d8dc
LB
124 the BLK_MQ_F_BLOCKING flag, indicating that it sometimes/always
125 needs to block in its ->queue_rq() function.
898bd37a 126 = ===============================================================
6723d8dc 127
bf9fc98b 128shared_tags=[0/1]: Default: 0
04c56957 129 Sharing tags between devices.
898bd37a
MCC
130
131 = ================================================================
132 0 Tag set is not shared.
133 1 Tag set shared between devices for blk-mq. Only makes sense with
bf9fc98b 134 nr_devices > 1, otherwise there's no tag set to share.
898bd37a 135 = ================================================================
ca4b2a01
MB
136
137zoned=[0/1]: Default: 0
04c56957 138 Device is a random-access or a zoned block device.
898bd37a
MCC
139
140 = ======================================================================
141 0 Block device is exposed as a random-access block device.
142 1 Block device is exposed as a host-managed zoned block device. Requires
373282e7 143 CONFIG_BLK_DEV_ZONED.
898bd37a 144 = ======================================================================
ca4b2a01
MB
145
146zone_size=[MB]: Default: 256
147 Per zone size when exposed as a zoned block device. Must be a power of two.
0d413829
MI
148
149zone_nr_conv=[nr_conv]: Default: 0
150 The number of conventional zones to create when block device is zoned. If
151 zone_nr_conv >= nr_zones, it will be reduced to nr_zones - 1.