Commit Graph

396 Commits

Author SHA1 Message Date
Vitaliy Mysak
13a0ac2e20 bdevperf: config file: simplify old constructors
Instead of calling bdevperf_construct_job() directly,
create a job_config instance that would express
the same semantics and then use
bdevperf_construct_config_jobs() to create and run actual jobs.
The goal is to unify methods and reduce code duplication.

Change-Id: I724e5788ea74868c9e9c8128d658e720d211f253
Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3510
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-07-24 18:53:47 +00:00
Vitaliy Mysak
32b2d78a3c bdevperf: config file: handle 'offset' and 'length' parameters
This parameters allow for low cost refactoring
because with them we can simplify construct_multithread_jobs()
by creating instances of job_config during its invocation
and then handling those in construct_config_jobs().

Change-Id: I73057a9a65f58e48ac719f30e918d7a05ffc0f28
Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3509
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Community-CI: Mellanox Build Bot
2020-07-24 18:53:47 +00:00
Vitaliy Mysak
b18c845893 bdevperf: config file: initial parsing and handling
Implement parsing of config file,
including overall format of sections/parameters (using lib/conf)
as well as filename, bs, iodepth and cpumask parameters (based on FIO).
Also implement creating jobs based on config file.

The only required parameter that is missing is 'rw'.
It will be added in a separatate patch because it requires quite
different code than for other parameters.

Duplications that this patch introduces with respect to legacy
code are addressed in following patches.

Change-Id: Ie19e55dc66369e795a97b53a4223beafa10d8fe8
Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3189
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Community-CI: Mellanox Build Bot
2020-07-24 18:53:47 +00:00
Vitaliy Mysak
ceeb92900c bdevperf: change construct_job() signature
Accept job thread as argument
in bdevperf_construct_job().
This will allow for using single thread for
multiple jobs, as it is in FIO if multiple filenames are specified.

Change-Id: I0b6aa69aae1e1bf099170d3d495e0a83f97a857b
Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3365
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2020-07-24 18:53:47 +00:00
Maciej Szwed
67901d4333 bdevperf: Add env_dpdk_rpc lib to bdevperf
env_dpdk_get_mem_stats RPC has been requested to be
available in bdevperf.

Signed-off-by: Maciej Szwed <maciej.szwed@intel.com>
Change-Id: I10aea634851e21018b223d7331b1bbeb7630a09c
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3520
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-07-24 17:09:03 +00:00
Vitaliy Mysak
8f345eca22 bdevperf: move global options to job struct
This will allow us to specify per-job options
in upcoming bdevperf config file feature

Change-Id: I80b28856bcb16d393fbadf89d6238c824ee9b276
Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3062
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-07-22 12:24:08 +00:00
Evgeniy Kochetov
c5c9a150a3 make: Create variable for event_bdev dependencies
Signed-off-by: Evgeniy Kochetov <evgeniik@mellanox.com>
Change-Id: I7468dd242b83af8b41d72e503c212c1ffac1abd1
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/614
Community-CI: Mellanox Build Bot
Community-CI: Broadcom CI
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-07-08 07:56:46 +00:00
Changpeng Liu
45a3cb2be4 test/bdevio: add data length check for extended LBA format
When the block size is 520(512 + 8) Bytes, we should check the data
length before the tests.

Change-Id: I785e395c9427460238205a52220e8333eee99ec0
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2905
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2020-06-17 07:21:14 +00:00
Changpeng Liu
c19fcb00d0 test/bdevio: consolidate IO valid check into a function
Change-Id: Ib99d6a558e74c3cdc2d12da9a6bcf9b4181de250
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2904
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2020-06-17 07:21:14 +00:00
Ben Walker
85bdd43b40 build: Example applications build to build/example
This mirrors build/bin and build/lib

Change-Id: Ide1d17dfc8b425adfbe67f381c93c236653bd301
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2380
Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
2020-06-15 15:27:16 +00:00
Ben Walker
6b9b448e53 build: Output executables from the app directory to build/bin
Automatically place binaries produced from the app directory
into build/bin. This matches with the output in build/lib
that already exists.

Change-Id: I13cd2da71d2f88592e22308fe8a907bf458458b5
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2379
Community-CI: Mellanox Build Bot
Community-CI: Broadcom CI
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
2020-06-15 15:27:16 +00:00
Shuhei Matsumoto
d13e9dde6e bdevperf: Abort the timeout I/O
Change the I/O timeout callback to abort the timeout I/O if g_abort
is set to true. Increase the task pool twice to submit abort task
in parallel.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I1722f3c0ec8fc58a400b937895ad365cba7defbe
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2626
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-06-10 13:54:40 +00:00
Shuhei Matsumoto
3ffdff7c5a bdevperf: Set timeout to detect starved I/O and count timeout I/Os
The following patches will abort the timeout I/O in bdevperf tool.
This is a preparation. Add CLI option to set timeout to detect
starved I/O and add count of timeout I/Os to stats.

spdk_bdev_set_timeout() disables timeout if timeout value is zero.
Hence we do not have to check if g_timeout_in_sec is not zero.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I201682acd321ecd414cfbfd9f5445bf3dc934b41
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2625
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-06-10 13:54:40 +00:00
Shuhei Matsumoto
972ca153d3 bdevperf: Add CLI option to disable using zcopy bdev API
This is convenient to evaluate I/O abort for read or write I/O
to the delay bdev.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Idceebb9d65938837a57629cc6ec8db6507582116
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2624
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-06-10 13:54:40 +00:00
Shuhei Matsumoto
84caaf5a93 bdevperf: Count Failed I/Os
This is a preparation to support I/O abort by bdevperf tool.

Add io_failed to bdevperf_job and increment it per I/O completion.
Then add io_failed to statistics.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I45c15d9644e5d66310fbbe62682015bd81074973
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2623
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-06-10 13:54:40 +00:00
Michal Berger
fe711156e8 tests: Switch to $SPDK_TEST_STORAGE for writing out bigger tmp files
Change-Id: Ic400a470373fe59e89b2400af4f4264872281d64
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2368
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2020-05-20 14:17:02 +00:00
Michal Berger
844c8ec383 check_format: Reformat the Bash code in compliance with shfmt
Change-Id: I93e7b9d355870b0528a0ac3382fba1a10a558d45
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1718
Community-CI: Mellanox Build Bot
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-05-07 20:52:21 +00:00
Ben Walker
3788d6967a bdevperf: Eliminate reactors
Now, each bdevperf_job gets it's own bdevperf_thread. Scheduling the
jobs onto cores is left to the underlying event framework in the normal
case. In the multi-thread case, cpumasks are set on the jobs' threads to
ensure they're distributed appropriately.

Change-Id: I55f1a44b4262d715954b3a63bf00b8d2321fafca
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1512
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-05-07 10:41:38 +00:00
Ben Walker
c0b589ebd0 bdevperf: Release job resources on master thread
None of these operations need to occur on the job's thread, so just do
them in a simpler loop on the master thread during shutdown.

Change-Id: I6fda3c4b37c206e9e1e43af9d1a49a2e83afcd67
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1872
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-04-17 07:40:47 +00:00
Ben Walker
0afce675c8 bdevperf: Jobs now print their stats during job cleanup
We can collapse the two loops at exit time into one this way.

Change-Id: Iffe06e03c54fadc605e168580b69d2c710ac1168
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1849
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
2020-04-17 07:40:47 +00:00
Ben Walker
83bf754674 bdevperf: Rename perf_dump_ctx to bdevperf_aggregate_stats
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: I661fa03690b53fee1dcb7343d3f03c629e6e96c1
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1871
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
2020-04-17 07:40:47 +00:00
Ben Walker
94d42195b6 bdevperf: Move some performance dump code up in file
This is going to be used in the shutdown path, so move it
up to avoid having to forward declare it.

