doc: Minor updates to bdev user guide

Signed-off-by: Monica Kenguva <monica.kenguva@intel.com>
Change-Id: I28047e71535046b898fa14bfb210ec4019614554
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3465
Community-CI: Mellanox Build Bot
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Monica Kenguva 2020-07-20 22:12:10 +00:00 committed by Tomasz Zawadzki
parent b68d89bcc2
commit 802fd5bf41

View File

@ -1,5 +1,9 @@
# Block Device User Guide {#bdev} # Block Device User Guide {#bdev}
# Target Audience {#bdev_ug_targetaudience}
This user guide is intended for software developers who have knowledge of block storage, storage drivers, issuing JSON-RPC commands and storage services such as RAID, compression, crypto, and others.
# Introduction {#bdev_ug_introduction} # Introduction {#bdev_ug_introduction}
The SPDK block device layer, often simply called *bdev*, is a C library The SPDK block device layer, often simply called *bdev*, is a C library
@ -35,72 +39,12 @@ directly from SPDK application by running `scripts/rpc.py rpc_get_methods`.
Detailed help for each command can be displayed by adding `-h` flag as a Detailed help for each command can be displayed by adding `-h` flag as a
command parameter. command parameter.
# General Purpose RPCs {#bdev_ug_general_rpcs} # Configuring Block Device Modules {#bdev_ug_general_rpcs}
## bdev_get_bdevs {#bdev_ug_get_bdevs} Block devices can be configured using JSON RPCs. A complete list of available RPC commands
with detailed information can be found on the @ref jsonrpc_components_bdev page.
List of currently available block devices including detailed information about # Common Block Device Configuration Examples
them can be get by using `bdev_get_bdevs` RPC command. User can add optional
parameter `name` to get details about specified by that name bdev.
Example response
~~~
{
"num_blocks": 32768,
"assigned_rate_limits": {
"rw_ios_per_sec": 10000,
"rw_mbytes_per_sec": 20
},
"supported_io_types": {
"reset": true,
"nvme_admin": false,
"unmap": true,
"read": true,
"write_zeroes": true,
"write": true,
"flush": true,
"nvme_io": false
},
"driver_specific": {},
"claimed": false,
"block_size": 4096,
"product_name": "Malloc disk",
"name": "Malloc0"
}
~~~
## bdev_set_qos_limit {#bdev_set_qos_limit}
Users can use the `bdev_set_qos_limit` RPC command to enable, adjust, and disable
rate limits on an existing bdev. Two types of rate limits are supported:
IOPS and bandwidth. The rate limits can be enabled, adjusted, and disabled at any
time for the specified bdev. The bdev name is a required parameter for this
RPC command and at least one of `rw_ios_per_sec` and `rw_mbytes_per_sec` must be
specified. When both rate limits are enabled, the first met limit will
take effect. The value 0 may be specified to disable the corresponding rate
limit. Users can run this command with `-h` or `--help` for more information.
## Histograms {#rpc_bdev_histogram}
The `bdev_enable_histogram` RPC command allows to enable or disable gathering
latency data for specified bdev. Histogram can be downloaded by the user by
calling `bdev_get_histogram` and parsed using scripts/histogram.py script.
Example command
`rpc.py bdev_enable_histogram Nvme0n1 --enable`
The command will enable gathering data for histogram on Nvme0n1 device.
`rpc.py bdev_get_histogram Nvme0n1 | histogram.py`
The command will download gathered histogram data. The script will parse
the data and show table containing IO count for latency ranges.
`rpc.py bdev_enable_histogram Nvme0n1 --disable`
The command will disable histogram on Nvme0n1 device.
# Ceph RBD {#bdev_config_rbd} # Ceph RBD {#bdev_config_rbd}
@ -378,6 +322,14 @@ please visit [OCF documentation](https://open-cas.github.io/).
Malloc bdevs are ramdisks. Because of its nature they are volatile. They are created from hugepage memory given to SPDK Malloc bdevs are ramdisks. Because of its nature they are volatile. They are created from hugepage memory given to SPDK
application. application.
Example command for creating malloc bdev:
`rpc.py bdev_malloc_create -b Malloc0 64 512`
Example command for removing malloc bdev:
`rpc.py bdev_malloc_delete Malloc0`
# Null {#bdev_config_null} # Null {#bdev_config_null}
The SPDK null bdev driver is a dummy block I/O target that discards all writes and returns undefined The SPDK null bdev driver is a dummy block I/O target that discards all writes and returns undefined
@ -460,7 +412,6 @@ User can get list of available lvol stores using `bdev_lvol_get_lvstores` RPC co
parameters available). parameters available).
Example response Example response
~~~ ~~~
{ {
"uuid": "330a6ab2-f468-11e7-983e-001e67edf35d", "uuid": "330a6ab2-f468-11e7-983e-001e67edf35d",