app: enable configurable msg_mempool_size for reactor
This patch adds "--msg-mempool-size" option for spdk app to allow reactors' msg_mempool_size being configurable via commond line. We tested the rbd_bdev performance for Ceph CTX sharing with high RBD volume count via bdevperf. When testing with 256 volumes and limited Ceph CTX (e.g., 2 Ceph ctx for 256 volumes, which are created though bdev_rbd_register_cluster), error message "the *ERROR*: msg could not be allocated error message" keeps showing and the bdev_perf program hangs. We found the issue from the limited msg_mempool_size size, which is hardcoded by SPDK_DEFAULT_MSG_MEMPOOL_SIZE in thread.h. Therefore, we enable the "--msg-mempool-size" option to allow configurable msg_mempool_size. Signed-off-by: Yue-Zhu <yue.zhu@ibm.com> Change-Id: I54db7fd46247b2f18112bb994ecce6f4b7e5bf9c Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15552 Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot
This commit is contained in:
parent
3a3802438d
commit
e189949f38
@ -128,6 +128,8 @@ static const struct option g_cmdline_options[] = {
|
|||||||
{"rpcs-allowed", required_argument, NULL, RPCS_ALLOWED_OPT_IDX},
|
{"rpcs-allowed", required_argument, NULL, RPCS_ALLOWED_OPT_IDX},
|
||||||
#define ENV_VF_TOKEN_OPT_IDX 269
|
#define ENV_VF_TOKEN_OPT_IDX 269
|
||||||
{"vfio-vf-token", required_argument, NULL, ENV_VF_TOKEN_OPT_IDX},
|
{"vfio-vf-token", required_argument, NULL, ENV_VF_TOKEN_OPT_IDX},
|
||||||
|
#define MSG_MEMPOOL_SIZE_OPT_IDX 270
|
||||||
|
{"msg-mempool-size", required_argument, NULL, MSG_MEMPOOL_SIZE_OPT_IDX},
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -860,6 +862,8 @@ usage(void (*app_usage)(void))
|
|||||||
}
|
}
|
||||||
printf(" --disable-cpumask-locks Disable CPU core lock files.\n");
|
printf(" --disable-cpumask-locks Disable CPU core lock files.\n");
|
||||||
printf(" --silence-noticelog disable notice level logging to stderr\n");
|
printf(" --silence-noticelog disable notice level logging to stderr\n");
|
||||||
|
printf(" --msg-mempool-size <size> global message memory pool size in count (default: %d)\n",
|
||||||
|
SPDK_DEFAULT_MSG_MEMPOOL_SIZE);
|
||||||
printf(" -u, --no-pci disable PCI access\n");
|
printf(" -u, --no-pci disable PCI access\n");
|
||||||
printf(" --wait-for-rpc wait for RPCs to initialize subsystems\n");
|
printf(" --wait-for-rpc wait for RPCs to initialize subsystems\n");
|
||||||
printf(" --max-delay <num> maximum reactor delay (in microseconds)\n");
|
printf(" --max-delay <num> maximum reactor delay (in microseconds)\n");
|
||||||
@ -1036,6 +1040,16 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
|
|||||||
opts->mem_size = (int) mem_size_mb;
|
opts->mem_size = (int) mem_size_mb;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case MSG_MEMPOOL_SIZE_OPT_IDX:
|
||||||
|
tmp = spdk_strtol(optarg, 10);
|
||||||
|
if (tmp <= 0) {
|
||||||
|
SPDK_ERRLOG("Invalid message memory pool size %s\n", optarg);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
opts->msg_mempool_size = (size_t)tmp;
|
||||||
|
break;
|
||||||
|
|
||||||
case NO_PCI_OPT_IDX:
|
case NO_PCI_OPT_IDX:
|
||||||
opts->no_pci = true;
|
opts->no_pci = true;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user