Change-Id: Ia5e4d9ef4290f6d67528ee7d3f8a2e15bc39868d
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1870
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
2020-04-17 07:40:47 +00:00
Ben Walker
daf08e3b55 bdevperf: Print each job's results separately
As we move to more complex job definitions, it will make more sense to
print the stats for each job separately, rather than grouping by
reactor.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: I1a94c36a5d272ae406b0b201dc05ec020ab651a0
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1848
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
2020-04-17 07:40:47 +00:00
Ben Walker
5eb39c80ad bdevperf: Allocate io_channel when job is constructed
No reason to delay until the I/O submit function. Do it up front
and fail if it can't get one.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: I646bc68f8dd7207667e546f7be44464909fa2cc4
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1511
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-04-17 07:40:47 +00:00
Ben Walker
bc2fdcb280 bdevperf: Separate job construction for -C from normal mode
Make these two separate code paths so normal mode doesn't need
to do an spdk_for_each_channel and iterate every thread just
to get to the single thread it wants to build a job on.

Change-Id: Ibe57b3f3d4f990550ef4f5da93cb8ca54ae3ab85
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1510
Community-CI: Mellanox Build Bot
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-04-17 07:40:47 +00:00
Shuhei Matsumoto
ab0bc5c254 lib/thread: Use function name as poller name by using macro SPDK_POLLER_REGISTER
We will be create fine name for each poller but it will need large
effort. Replacing spdk_poller_register by the macro SPDK_POLLER_REGISTER
will provide better name than function address with minimum effort.

Following patches may improve function name for clarification.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: If862a274c5879065c3f7cb04dcb5ca7844523e68
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1781
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Maciej Szwed <maciej.szwed@intel.com>
Community-CI: Broadcom CI
2020-04-15 07:23:09 +00:00
Ben Walker
f1dede62a3 bdevperf: Gather all of the job construction code into a single function
Keep it all in one place to make it easier to see.

Change-Id: I8c2cc1b5da8ce431d7b1b5546440324db169e09c
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1509
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
2020-04-14 11:32:35 +00:00
Ben Walker
59e40e0203 bdevperf: inline bdevperf_construct_task_on_job
Only called from one place.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: I34a9d29d4a45df08ecf168c12bd28e358ed6ff18
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1508
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
2020-04-14 11:32:35 +00:00
Ben Walker
d424efa822 bdevperf: Rename bdevperf_job_gone to bdevperf_bdev_removed
More accurate name

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: I179a7b0f2ec73416f55a5e4f6e813b833bfac1af
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1507
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
2020-04-14 11:32:35 +00:00
Ben Walker
cd27e14ba2 bdevperf: Inline _bdevperf_construct_job
It's only called from one spot.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: I60ecc3c9763faed6d7f3dbc8de5bf63d478d70ec
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1506
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
2020-04-14 11:32:35 +00:00
Ben Walker
d6c0550b3f bdevperf: Inline bdevperf_submit_io
Only called one place.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: I8e8edf4e7a36a2e953b0856a1849e86dc015a5c3
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1505
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2020-04-14 11:32:35 +00:00
Ben Walker
76f49c93c5 bdevperf: Allocate tasks when job is allocated
This simplifies the initialization to only a single pass through all
cores.

Change-Id: I6fa8fec90d131f0fd9544ef8548daac52465691a
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1504
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
2020-04-14 11:32:35 +00:00
Ben Walker
ded0c2d146 bdevperf: Break code for running a job into a separate function
This will make some refactoring later a bit clearer.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: Iae2c36d1c298377cd20cf3226b3b8dfe712484ff
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1503
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
2020-04-14 11:32:35 +00:00
Shuhei Matsumoto
a91d650245 test/bdevperf: fix 4 issues with the outstanding bit array
fix #1: fix issue when setting outstanding bit array

In the case where spdk_bit_array_get() is false after selecting
an offset, we'd fail to set the outstanding bit in the array for
that location based as it was included inside of the conditional
that would have us try another. Switched the logic up to avoid
needing a second check on g_verify.

fix #2: fix offset_in_ios to be relative with the range of the job

offset_in_ios was absolute but size of bit map array was the
range of the job. The comment in the source file said it was
relative, but did not match the code.

Change offset_in_ios to be relative with the range of the
job and use it for spdk_bit_array_set, spdk_bit_array_get, and
spdk_bit_array_clear.

fix #3: fix bit was not cleared when submission failed

When bdevperf_submit_task() failed to submit, the corresponding
bit was not cleared from job->outstanding.

fix #4: fix bit was not cleared when submitted I/O failed.

bdevperf_complete() had cleared bit only if the I/O succeeded.

This bug is apparaent only when -C option is enabled.

fixes issue #1329

Signed-off-by: paul luse <paul.e.luse@intel.com>
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I5b7e1d0b2e489b807906a94ed5d05da65067e6ab
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1736
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2020-04-09 08:07:31 +00:00
Tomasz Zawadzki
4faa7b5837 test: remove RUN_NIGHTLY_FAILING flag
Purpose of this flag is sketchy at best.
Failing tests should be either fixed or disabled/removed.
Running separate job in hopes of it fixing itself,
might not bring the expected outcome.

Case in point - test case in this patch
was added to this flag over a year ago.

This is last remaining test case under this flag.
So there is no need for it to exist.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: I8481ac7102245889047dde083b34276d22271a03
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1495
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-04-08 06:43:31 +00:00
paul luse
37e56dd83b test/blockdev: enable multi-thread per target on bdevperf verify
Signed-off-by: paul luse <paul.e.luse@intel.com>
Change-Id: I8b289bd5fe8766bf78b6ad9f6c1b16654ea8376b
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1220
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-03-31 07:56:28 +00:00
paul luse
58ec54b0ba bdevperf: enable multiple cores on same bdev with verify
Still testing to do both basic functionality as well as use of
various combinations of options.

Instead of using LBA range locking to protect the threads from
each other, this solution assigns a specific LBA range per target.
The LBA ranges are based on how many threads are working on any
one target.

Signed-off-by: paul luse <paul.e.luse@intel.com>
Change-Id: I6a6588506a43292969fffe1baf060148d6772ee5
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1207
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-03-31 07:56:28 +00:00
Michal Berger
85cda93b8d test/bdev: Call rbd_cleanup() only if rbd test was run
This is to avoid spammy stderr comming from ceph/stop.sh:

  + umount /dev/loop200p2
  umount: /dev/loop200p2: not mounted.
  + losetup -d /dev/loop200
  losetup: /dev/loop200: detach failed: No such device or address

Change-Id: Id1ecfc5da1a530c63d454bfacc8fb36c29549f8e
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1006
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
2020-03-31 07:55:58 +00:00
Michal Berger
b3b45f1659 test/bdev: Cleanup old ini pieces
Change-Id: Id3aae79de36f4be415d77a2641bc1bf6050c0753
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1023
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
2020-03-31 07:55:58 +00:00
Michal Berger
6b8f9a0f81 test/bdev: Convert setup_rbd_conf() to RPC calls
Change-Id: Icfbb571d1cd2a2539cd9026f1437c75450b77512
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1022
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-31 07:55:58 +00:00
Michal Berger
9176ac1efa test/bdev: Convert setup_pmem_conf() to RPC calls
Change-Id: I48217a4e855fd903a378e188e70b41efbe10db5d
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1021
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-31 07:55:58 +00:00
Michal Berger
102731bd40 test/bdev: Split crypto test and convert it to RPC calls
Split is done based on the crypto driver type:
  - crypto_aesni
  - crypto_qat

Change-Id: I47610eea7dd69defcbda9aa801a8bd8eeab820ee
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1020
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-31 07:55:58 +00:00
Michal Berger
9fd5bccc97 test/bdev: Convert setup_gpt_conf() to RPC calls
Additionally, part_dev_by_gpt() is dropped in favor of having entire
gpt setup done from within the setup function.

