Commit 6e3346df authored by Maciej Szwed's avatar Maciej Szwed Committed by Tomasz Zawadzki
Browse files

scheduler: Add option to provide scheduler period in framework_set_scheduler RPC



Signed-off-by: default avatarMaciej 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: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent cc0d13f7
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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,
+4 −2
Original line number Diff line number Diff line
@@ -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
+5 −2
Original line number Diff line number Diff line
@@ -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)