forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add description of module and its parameters. Signed-off-by: Matias Bjorling <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
- Loading branch information
1 parent
0c56010
commit 12f8f4f
Showing
1 changed file
with
71 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
Null block device driver | ||
================================================================================ | ||
|
||
I. Overview | ||
|
||
The null block device (/dev/nullb*) is used for benchmarking the various | ||
block-layer implementations. It emulates a block device of X gigabytes in size. | ||
The following instances are possible: | ||
|
||
Single-queue block-layer | ||
- Request-based. | ||
- Single submission queue per device. | ||
- Implements IO scheduling algorithms (CFQ, Deadline, noop). | ||
Multi-queue block-layer | ||
- Request-based. | ||
- Configurable submission queues per device. | ||
No block-layer (Known as bio-based) | ||
- Bio-based. IO requests are submitted directly to the device driver. | ||
- Directly accepts bio data structure and returns them. | ||
|
||
All of them has a completion queue for each core in the system. | ||
|
||
II. Module parameters applicable for all instances: | ||
|
||
queue_mode=[0-2]: Default: 2-Multi-queue | ||
Selects which block-layer the module should instantiate with. | ||
|
||
0: Bio-based. | ||
1: Single-queue. | ||
2: Multi-queue. | ||
|
||
home_node=[0--nr_nodes]: Default: NUMA_NO_NODE | ||
Selects what socket the data structures is allocated from. | ||
|
||
gb=[Size in GB]: Default: 250GB | ||
The size of the device reported to the system. | ||
|
||
bs=[Block size (in bytes)]: Default: 512 bytes | ||
The block size reported to the system. | ||
|
||
nr_devices=[Num. devices]: Default: 2 | ||
Number of block devices instantiated. They are instantiated as /dev/nullb0, | ||
etc. | ||
|
||
irq_mode=[0-2]: Default: Soft-irq | ||
The completion mode used for completing IOs to the block-layer. | ||
|
||
0: None. | ||
1: Soft-irq. Uses ipi to complete IOs across sockets. Simulates the overhead | ||
when IOs are issued from another socket than the home the device is | ||
connected to. | ||
2: Timer: Waits a specific period (completion_nsec) for each IO before | ||
completion. | ||
|
||
completion_nsec=[Num. ns]: Default: 10.000ns | ||
Combined with irq_mode=2 (timer). The time each completion event must wait. | ||
|
||
submit_queues=[0..nr_cpus]: | ||
The number of submission queues attached to the device driver. If unset, it | ||
defaults to 1 on single-queue and bio-based instances. For multi-queue, | ||
its ignored when use_per_node_hctx module parameter is 1. | ||
|
||
hw_queue_depth=[0..qdepth]: Defaults: 64 | ||
The hardware queue depth of the device. | ||
|
||
III: Multi-queue specific parameters | ||
|
||
use_per_node_hctx=[0/1]: Defaults: 1 | ||
If 1, the multi-queue block layer is instantiated with a hardware dispatch | ||
queue for each CPU node in the system. If 0, it is instantiated with the | ||
number of queues defined in the submit_queues parameter. |