Change-Id: If026215138f2de20176ebc920a2427c18de991b5
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1019
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2020-03-31 07:55:58 +00:00
Ben Walker
e7615cbe51 bdevperf: Rename end_run bdevperf_job_end
More descriptive name.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: Ib3c716176b8862df53616e37572ce53f5adb9023
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1389
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-25 07:52:43 +00:00
Ben Walker
de747f08d6 bdevperf: Move g_job_count in struct bdevperf
Group the global parameters into the global structure

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: I552b536869221efb58bc30820b7adfc01c74c293
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1388
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-25 07:52:43 +00:00
Ben Walker
992fd76dc7 bdevperf: Rename g_every_core_for_each_bdev to g_multithread_mode
Shorter name.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: I08916b652c0b2f263baf18032537bfc108b06438
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1387
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-25 07:52:43 +00:00
Ben Walker
4b8b624068 bdevperf: Rename end_job to bdevperf_job_drain
This function kicks off the draining process, so name it appropriately.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: Ic447aaa01612f6355ff4404d476419b55a3d0cff
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1386
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-25 07:52:43 +00:00
Ben Walker
3cd14ee3bd bdevperf: Wait for final performance dump to finish before exiting
In practice this worked out fine because the next step did an
spdk_for_each_core() which would always complete after the
performance dump with our current event library. But just in case,
make this an explicit wait.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: I07b96772ba15113cd04453243c980c6e405be872
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1385
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-25 07:52:43 +00:00
Ben Walker
1af5ff8078 bdevperf: Rename g_bdev_count to g_construct_job_count
More descriptive name. This is the number of outstanding
construct_job operations.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: I5c79ae06a521a8b6ef930146b0ce08791370a25c
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1384
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-25 07:52:43 +00:00
Ben Walker
29162b3208 bdevperf: Clarify help for -T option
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: I939216a508b5ce7fcee03b6d59a4198b6dd4fe67
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1383
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-25 07:52:43 +00:00
Ben Walker
2478c02b87 bdevperf: Rename io_target to bdevperf_job
Begin shifting to a model of "jobs", each defined as a single-threaded
I/O pattern.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: If6c0cfc1a59d3acdec1e1e6ad65a16f810582aa8
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1382
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-25 07:52:43 +00:00
Ben Walker
a6a8d51030 bdevperf: Rename io_target_group to bdevperf_reactor
There's one of these per core and it's a collection of other
jobs to run, so name it reactor.

In the longer term, this reactor will go away and each "job"
will map to a separate spdk_thread.

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Change-Id: Ica5b19e6edb2509b48059d829e22a734acd6b298
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1381
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-25 07:52:43 +00:00
Michal Berger
004b52fe6c test/bdev: Move part_dev_by_gpt() into blockdev.sh
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Change-Id: I9a888f80148d5fd2eec5feed299b0c81bb78b984
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1282
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-20 13:59:17 +00:00
Michal Berger
1db267cf0d test/bdev: Convert setup_nvme_conf() to RPC calls
Change-Id: I49415a159a5849232637f281fd9360636691d339
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1018
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-20 13:59:17 +00:00
Michal Berger
ae2d8097c3 test/bdev: convert setup_bdev_conf() to RPC calls
Change-Id: I479bb9df75468b13f739c49c60b38ab0861bf0af
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1017
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-20 13:59:17 +00:00
Michal Berger
54e713036e test/bdev: Cover default setup_bdev_conf() run in its own case
Change-Id: Ibd24c65ac8921083c5999721b720dadfa3c8de5b
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1016
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-20 13:59:17 +00:00
Michal Berger
a940721a29 test/bdev: Use separate function for cleaning lingering files
Change-Id: Ib44dbf1a4ec8e44f26cb8219e53b3ed1ae03d48b
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1095
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
2020-03-20 13:59:17 +00:00
Darek Stojaczyk
7098c65339 test/common: inline fio_config_add_job
The function is almost 20 lines long and it essentialy
appends two lines two a specified file. We don't need it.

Change-Id: I565de8e54aa71b04f15745456bec7b2b3b8fc178
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1288
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-03-19 08:50:59 +00:00
Pawel Kaminski
970601af86 test/bdev: Replace old style config with json config
Overwrite ini config with json and use it in such a form throughout
the entire test run.

This patch is the beginning of the series targeting conversion of
ini config to json in blockbdev tests.

Change-Id: Ic64f24b2ea9df85ad1ba3d038a78384e6f2badf9
Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/530
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Seth Howell <seth.howell5141@gmail.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2020-03-19 08:39:01 +00:00
Michal Berger
053c15b32b fio: Remove hardcoded path to fio repo
The hardcoded path is replaced with $CONFIG_FIO_SOURCE_DIR as defined
during the compile time.

Additionally, all checks which determine if fio is available are now
based on $CONFIG_FIO_PLUGIN=y knob instead of the presence of the fio
repo.

Change-Id: Ie469747f3863c9561f53d32e8c3f29778afaaf74
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1108
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
2020-03-17 14:44:20 +00:00
paul luse
fae0356697 test/bdevperf: fix issue with overlapping I/Os
A previous fix for miscompare had a slight issue with the scenario
where we chose an offset and then discover that it's already taken
because we've wrapped to this location before the previous IO
completed. In such case, we intended to bump the offset to just go
to the next block however we only bumped the local variable so the
next IO submitted will overwrite the previous.

The fix is simply to use the previously incremented target->offset
and increment it again for the next IO.

Signed-off-by: paul luse <paul.e.luse@intel.com>
Change-Id: I26661eb0631ac50cc4f86f42f1d1789d297e204d
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1250
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-03-17 08:23:33 +00:00
paul luse
4a9f28a482 test/bdevperf: prevent overlaping w/r/v operations
There was no sync between the start of a w/r/v operation at
a specific block with the previous completion.  This resulted
in data miscompares either because the initial Q depth was
sized such that a disk wrap need to occur to complete it or in
the event that an IO takes longer to complete than when bdevperf
loops back around to that offset.

Fixes #1208

Signed-off-by: paul luse <paul.e.luse@intel.com>
Change-Id: Ifa55da54246735e7b603fafd34718965b0f27b94
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1180
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2020-03-10 09:12:46 +00:00
paul luse
d688779dc8 bdevperf: add some prints on verify error
To provide some more clues when this happens.

Signed-off-by: paul luse <paul.e.luse@intel.com>
Change-Id: I098aaea906a1057e63f07c40a1ebb346a283983d
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1070
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2020-03-10 09:12:46 +00:00
Shuhei Matsumoto
36274df5ae bdevperf: Create and terminate io_target group threads explicitly
At startup, use number of created io_target groups to detect completion
and move to the next step. By returning completion message to the
master thread, we can avoid using any atomic operation.

At shutdown, we can use spdk_for_each_channel() conveniently. Put
voluntary spdk_thread_exit() calls into the callback to
spdk_put_io_channel().

To maintain the original behavior, number of threads created is
equal to the number of cores that SPDK app uses.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I92ca4b1c1e8da0f45b47367bc2387701f4a9742f
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/890
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2020-03-10 09:12:38 +00:00
Shuhei Matsumoto
e58b96f928 bdevperf: Use spdk_for_each_channel() for performance_dump()
Output performance dump per SPDK thread by using
spdk_for_each_channel(). This change is safe even when shutdown
case because spdk_for_each_channel() is serialized if it is
called on the same thread.

Keep lcore information because it is still valuable to know which
lcore each thread ran on for.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I996a4ca2c787d04672743b09a9415145cd8d0171
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/645
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2020-03-10 09:12:38 +00:00
Shuhei Matsumoto
d559562eaf bdevperf: Use spdk_for_each_channel() for bdevperf_construct_targets_tasks()
This patch makes bdevperf_construct_targets_tasks() asynchronous
by using spdk_for_each_channel().

The next patch will make performance_dump() asynchronous even when
shutdown case by using spdk_for_each_channel().

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I1ebf39fe89a944d977d6f1808cf8607e8f477758
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/644
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2020-03-06 10:28:53 +00:00
Shuhei Matsumoto
19367440b6 bdevperf: Factor out creating tasks on group into a helper function
This is a preparation to make bdevperf_construct_targets_tasks()
asynchronous by using spdk_for_each_channel() in the next patch.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I76c827550b2920abcba14abd7f15a3111ad10d39
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/643
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2020-03-06 10:28:53 +00:00
Shuhei Matsumoto
52d8f11ea8 bdevperf: Use spdk_for_each_channel() for bdevperf_construct/free_targets()
Squash changes for _bdevperf_construct_targets() and
bdevperf_free_targets() into a single patch to shrink the
patch series to reduce the burden of reviewers.

