diff --git a/doc/bdev.md b/doc/bdev.md index 24d8d00bf..094a894d7 100644 --- a/doc/bdev.md +++ b/doc/bdev.md @@ -83,13 +83,13 @@ limit. Users can run this command with `-h` or `--help` for more information. ## Histograms {#rpc_bdev_histogram} -The `enable_bdev_histogram` RPC command allows to enable or disable gathering +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 `get_bdev_histogram` and parsed using scripts/histogram.py script. Example command -`rpc.py enable_bdev_histogram Nvme0n1 --enable` +`rpc.py bdev_enable_histogram Nvme0n1 --enable` The command will enable gathering data for histogram on Nvme0n1 device. @@ -98,7 +98,7 @@ The command will enable gathering data for histogram on Nvme0n1 device. The command will download gathered histogram data. The script will parse the data and show table containing IO count for latency ranges. -`rpc.py enable_bdev_histogram Nvme0n1 --disable` +`rpc.py bdev_enable_histogram Nvme0n1 --disable` The command will disable histogram on Nvme0n1 device. diff --git a/doc/jsonrpc.md b/doc/jsonrpc.md index 3e37bd948..6e0438858 100644 --- a/doc/jsonrpc.md +++ b/doc/jsonrpc.md @@ -688,7 +688,7 @@ Example response: } ~~~ -## enable_bdev_histogram {#rpc_enable_bdev_histogram} +## bdev_enable_histogram {#rpc_bdev_enable_histogram} Control whether collecting data for histogram is enabled for specified bdev. @@ -707,7 +707,7 @@ Example request: { "jsonrpc": "2.0", "id": 1, - "method": "enable_bdev_histogram", + "method": "bdev_enable_histogram", "params": { "name": "Nvme0n1" "enable": true diff --git a/module/bdev/rpc/bdev_rpc.c b/module/bdev/rpc/bdev_rpc.c index 1d36cd96e..3b1166ee8 100644 --- a/module/bdev/rpc/bdev_rpc.c +++ b/module/bdev/rpc/bdev_rpc.c @@ -509,20 +509,20 @@ SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_set_qos_limit, set_bdev_qos_limit) /* SPDK_RPC_ENABLE_BDEV_HISTOGRAM */ -struct rpc_enable_bdev_histogram_request { +struct rpc_bdev_enable_histogram_request { char *name; bool enable; }; static void -free_rpc_enable_bdev_histogram_request(struct rpc_enable_bdev_histogram_request *r) +free_rpc_bdev_enable_histogram_request(struct rpc_bdev_enable_histogram_request *r) { free(r->name); } -static const struct spdk_json_object_decoder rpc_enable_bdev_histogram_request_decoders[] = { - {"name", offsetof(struct rpc_enable_bdev_histogram_request, name), spdk_json_decode_string}, - {"enable", offsetof(struct rpc_enable_bdev_histogram_request, enable), spdk_json_decode_bool}, +static const struct spdk_json_object_decoder rpc_bdev_enable_histogram_request_decoders[] = { + {"name", offsetof(struct rpc_bdev_enable_histogram_request, name), spdk_json_decode_string}, + {"enable", offsetof(struct rpc_bdev_enable_histogram_request, enable), spdk_json_decode_bool}, }; static void @@ -536,14 +536,14 @@ _spdk_bdev_histogram_status_cb(void *cb_arg, int status) } static void -spdk_rpc_enable_bdev_histogram(struct spdk_jsonrpc_request *request, +spdk_rpc_bdev_enable_histogram(struct spdk_jsonrpc_request *request, const struct spdk_json_val *params) { - struct rpc_enable_bdev_histogram_request req = {NULL}; + struct rpc_bdev_enable_histogram_request req = {NULL}; struct spdk_bdev *bdev; - if (spdk_json_decode_object(params, rpc_enable_bdev_histogram_request_decoders, - SPDK_COUNTOF(rpc_enable_bdev_histogram_request_decoders), + if (spdk_json_decode_object(params, rpc_bdev_enable_histogram_request_decoders, + SPDK_COUNTOF(rpc_bdev_enable_histogram_request_decoders), &req)) { SPDK_ERRLOG("spdk_json_decode_object failed\n"); spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, @@ -560,10 +560,11 @@ spdk_rpc_enable_bdev_histogram(struct spdk_jsonrpc_request *request, spdk_bdev_histogram_enable(bdev, _spdk_bdev_histogram_status_cb, request, req.enable); cleanup: - free_rpc_enable_bdev_histogram_request(&req); + free_rpc_bdev_enable_histogram_request(&req); } -SPDK_RPC_REGISTER("enable_bdev_histogram", spdk_rpc_enable_bdev_histogram, SPDK_RPC_RUNTIME) +SPDK_RPC_REGISTER("bdev_enable_histogram", spdk_rpc_bdev_enable_histogram, SPDK_RPC_RUNTIME) +SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_enable_histogram, enable_bdev_histogram) /* SPDK_RPC_GET_BDEV_HISTOGRAM */ diff --git a/scripts/rpc.py b/scripts/rpc.py index a28c3f59b..3a6b906ea 100755 --- a/scripts/rpc.py +++ b/scripts/rpc.py @@ -588,14 +588,15 @@ if __name__ == "__main__": p.add_argument('-b', '--name', help="Name of the Blockdev. Example: Nvme0n1", required=False) p.set_defaults(func=bdev_get_iostat) - def enable_bdev_histogram(args): - rpc.bdev.enable_bdev_histogram(args.client, name=args.name, enable=args.enable) + def bdev_enable_histogram(args): + rpc.bdev.bdev_enable_histogram(args.client, name=args.name, enable=args.enable) - p = subparsers.add_parser('enable_bdev_histogram', help='Enable or disable histogram for specified bdev') + p = subparsers.add_parser('bdev_enable_histogram', aliases=['enable_bdev_histogram'], + help='Enable or disable histogram for specified bdev') p.add_argument('-e', '--enable', default=True, dest='enable', action='store_true', help='Enable histograms on specified device') p.add_argument('-d', '--disable', dest='enable', action='store_false', help='Disable histograms on specified device') p.add_argument('name', help='bdev name') - p.set_defaults(func=enable_bdev_histogram) + p.set_defaults(func=bdev_enable_histogram) def get_bdev_histogram(args): print_dict(rpc.bdev.get_bdev_histogram(args.client, name=args.name)) diff --git a/scripts/rpc/bdev.py b/scripts/rpc/bdev.py index 62c8c49cd..63819d820 100644 --- a/scripts/rpc/bdev.py +++ b/scripts/rpc/bdev.py @@ -735,14 +735,15 @@ def bdev_get_iostat(client, name=None): return client.call('bdev_get_iostat', params) -def enable_bdev_histogram(client, name, enable): +@deprecated_alias('enable_bdev_histogram') +def bdev_enable_histogram(client, name, enable): """Control whether histogram is enabled for specified bdev. Args: bdev_name: name of bdev """ params = {'name': name, "enable": enable} - return client.call('enable_bdev_histogram', params) + return client.call('bdev_enable_histogram', params) def get_bdev_histogram(client, name): diff --git a/test/blobstore/blob_io_wait/blob_io_wait.sh b/test/blobstore/blob_io_wait/blob_io_wait.sh index a823c78ee..58b34b692 100755 --- a/test/blobstore/blob_io_wait/blob_io_wait.sh +++ b/test/blobstore/blob_io_wait/blob_io_wait.sh @@ -38,19 +38,19 @@ echo "AIO $testdir/aio.bdev aio0 4096" >> $testdir/bdevperf.conf $rootdir/test/bdev/bdevperf/bdevperf -c $testdir/bdevperf.conf -q 128 -o 4096 -w write -t 5 -r /var/tmp/spdk.sock & bdev_perf_pid=$! waitforlisten $bdev_perf_pid -$rpc_py enable_bdev_histogram aio0 -e +$rpc_py bdev_enable_histogram aio0 -e sleep 2 $rpc_py get_bdev_histogram aio0 | $rootdir/scripts/histogram.py -$rpc_py enable_bdev_histogram aio0 -d +$rpc_py bdev_enable_histogram aio0 -d wait $bdev_perf_pid $rootdir/test/bdev/bdevperf/bdevperf -c $testdir/bdevperf.conf -q 128 -o 4096 -w read -t 5 -r /var/tmp/spdk.sock & bdev_perf_pid=$! waitforlisten $bdev_perf_pid -$rpc_py enable_bdev_histogram aio0 -e +$rpc_py bdev_enable_histogram aio0 -e sleep 2 $rpc_py get_bdev_histogram aio0 | $rootdir/scripts/histogram.py -$rpc_py enable_bdev_histogram aio0 -d +$rpc_py bdev_enable_histogram aio0 -d wait $bdev_perf_pid $rootdir/test/bdev/bdevperf/bdevperf -c $testdir/bdevperf.conf -q 128 -o 4096 -w unmap -t 1