scheduler: Add option to provide scheduler period in framework_set_scheduler RPC
Signed-off-by: Maciej Szwed <maciej.szwed@intel.com> Change-Id: I96a8937ffe8751f093227589b076a5ae77fa5f16 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5295 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
cc0d13f7e6
commit
6e3346df5b
@ -432,6 +432,7 @@ SPDK_RPC_REGISTER("framework_get_reactors", rpc_framework_get_reactors, SPDK_RPC
|
|||||||
|
|
||||||
struct rpc_set_scheduler_ctx {
|
struct rpc_set_scheduler_ctx {
|
||||||
char *name;
|
char *name;
|
||||||
|
uint64_t period;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -442,6 +443,7 @@ free_rpc_framework_set_scheduler(struct rpc_set_scheduler_ctx *r)
|
|||||||
|
|
||||||
static const struct spdk_json_object_decoder rpc_set_scheduler_decoders[] = {
|
static const struct spdk_json_object_decoder rpc_set_scheduler_decoders[] = {
|
||||||
{"name", offsetof(struct rpc_set_scheduler_ctx, name), spdk_json_decode_string},
|
{"name", offsetof(struct rpc_set_scheduler_ctx, name), spdk_json_decode_string},
|
||||||
|
{"period", offsetof(struct rpc_set_scheduler_ctx, period), spdk_json_decode_uint64, true}
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -460,6 +462,10 @@ rpc_framework_set_scheduler(struct spdk_jsonrpc_request *request,
|
|||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (req.period != 0) {
|
||||||
|
_spdk_scheduler_period_set(req.period);
|
||||||
|
}
|
||||||
|
|
||||||
ret = _spdk_scheduler_set(req.name);
|
ret = _spdk_scheduler_set(req.name);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
|
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
|
||||||
|
@ -159,11 +159,13 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
def framework_set_scheduler(args):
|
def framework_set_scheduler(args):
|
||||||
rpc.app.framework_set_scheduler(args.client,
|
rpc.app.framework_set_scheduler(args.client,
|
||||||
name=args.name)
|
name=args.name,
|
||||||
|
period=args.period)
|
||||||
|
|
||||||
p = subparsers.add_parser(
|
p = subparsers.add_parser(
|
||||||
'framework_set_scheduler', help='Select thread scheduler that will be activated (experimental)')
|
'framework_set_scheduler', help='Select thread scheduler that will be activated and its period (experimental)')
|
||||||
p.add_argument('name', help="Name of a scheduler")
|
p.add_argument('name', help="Name of a scheduler")
|
||||||
|
p.add_argument('-p', '--period', help="Scheduler period in microseconds", type=int)
|
||||||
p.set_defaults(func=framework_set_scheduler)
|
p.set_defaults(func=framework_set_scheduler)
|
||||||
|
|
||||||
# bdev
|
# bdev
|
||||||
|
@ -37,15 +37,18 @@ def framework_get_reactors(client):
|
|||||||
return client.call('framework_get_reactors')
|
return client.call('framework_get_reactors')
|
||||||
|
|
||||||
|
|
||||||
def framework_set_scheduler(client, name):
|
def framework_set_scheduler(client, name, period):
|
||||||
"""Select threads scheduler that will be activated.
|
"""Select threads scheduler that will be activated and its period.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
name: Name of a scheduler
|
name: Name of a scheduler
|
||||||
|
period: Scheduler period in microseconds
|
||||||
Returns:
|
Returns:
|
||||||
True or False
|
True or False
|
||||||
"""
|
"""
|
||||||
params = {'name': name}
|
params = {'name': name}
|
||||||
|
if period is not None:
|
||||||
|
params['period'] = period
|
||||||
return client.call('framework_set_scheduler', params)
|
return client.call('framework_set_scheduler', params)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user