The pupose of the whole patch series is to move io_target from
core based to I/O channel based, and create SPDK thread per I/O channel.

It was not possible to create SPDK thread per core and then associate
target group with I/O channel as long as I tried.

So this patch moves io_target from core based to I/O channel based.
The later patch will create SPDK thread per I/O channel.

Each core has default reactor thread for now and so we can use
spdk_for_each_channel() even when we do not create and destroy SPDK
thread per target group yet.

The following is the detailed explanation:

_bdevperf_construct_targets():

Add a context for _bdevperf_construct_targets() to use
spdk_for_each_channel().

If g_every_core_for_each_bdev is false, set the target group to the
context and create target only on the group which matches the passed
group. If g_every_core_for_each_bdev is true, create target on all
groups.

Only the master thread can increment g_target_count. Hence hold
created number of targets temporary on the context and add it at
completion.

As a result of these changes, spdk_bdev_open() is called on the
thread which runs I/O to the bdev.

Hence bdevperf_target_gone() doesn't use message passing, and
bdevperf_complete() calls spdk_bdev_close() before sending
message to the master thread. Additionally, unregister pollers
directly in bdevperf_target_gone().

These changes also fix the potential issue that spdk_bdev_close()
would be called on the wrong thread if spdk_bdev_get_io_channel()
fails in bdevperf_submit_on_group().

bdevperf_free_targets():

Free each target on the thread which created it by using
spdk_for_each_channel().

This will make possible for us to use spdk_for_each_channel() for
performance dump even for shutdown case because
spdk_for_each_channel() is serialized if it is called on the same
thread.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I4fcdb1024adf4704d3c59215da5669dfdc6cca1b
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/641
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-03-06 10:28:53 +00:00
Shuhei Matsumoto
595173aaba bdevperf: Make bdevperf_construct_targets() asynchronous by sentinel value
Follow the idea of bdev_get_iostat in module/bdev/rpc/bdev_rpc.c.

Add a global variable g_bdev_count and then set it to 1 as sentinel
value in bdev_construct_targets().

Subsequent patches will make _bdevperf_construct_targets() asynchronous.
Then bdevperf_construct_targets() will be truely asynchronous.

This patch is too small to be an independent patch but keep to
hold previous review result.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I49d0b6e6d61df65d4eb31c402f98cc4300482e20
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/639
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-02-28 14:38:15 +00:00
Shuhei Matsumoto
ffc2cf1c4d bdevperf: Three Cleanups for bdevperf_construct_target()
Firstly, change unmap suppor and I/O size checks to do once per
bdev.  It is enough to check if unmap is supported and check if
I/O size is multiple of data block size once per bdev.  Hence move
these checks from bdevperf_construct_target() to
_bdevperf_construct_targets().

Secondly, use calloc() to remove unnecessary zeroings in
bdevperf_construct_target().

Thirdly, factor out getting next io_target_group from
bdevperf_construct_target().  This is a preparation to make
bdevperf_construct_target() asynchronous by using
spdk_for_each_channel().

These may be better to break-up but these are already included in
the long patch series.   So to reduce the burden of reviewers,
squash these into a single patch.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I2cb94c8aa2b6b1a1b9e9a04da533e1fd093f8f29
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/640
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-02-20 09:54:50 +00:00
Shuhei Matsumoto
ba9ce36527 bdevperf: Factor out constructing multiple targets for a bdev into a function
Factor out constructing multiple targets for a single bdev from
bdevperf_construct_targets() into an new helper function
_bdevperf_construct_targets().

Then change the return type of bdevperf_construct_targets() to void
and continue creating targets for subsequent bdevs even if failing
for any bdev. Additionally, remove a couple of comments in the source
code to avoid misunderstanding.

These changes will make us easier to use spdk_for_each_channel()
in bdevperf_construct_targets().

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I3363931749b863c8de619939939d401f14e43d15
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/638
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-02-20 09:54:50 +00:00
Shuhei Matsumoto
4579fc9d2c bdevperf: bdevperf_construct_targets_tasks() calls bdevperf_test() at its end by swapping
Creating targets, creating tasks, and then running I/O is the actual
ordering of start-up. So adjust ordering of function calls to make
easier us to follow.

Change the return type of bdevperf_construct_targets_tasks() from
int to void, and call bdevperf_test() at the end of
bdevperf_construct_targets_tasks(). Then replace bdevperf_test() by
bdevperf_construct_targets_tasks().

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Id1396ff4ba199778300f5ddaf79db5f8f2e0ccb6
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/642
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-02-20 09:54:50 +00:00
Shuhei Matsumoto
039360d302 bdevperf: Call bdevperf_test() at the end of bdevperf_construct_targets()
Move bdevperf_test() into bdevperf_construct_targets() from
_bdevperf_init_thread_done() and rpc_perform_tests(). Following the
last patch, this consolidation will make the code a little cleaner.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ided4653941f45ff6ac8edbea504560cc8a9fb5a0
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/637
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-02-20 09:54:50 +00:00
GangCao
26328b7b1a Test/QoS: enable QoS testing on Malloc with ZCOPY
We've now supported ZCOPY io type and Malloc bdev will use
ZCOPY for the read/write operation. Add the support for the
test case of Malloc with ZCOPY operation.

Change-Id: I291fc9ef82b1eae800c97c5a6b7a0c810c357fe0
Signed-off-by: GangCao <gang.cao@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/540
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2020-02-19 09:48:08 +00:00
paul luse
b69c95b67f blockdev.sh/ add QAT AES_XTS to CI
Signed-off-by: paul luse <paul.e.luse@intel.com>
Change-Id: I1329ffa4e3195b93ae92059e4c58fc0ab33445ed
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/443
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2020-02-18 08:05:42 +00:00
paul luse
aa7a13afc7 global: rename copy to accel
The copy engine library, modules and public APIs have been renamed.
Use of the word `copy` has been replaced with the word `accel`
short for accelerator in preparation for adding new capabilities
in the future. Additionally, APIs for what was previously called
the `memcpy` engine have been renamed to identify the engine as a
software accelerator.

Signed-off-by: paul luse <paul.e.luse@intel.com>
Change-Id: Ia607aa718416146fbba1e6792b8de0f66bd8a5de
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/576
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2020-02-18 08:05:34 +00:00
Shuhei Matsumoto
5780ad9638 bdevperf: Change return type of bdevperf_test() to void and include its error handling
Subsequent patches will call bdevperf_test() as callback to
bdevperf_construct_targets(). Changing return type of bdevperf_test()
to void and including its error handling will make the code cleaner.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I30fe38cfb73fbc593d079d5b66a540c0ce96fe19
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/636
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-02-10 10:26:28 +00:00
Shuhei Matsumoto
3673217aa3 bdevperf: Move target management functions close to the caller
_end_target() is an exception, and move just above bdevperf_complete().

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I2197a3b7ceb36ab29f0b69e31f3babd4e996f193
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/635
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-02-10 10:26:28 +00:00
Shuhei Matsumoto
9226dcce43 bdevperf: Put RPC main handler next to command line main handler
Put rpc_perform_tests() next to bdevperf_run(). This will improve
readability a little.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I8816a88be13e794f39ded3ff12e9a76e40c8282a
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/514
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
2020-02-10 10:26:28 +00:00
Shuhei Matsumoto
00f1443eb7 bdevperf: Move down help command / usage functions in a file
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I326b3c7e60a7aacce9a692c41dcfd0fc19825444
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/513
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-02-10 10:26:28 +00:00
Shuhei Matsumoto
f7f504cf42 bdevperf: Delete g_min_alignment and g_buf_size and use per target variables instead
Remove two global variables and use variables per target instead.

g_min_alignment:

Bdevperf creates task on a target after creating the target, and
we has removed any limitation about alignment described in the comment.

