lvol, blob: make channel operations number configurable for blob.
We need to make the channel operations numbers configurable for blob. Reason: for iSCSI tests, if there is one CPU core, there will be only one channel, thus read stress tests would fail since we need more operations for blob channel. Select a value equal to the small buffer size(8192) for bdev layer, thus we can solve the iSCSI read issue correctly. Since for bdev read, we currently only allow 8192 active bdev I/o requests, so this solution should work. PS: Current solution is still not perfect, I think the very precise fix is that we need to restrict sending I/Os to the blob, if there is no channel operations. Though current code, we have retry I/O in bdev , but it still fails the iSCSI high pressure test. Change-Id: I211f7a89d144af2c96ad4cc1bd7ac8e94adc72e7 Signed-off-by: Ziye Yang <optimistyzy@gmail.com> Reviewed-on: https://review.gerrithub.io/393115 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
a70a000997
commit
4ebe8214dd
@ -1489,7 +1489,7 @@ spdk_bs_opts_init(struct spdk_bs_opts *opts)
|
||||
opts->cluster_sz = SPDK_BLOB_OPTS_CLUSTER_SZ;
|
||||
opts->num_md_pages = SPDK_BLOB_OPTS_NUM_MD_PAGES;
|
||||
opts->max_md_ops = SPDK_BLOB_OPTS_MAX_MD_OPS;
|
||||
opts->max_channel_ops = SPDK_BLOB_OPTS_MAX_CHANNEL_OPS;
|
||||
opts->max_channel_ops = SPDK_BLOB_OPTS_DEFAULT_CHANNEL_OPS;
|
||||
memset(&opts->bstype, 0, sizeof(opts->bstype));
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@
|
||||
#define SPDK_BLOB_OPTS_CLUSTER_SZ (1024 * 1024)
|
||||
#define SPDK_BLOB_OPTS_NUM_MD_PAGES UINT32_MAX
|
||||
#define SPDK_BLOB_OPTS_MAX_MD_OPS 32
|
||||
#define SPDK_BLOB_OPTS_MAX_CHANNEL_OPS 512
|
||||
#define SPDK_BLOB_OPTS_DEFAULT_CHANNEL_OPS 512
|
||||
#define SPDK_BLOB_BLOBID_HIGH_BIT (1ULL << 32)
|
||||
|
||||
struct spdk_xattr {
|
||||
|
@ -40,6 +40,9 @@
|
||||
/* Length of string returned from uuid_unparse() */
|
||||
#define UUID_STRING_LEN 37
|
||||
|
||||
/* Default blob channel opts for lvol */
|
||||
#define SPDK_LVOL_BLOB_OPTS_CHANNEL_OPS 8192
|
||||
|
||||
SPDK_LOG_REGISTER_COMPONENT("lvol", SPDK_LOG_LVOL)
|
||||
|
||||
static TAILQ_HEAD(, spdk_lvol_store) g_lvol_stores = TAILQ_HEAD_INITIALIZER(g_lvol_stores);
|
||||
@ -391,6 +394,7 @@ spdk_lvs_load(struct spdk_bs_dev *bs_dev, spdk_lvs_op_with_handle_complete cb_fn
|
||||
req->bs_dev = bs_dev;
|
||||
|
||||
spdk_bs_opts_init(&opts);
|
||||
opts.max_channel_ops = SPDK_LVOL_BLOB_OPTS_CHANNEL_OPS;
|
||||
strncpy(opts.bstype.bstype, "LVOLSTORE", SPDK_BLOBSTORE_TYPE_LENGTH);
|
||||
|
||||
spdk_bs_load(bs_dev, &opts, _spdk_lvs_load_cb, req);
|
||||
|
Loading…
Reference in New Issue
Block a user