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 {
|
||||
char *name;
|
||||
uint64_t period;
|
||||
};
|
||||
|
||||
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[] = {
|
||||
{"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
|
||||
@ -460,6 +462,10 @@ rpc_framework_set_scheduler(struct spdk_jsonrpc_request *request,
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (req.period != 0) {
|
||||
_spdk_scheduler_period_set(req.period);
|
||||
}
|
||||
|
||||
ret = _spdk_scheduler_set(req.name);
|
||||
if (ret) {
|
||||
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
|
||||
|
@ -159,11 +159,13 @@ if __name__ == "__main__":
|
||||
|
||||
def framework_set_scheduler(args):
|
||||
rpc.app.framework_set_scheduler(args.client,
|
||||
name=args.name)
|
||||
name=args.name,
|
||||
period=args.period)
|
||||
|
||||
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('-p', '--period', help="Scheduler period in microseconds", type=int)
|
||||
p.set_defaults(func=framework_set_scheduler)
|
||||
|
||||
# bdev
|
||||
|
@ -37,15 +37,18 @@ def framework_get_reactors(client):
|
||||
return client.call('framework_get_reactors')
|
||||
|
||||
|
||||
def framework_set_scheduler(client, name):
|
||||
"""Select threads scheduler that will be activated.
|
||||
def framework_set_scheduler(client, name, period):
|
||||
"""Select threads scheduler that will be activated and its period.
|
||||
|
||||
Args:
|
||||
name: Name of a scheduler
|
||||
period: Scheduler period in microseconds
|
||||
Returns:
|
||||
True or False
|
||||
"""
|
||||
params = {'name': name}
|
||||
if period is not None:
|
||||
params['period'] = period
|
||||
return client.call('framework_set_scheduler', params)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user