Remove g_min_alignment and use each bdev's alignment to call
spdk_zmalloc() instead.

g_buf_size:

We had set the size of task->buf by not g_buf_size but g_io_size
by mistake.  We have not used any global buffer pool and can use
buffer size per io_target instead.

Delete g_buf_size and add buf_size to struct io_target.  Then
initialize target->buf_size in bdevperf_construct_target() and use it
instead of g_buf_size including the fix in
bdevperf_construct_task_on_target().

Besides, as a minor cleanup, remove duplicated initialization of
global variables in this patch. Global variables are already
initialized at their definition. Remove duplicated initialization
from main() function. It is ensured that global variables are
automatically zeroed but write initialized value expilcitly for
compatibility and clarification.

These will be helpful to parallelize targets and tasks management among
multiple threads.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Iba23dec3e1da8810da7523da09bae858eb4484a2
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/512
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-02-10 10:26:28 +00:00
Shuhei Matsumoto
bad8847f7a bdevperf: Use spdk_thread_send_msg() instead of spdk_event_call()
Use spdk_thread_send_msg() for notification of bdev hotplug
and test completion instead of spdk_event_call().

Each I/O target group is associated with SPDK thread now. Hence
use spdk_thread_send_msg() to do bdevperf_target_gone() on the
specified thread. The group is held in struct io_target by the
previous patchm and remove target->lcore safely because it is
not used anymore.

Then use spdk_thread_send_msg() to notify master thread.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I88eadbdd1f120161cf484793f14f5eb0b44d010f
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478818
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-02-04 18:24:11 +00:00
Shuhei Matsumoto
728481f491 bdevperf: Register bdevperf as I/O device and make its start/stop asynchronous
Register the global bdevperf object as an I/O device by
spdk_io_device_register().  Create and destroy I/O target groups
asynchronously by using spdk_for_each_thread() and
spdk_for_each_channel().

spdk_for_each_thread() and spdk_for_each_channel() serialize the
execution among multiple threads, and any lock is not necessary.

Additionally, for bdevperf_submit_on_core() and
bdevperf_stop_io_on_core(), replace for their loop + event call by
spdk_for_each_channel() and rename them by
bdevperf_submit_on_group() and bdevperf_stop_io_on_group(),
respectively.

This advances the work to move bdevperf from core based to thread
based.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I63b512d0b8e734e862afe1f7a4053414b99204d7
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478780
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2020-02-04 18:24:11 +00:00
Maciej Szwed
931ac757fb test/bdevio: Add compare and write test
This patch adds test for compare-and-write fused
command. First it runs successful call of compare
and write command and then it runs again and the
second run is expected to fail.

Signed-off-by: Maciej Szwed <maciej.szwed@intel.com>
Change-Id: Iaf1151414c4dea16487e8c33630cbffb0c09ae3b

Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482606
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-01-27 17:39:52 +00:00
jiaqizho
f1687a1bd2 script: add iostat.py to check bdev iostat
this tool likes sysstat/iostat
added to qos test

Signed-off-by: jiaqizho <jiaqi.zhou@intel.com>
Change-Id: I7ed6538095d34fa8c5835f28b25d618f1b3d81b7
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/476537
Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Seth Howell <seth.howell@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-01-22 13:51:41 +00:00
Seth Howell
de30327534 test/blockdev: parameterize the blockdev tests.
Now we can actually know which tests we are running on which bdevs when
we call blockdev.sh. Removing the conditionals from the configuration
setup (or failing if they don't succeed) and then calling run_test from
the top level allows us to reliably track the bdev tests and fail if
they don't run on a desired class of bdev.

Change-Id: I14e6e3d993b4af4995adcbc5f138bac4ae9d63be
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478247
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-01-22 13:50:17 +00:00
Seth Howell
6ac949c0d1 test/blockdev: check bdev list before running unmap
Some bdevs don't support unmap so they may not be able to run the fio
unmap tests. In case none of the bdevs we are testing support this
operation, the test will be skipped.

Change-Id: I5063297f0378bc87abf50e5311d147251cfe0ad9
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478337
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
2020-01-22 13:50:17 +00:00
Seth Howell
5883d34300 test/blockdev: parameterize the nbd test.
This allows us to run the NBD tests on any combination of bdevs
based on the flags passed to the script. Previously we ran the tests
on a specific grouping of bdevs and opted to only free one type (passthru)
over RPC after the test ran. Rather than free all bdev types in the new
implementation, I opted to not free any of them via RPC and rather allow
the application to close them at termination time.

Change-Id: I574db4f941bfbb073cceed4610e1f5d43028569f
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478246
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-01-22 13:50:17 +00:00
Seth Howell
b2235c1f97 test/blockdev.sh: parameterize hello_world test
Just to make sure that we always test against a valid bdev.

Change-Id: I7c9786f32b8d5ff5f2bf9c86151fb7f2bdfdf5f3
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478245
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
2020-01-22 13:50:17 +00:00
Seth Howell
d4e52cacfd test/bdev: remove the gpt conf file / parameterize tests
Previously, we only ran bdevperf tests against GPT partitioned NVMe
drives. These tests are generally applicable and should be run against
all of the bdev types we support.

So long story short this configuration file isn't needed and we can just
get rid of it.

Change-Id: Ia6ded22ce16fc1f76b7d99643b9d37e3ecbd1c60
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478244
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-01-22 13:50:17 +00:00
Seth Howell
e4eee61717 test/bdev: move all configuration to functions
This will allow us to parameterize the blockdev.sh script and call it
individually from different jobs.

Change-Id: I8585c12dedfb1a32ea206a09a544440d2e794d4b
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478242
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
2020-01-22 13:50:17 +00:00
Seth Howell
8d945f5256 test/blockdev: move configuration into the script.
Change-Id: I795e729f6e0497a56a0328bb308bc9d32f44922b
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478241
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-01-22 13:50:17 +00:00
Seth Howell
e0f9038893 test/blockdev.sh: change the way we run fio tests.
Previously, we conditionally ran one test in per patch, and another in
nightly tests. However, the only difference between these tests was the
configuration options sent to FIO. All other tests in the build pool
follow a pattern where they simply change the options and run the same
test in nightly and per-patch.
Following that pattern makes it easier to set a specific list of jobs
that must be run before a tet run is considered complete.

Change-Id: I6b2f49114155fdfa1d1e07faf45f03e64572eeb8
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/481908
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
2020-01-22 13:50:17 +00:00
Shuhei Matsumoto
f594537a48 bdevperf: Reset g_run_rc to 0 after sending RPC reply
When RPC kicks the test and the test results in error, RPC response
should return error but bdevperf application should not return error.

RPC can kick the test multiple times, and if RPC kicks the test again
and it completes normally, RPC response should return success.

So reset g_run_rc to 0 after sending RPC response.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I59a7c06a293ba7f7b5caa8171bcfb54d736524da
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479914
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-01-16 09:16:52 +00:00
Shuhei Matsumoto
9b36011acc bdevperf: Hold io_target_groups until exiting bdevperf
Previously bdevperf_free_targets() had freed not only io_targets
but also io_target_groups.  This had made repeated runs by RPC
impossible.  This patch series will fix this issue later but we
cannot wait for that and fix the issue now.

Fixes #1139.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I88cf5725579b704bc3826bd4c0b2dd9f4e70db30
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479912
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-01-16 09:16:52 +00:00
Shuhei Matsumoto
116a4afcc3 bdevperf: Unregister pollers immediately when target exits with error
_target_gone() and end_target() do almost same operations.  We had
not unregistered  pollers at the cases that sets target->is_draining
to true. The later had hit assert when the test ended with I/O error
before completion because when target->run_timer is expired,
end_target() would be called after target is freed.  Hence we do
both in this patch.

Factor out the operations from _target_gone() and end_target() into
a helper function.

Then, when the target exits with error, unregister pollers of the
target immediately by replacing setting target->is_draining to true
by _end_target(target). We had seen the assert for a single case
but apply the fix for all cases.

Fixes issue #1140

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: If39779817ed99c9441e368c1d4512c66d13d3378
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479911
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2020-01-16 09:16:52 +00:00
Seth Howell
a571eb03e9 test: move report_test_completion into run_test
This also requires us to change the create_test_list function to rely on
the run_test function for creating the canonical test list.

Change-Id: Ib35e7752935a3ac83de2702b6dfbd42539027f6a
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/476962
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-01-14 07:49:08 +00:00
Shuhei Matsumoto
71600c57b3 bdevperf: Add struct spdk_bdevperf and allocate its global instance
Add struct spdk_bdevperf and include header of io_target_group list
in it, and then allocate its global instance g_bdevperf statically.
Rename g_head by groups for clarification.

The next patch will register g_bdevperf as SPDK IO device and
allocate io_target_group as context of the corresponding IO channel.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I6755ce8cc05b00cbc0d5dc7983ec01fe3483f4cf
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478779
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2020-01-08 09:12:35 +00:00
Shuhei Matsumoto
679f6d6e3c bdevperf: bdevperf_fini() and rpc_perform_tests_cb() refer g_run_rc directly
Remove a parameter from bdevperf_fini() and rpc_perform_tests_cb()
and they refer g_run_rc directly.  This is a preparation to the next
patch to avoid introducing any dynamically allocated context.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I42f1c7e8bc662799b3fcbf2769139174bb527314
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478834
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-01-08 09:12:35 +00:00
Shuhei Matsumoto
ceaee98aa9 bdevperf: Extract and inline bdevperf_free_targets() into bdevperf_test_done()
We don't have ordering constraint between bdevperf_free_targets()
and sending RPC response. So extract bdevperf_free_targets() from
bdevperf_fini() and rpc_perform_tests_cb() and inline it into
bdevperf_test_done(). As a result of this change, bdevperf_fini()
calls just spdk_app_stop(), but is still necessary in the subsequent
patches. So keep bdevperf_fini().

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ie8ed2d04db754b8a265296932f73d3a602d1f90b
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479373
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
2020-01-08 09:12:35 +00:00
Shuhei Matsumoto
411f1c90c6 bdevperf: Factor out finish operation of command line and RPC invocation
Factor out test finish operation of command line invocation case and
RPC invocation case.  Then apply the new funciton bdevperf_test_done()
to all calls bdevperf_fini() or rpc_perform_tests_cb().

The purpose of this refactoring is as follows:
- Consolidating finish operation improves code readability and
  maintainability, and may enable further improvement in future.
- The next patch will consolidate bdevperf_free_targets() from
  bdevperf_fini() and rpc_perform_tests_cb() into bdevperf_test_done().
  This refactoring is a preparation.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I06801541e4c4ed28774debad56d901dbeb5a9193
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479372
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-01-08 09:12:35 +00:00
Shuhei Matsumoto
95754cd170 bdevperf: Reorder state checks in spdk_bdevperf_shutdown_cb()
io_target_group manages io_targets, and hence checking g_head
should be done earlier than checking g_target_count.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I112018d8f487b387ae5f4f444a342be2c8da167d
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479350
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
2020-01-08 09:12:35 +00:00
Shuhei Matsumoto
801e76d8bf bdevperf: Change g_run_failed to g_run_rc and use it correctly
Change bool g_run_failed to int g_run_rc.  If any error is detected
during bdevperf running, negative return code is directly set to
g_run_rc. Then g_run_rc is passed to rpc_perform_tests_cb() or
bdevperf_fini().

Besides, we had updated g_run_failed even after spdk_app_start()
returned.  However return code of spdk_app_start() might not be of
bdevperf_run().  Hence change main() to return the return code of
spdk_app_start() simply without updating g_run_failed.

Additionally, even if g_target_count becomes zero in
spdk_bdevperf_shutdown_cb(), g_run_rc may indicate error.  So,
change spdk_bdevperf_shutdown_cb() to pass g_run_rc to
bdevperf_fini().

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ia85680679087c3106ba687d7e58027ae8ff4a5c7
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478833
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2020-01-03 15:07:58 +00:00
Shuhei Matsumoto
5412468f87 bdevperf: Use negative errno to pass bdevperf_fini() or rpc_perform_tests_cb()
bdevperf_fini() had expected to get one but rpc_perform_tests_cb()
had expected to get negative errno for any error. Using negative
errno will be reasonable and change the code accordingly.

The next patch will unify local rc variables and the global g_run_failed
by changing g_run_failed to g_run_errno.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ia43da0793f8e77a5d5491758589e9b77f4cf86e7
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478832
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2020-01-03 15:07:58 +00:00
Shuhei Matsumoto
c3aad41fb1 bdevperf: Factor out free targets and call app_stop() into bdevperf_fini()
This is a preparation to subsequent patches. They will make start
and stop of bdevperf asynchronous. Encapsulating free targets and
call app_stop() will be helpful for them.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I1a86d787614be048cec66e5d5fcfeb85de843ad5
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478817
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2020-01-03 15:07:58 +00:00
Shuhei Matsumoto
e7a300e096 bdevperf: Free all targets before exiting bdevperf application
We will use SPDK application framework (SPDK thread, IO channel, and
etc) to manage IO target groups, and will need to free IO target
groups before exiting bdevperf application.  As a preparation,
move bdevperf_free_targets() before returning from spdk_app_start().

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Id695a88107f87a9573c281f7f7d26d91d3a307b5
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478778
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-01-03 15:07:58 +00:00
Shuhei Matsumoto
f4e536cb57 bdevperf: Use rpc_perform_tests_cb to remove duplicated code
Due to the last patch, we can use rpc_perform_tests_cb() in
rpc_perform_tests() simply and remove the duplicated code.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Id56da12fb5c52b6d178912f2f6cc7ead8a9cc36e
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478761
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-01-03 15:07:58 +00:00
Shuhei Matsumoto
15cc012336 bdevperf: Move g_target_count check into bdevperf_test()
Subsequent patches will make bdevperf_construct_targets() asynchronous
and call bdevperf_test() as its callback. Moving g_target_count
check into bdevperf_test() will make the change easier.

As a result of this move, rpc_perform_test() is simplified a little.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I308ab472a0021278af1a1f5aa65268126a60673f
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478760
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-01-03 15:07:58 +00:00
Shuhei Matsumoto
fd9c6a3d66 bdevperf: Use SPDK event to call bdevperf_target_gone() on the correct core
Fix the issue that target->run_timer and target->reset_timer needed to
be called on the core which runs the target.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ia36681ac51a46f272e5738d0ae63838939e71e28
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478712
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-01-03 15:07:58 +00:00
Shuhei Matsumoto
aa3df27439 bdevperf: Call put_io_channel on the core which called get_io_channel
spdk_put_io_channel() sends message if the core on which it is
called is different from the core which called spdk_get_io_channel().

However, ch->ref is guarded by mutex at free and we should call
spdk_put_io_channel() on the core which called spdk_get_io_channel()
as possible as we can.

Hence move spdk_put_io_channel() from end_run() to bdevperf_complete().

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I8816b28625869662c6b9124036b619b76bf96a3c
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478709
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Seth Howell <seth.howell@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-01-03 15:07:58 +00:00
Shuhei Matsumoto
1d0048097d bdevperf: Change io_target_groups from array to linked list
This patch changes io_target_group from array to linked list
and removes g_coremap.

In particular, change how to choose io_target_group for each
target, and reverse if condition in performance_dump(). These
changes will the code clearer.

Besides, remove blockdev_heads_destroy() because it just calls
bdevperf_free_targets() now.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I170a1c58fe2df9a11902224dd8634462a9af6123
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478565
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2020-01-03 15:07:58 +00:00
Shuhei Matsumoto
333fd3ee32 bdevperf: Delete g_coremap and use lcore of io_target_group instead
The role done by the variables has been replaced by lcore of
struct io_target_group. So we can delete them safely.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I2ed856c8ccfda1d72b3fc97677fecaf295df37af
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478706
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Seth Howell <seth.howell@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2020-01-03 15:07:58 +00:00
Shuhei Matsumoto
f20617066e bdevperf: Hold associated core ID in struct io_target_group
Hold associated core ID in io_target_group and use it later.
This simplifies event calls in bdevperf because we don't need
to get core ID from io_target.

The next patch will delete g_coremap safely because io_target_group
manages lcore correctly now. lcore of the struct io_target will
be deleted too but it will be more later.

The subsequent patches will move bdevperf from core based to
thread based and the added core ID will be removed eventually in
this patch series. However these changes are helpful even so.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ia763a79bc3810a15485285aebb9fc15a8d48332f
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478705
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Seth Howell <seth.howell@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-01-03 15:07:58 +00:00
Shuhei Matsumoto
bc08958b6a bdevperf: Add io_target_group and chain associated io_targets to it
Add struct io_target_group and chain associated io_targets to it.

Particularly, replace current target->next pointer by TAILQ, pass
not the head io_target pointer but the io_target_group pointer to
event call, and use TAILQ_INSERT_HEAD() in bdevperf_construct_target()
to keep the current ordering.

Besides, add pointer to the queued io_target_group to struct
io_target to use it later.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ib37db825a863f7795c55c19fae0d38efd80c607e
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478563
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Seth Howell <seth.howell@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-01-03 15:07:58 +00:00
Shuhei Matsumoto
0bc0463e3e test/bdevio: Use local instance of cpuset in test_main()
bdevio test tool is not critical but change it to use instance
of cpuset to spread statically allocation of cpuset throughout.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I9722d491cb6ec3202312285013105f7b6aeb1f15
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478581
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
2020-01-03 08:32:38 +00:00
Shuhei Matsumoto
df8992dfb1 bdevperf: Change break to continue in some for loops
Number of entries of the array g_head is spdk_env_get_core_count(),
and hence we did not need to break from some for loops.  For them,
continue to the next iteration will be more appropriate and do the
changes in this patch.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I6e97099622d58f44d92482beaf24ca61de4ca038
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478756
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Seth Howell <seth.howell@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2019-12-30 11:46:51 +00:00
Shuhei Matsumoto
3b69ae8596 bdevperf: Remove the code A = spdk_min(A, A) from bdevperf_parse_arg()
period_in_usec = spdk_max(period_in_usec, period_in_usec) doesn't
look meaningful. So remove it.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Iaca35259f40dde02a89f6e3ffed070dd920192c5
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478691
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Alexey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Seth Howell <seth.howell@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
2019-12-30 11:46:51 +00:00
Shuhei Matsumoto
e4e4a96543 bdevperf: Always pass the submitting task to bdevperf_submit_single()
Extract bdevperf_target_get_task() from bdevperf_submit_single().
Then inline the contents of bdevperf_prep_task() into
bdevperf_submit_single() and remove bdevperf_prep_task().

These two patches simplify a little weird nesting and parameter
passing of bdevperf_submit_single().

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I37f4ca732d6d9479553365cd612b90dec51e2228
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478690
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Alexey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Seth Howell <seth.howell@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
2019-12-30 11:46:51 +00:00
Shuhei Matsumoto
50b79fa639 bdevperf: Factor out getting free task from io_target to a function
This patch and the next patch will simplify the nesting of task
submission.

Factor out the operation to get free task from io_target into a
helper function bdevperf_target_get_task(). Use
bdevperf_target_get_task() in bdevperf_submit_single() and
reset_target().

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I4cb147a5a6c84cc2b0e517dc35a106d37affaa10
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478689
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Alexey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Seth Howell <seth.howell@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
2019-12-30 11:46:51 +00:00
Seth Howell
cb90136c33 test: eliminate case and suite from run_test
We will be able to distinguish case and suite in the post process
scripts based on if they have any internal tests.

Change-Id: Iff2aa5caa251924d8a842085d87eb2a17aca45d4
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478522
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
2019-12-24 08:24:42 +00:00
dongx.yi
c3fe5e4adc bdevperf: Unify the units with perf.
Other tools have already changed these units to IOPS and MiB.

Unify the units, that makes the result comparing more clear
with bdevperf and perf.

Signed-off-by: dongx.yi <dongx.yi@intel.com>
Change-Id: Iedc47f5757839e1abbcbaf5d97179c90ab130773
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478280
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Alexey Marchuk <alexeymar@mellanox.com>
2019-12-19 11:04:39 +00:00
Seth Howell
f506cc42bd test/bdev: fix nightly failure on hello_bdev
Currently the blockdev.sh tests fail due to using a GPT partition on the
hello_bdev portion of the test. On some of the test machines, sgdisk is
not installed, so they silently fail to create the GPT partitions that we
were trying to use.

This change is only geared towards fixing the current nightly failure in
the bdev tests. It does not address the test machines silently failing to
create GPT partitions.

fixes: issue #1107

Signed-off-by: Seth Howell <seth.howell@intel.com>
Change-Id: If58201ff4eb7dce9a44e2f93dfe25601ad1b508a
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/477611
Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2019-12-17 14:54:40 +00:00
Seth Howell
c4d4abcf64 test/bdev: convert fio test to run_test semantics
Change-Id: I842491321a8797cadca973caba499251a91dfa2f
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/477491
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2019-12-17 14:54:40 +00:00
Seth Howell
d6379a8833 test/bdev: convert qos tests to run_test semantics.
Change-Id: I5b52cc57c09bebcb80921821f293ab464c9f915a
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/477490
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2019-12-17 14:54:40 +00:00
Seth Howell
8295a2b0b7 test/bdev: start converting to run_test semantics.
Change-Id: Ic007e6cf8e00402fb5a1e0343b3314f4242efcd0
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/477489
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2019-12-17 14:54:40 +00:00
Seth Howell
5170ac8d83 test/blockdev: move configuration before tests.
This is a significant simplification to the whole test script. Note, it
does force us to run the hello_bdev example against a gpt bdev instead
of an nvme bdev directly, but I see this as an acceptable tradeoff since
it seems like the purpose of running the hello_bdev example is mostly to
ensure that the example itself is not broken.

Change-Id: I8c2a1ede8e7ece2a82222593a7ae46704cc658af
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/476935
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2019-12-10 17:12:03 +00:00
Seth Howell
1fafd71bc3 test: add timing calls to run_test
And clean out the corresponding calls to timing_enter and timing_exit
from the various test scripts.

Change-Id: I0759417b5a529e4c3649ce04cca1799c089da278
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/476804
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
2019-12-10 17:12:03 +00:00
GangCao
863bb94b24 test/qos: use two bdevs for the QoS testing
Add another bdev for the QoS bandwdith limit testing.

Change-Id: Icf334c636df92c3e0c623cdb606e5a5264ba80d2
Signed-off-by: GangCao <gang.cao@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/475229
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
2019-12-04 15:17:53 +00:00
GangCao
9b47757bc3 test/qos: update the IO result calculation
There is possible overflow when getting throughput as
that value is in byte and we also use tick for the
calculation.

Change-Id: Id1f0fd4903af5e8362f1fcafebac33223d36eb34
Signed-off-by: GangCao <gang.cao@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/475475
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2019-12-04 15:17:53 +00:00
Maciej Wawryk
fdc82d3bc8 test: Shellcheck - correct rule: Double quote array
Correct shellcheck rule SC2068: Double quote array expansions to avoid re-splitting elements.

Signed-off-by: Maciej Wawryk <maciejx.wawryk@intel.com>
Change-Id: Iefc4f0104249f4d437a66c3d9c7a195f4f6f6da3
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/475690
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2019-11-27 07:08:57 +00:00
Maciej Wawryk
40e4e420b8 Fixed nightly error in bdev_raid.sh
In nightly tests there was error:
    rpc.py: error: unrecognized arguments: Base_2"
caused by patch: 029251878d
The problem was caused by chars escapes.

Signed-off-by: Maciej Wawryk <maciejx.wawryk@intel.com>
Change-Id: If6ebce1de5845bc14a957f4b68250da163309a05
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/475676
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2019-11-25 14:34:30 +00:00
Maciej Wawryk
029251878d test: Shellcheck - correct rule: Consider using { cmd1; cmd2; }
Correct shellcheck rule SC2129: Consider using { cmd1; cmd2; } >> file instead of individual redirects.

Signed-off-by: Maciej Wawryk <maciejx.wawryk@intel.com>
Change-Id: Ic692e9f78f2d3d8a3b27d702884cbe97c880727c
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/474959
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
2019-11-22 13:51:15 +00:00
Shuhei Matsumoto
91cc56ac15 test/bdev: Calculate accurate time interval to verify QoS limit
By using two ticks values and tick_rate, we can get more accurate
time interval to verify QoS limit.  This may get rid of our
anxiety about latency of sleep command and RPC calls.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ic7deee8e778fbd653f01e8426640a96245cee437
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/475168
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: GangCao <gang.cao@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2019-11-21 08:05:23 +00:00
GangCao
a31ae23f38 test/bdevperf: add the QoS testing
Add a required check that the reasonable IOPS limit is quarter
of the measured actual IOPS without QoS. As I/O size is set
to 4K, so that bandwidth limit is also able to meet once the
IOPS limit is achieved.

Change-Id: Id9a401ce59f97245c505ebe0d1f4c18049177132
Signed-off-by: GangCao <gang.cao@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/447758
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2019-11-18 13:15:45 +00:00
Seth Howell
bdeb41a3cd bdevperf: add force completions mode.
When we are using bdevperf for some sort of reset test, we need to make
sure that it doesn't cause failed requests to stop the test. We already
have the g_reset flag, but we can't use that for tests where we only
want to simulate a target disconnect event.

Change-Id: I0cbf495708a1e6680682b099e8c17862ec6ff3e2
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/473761
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Alexey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2019-11-15 18:40:37 +00:00
Pawel Kaminski
074df1d896 test: Shellcheck - apply rule SC2155
Declare and assign separately to avoid masking return values.

Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Change-Id: Ib90598e4268911a3056e8a0baa7d541edaa29b91
Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/472287
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2019-11-12 18:14:59 +00:00
Pawel Kaminski
39e8a95c71 test: Shellcheck - apply rule SC2152
Can only return 0-255. Other data should be written to stdout.

Change-Id: Idb8b387f438121e6b6afe62840ddee752872d7d7
Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/472605
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2019-11-06 14:48:14 +00:00
Michael Haeuptle
53b92a6c18 nvme: allow setting of completion queue CDW0
This change allows setting of the NVMe completion queue
CDW0 in spdk_bdev_io_complete_nvme_status.

Before that change, handling of vendor specific NVMe IO
commands was limited since there wasn't a way to return
command specific info back to the initiator.

Change-Id: I250d5df3bd1e62ddb89a011503d42bd4c8390f9b
Signed-off-by: Michael Haeuptle <michael.haeuptle@hpe.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/470678
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2019-10-24 18:02:38 +00:00
GangCao
3fbc84d306 fio/bdev: fix the AIO bdev intermittent IO failure
This is to solve below github issue:
https://github.com/spdk/spdk/issues/935

Change-Id: I9b90f58c2756a415916d54ea49e62dbb467db4a0
Signed-off-by: GangCao <gang.cao@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/471428
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2019-10-24 17:32:33 +00:00
GangCao
8fbf2b687f bdevperf: new parameter to send I/Os to each bdevs from all cores
Add a new parameter "-C" to allow to send I/Os to all specified
bdevs from all allocated cores. This means any bdev will get I/Os
from all specified cores. This is same logic together with the "-T"
parameter to specify one bdev.

Change-Id: I1e38d49824afe8084fcad72b18649657eb5c50cd
Signed-off-by: GangCao <gang.cao@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/470805
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Xiaodong Liu <xiaodong.liu@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2019-10-10 16:19:43 +00:00
GangCao
a424dcbcc6 bdevperf: enable multi-core running for less bdevs
If number of bdev is smaller than number of configured
cores, the bdevperf tool will exit abnormally.

Change-Id: I88e08d1bc71af8b927c701c80f6ddd2bf22c659c
Signed-off-by: GangCao <gang.cao@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/469669
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Xiaodong Liu <xiaodong.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2019-10-10 16:19:43 +00:00
Maciej Wawryk
b854d55806 test: Shellcheck - correct rule: Use ./*glob*
Correct shellcheck rule SC2035: Use ./*glob* or
-- *glob* so names with dashes won't become options.

Signed-off-by: Maciej Wawryk <maciejx.wawryk@intel.com>
Change-Id: If41cc6c4571b78ab7533a8156239bc879fab0216
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/470731
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2019-10-09 14:28:21 +00:00
Seth Howell
aff8f83bee test/blcokdev: don't print the output of fio.
The nightly tests have a high number of intermittent failures on the
crypto_autotest job at the point where the output of this command gets
printed. I believe that printing that output can cause the ssh
connection to drop.

Change-Id: I5cd510cf7921c7a07b9560a0e5d10a635fd1ac4f
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/470089
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2019-10-04 15:16:49 +00:00
Shuhei Matsumoto
de5c7b8a40 bdevperf: Use zcopy APIs for write I/O with verify or reset cases
When zcopy APIs are used, target->buf cannot be passed directly
to the bdev layer. Hence in addition to the last patch, copy target->buf
to the buffer allocated by spdk_bdev_zcopy_start() when g_verify or
g_reset is true. When g_verify or g_reset is true, a little performance
degradation will be acceptable.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I2caa4d0423f727954220c4ceac6b37f1b532013d
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/467901
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2019-09-20 20:24:24 +00:00
Pawel Kaminski
5456a43053 rpc: Rename get_nbd_disks to nbd_get_disks
Change-Id: I15aa0cc4fe26869a938b0ba81b6b5b4acc63fe21
Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/468584
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2019-09-19 20:56:35 +00:00
Pawel Kaminski
d242f5a041 rpc: Rename stop_nbd_disk to nbd_stop_disk
Change-Id: I235460f445d7bc1dd03eaeaf794016ca808e5ebc
Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/468583
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2019-09-19 20:56:35 +00:00
Pawel Kaminski
0a993323f9 rpc: Rename start_nbd_disk to nbd_start_disk
Change-Id: I46722176726076fd8bbcfa681eb7316e30ecb07d
Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/468580
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2019-09-19 20:56:35 +00:00
Maciej Wawryk
f07315342c RPC: rename rpc construct_raid_bdev to bdev_raid_create
Signed-off-by: Maciej Wawryk <maciejx.wawryk@intel.com>
Change-Id: I15e33d85d2ecb058dd8e73219537df262a0077be
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/467917
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2019-09-19 19:24:47 +00:00
Maciej Wawryk
b9477173a3 RPC: rename rpc get_raid_bdevs to bdev_raid_get_bdevs
Signed-off-by: Maciej Wawryk <maciejx.wawryk@intel.com>
Change-Id: I92a42d61ac8a189827a6abb229aa9b97084beabb
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/467914
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Pawel Kaminski <pawelx.kaminski@intel.com>
2019-09-19 19:24:47 +00:00
Shuhei Matsumoto
f66aea7fc3 bdevperf: Use zcopy APIs for simple write I/O case
Add a bdev_io pointer to struct bdevperf_task.

In bdevperf_zcopy_get_buf_complete() which is the callback to
spdk_bdev_zcopy_start(), bdev_io is saved into the current task.

Then bdevperf_submit_task() will call spdk_bdev_zcopy_end()
by using the saved bdev_io.

Besides, when spdk_bdev_zcopy_start() is called with populate=false,
increment target->current_queue_depth when it completes successfully,
and do not increment target->current_queue_depth when the corresponding
spdk_bdev_zcopy_end() is called with commit=true.

The reason is that IO processing is already started when
spdk_bdev_zcopy_start() is called.

The next patch will use zcopy APIs for write I/O with verify or
reset cases.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I12f3b1ccac726abe345a64f06e33d65d2a3538fd
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/467900
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
2019-09-19 04:40:57 +00:00