[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] libxl: Implement libxl_sched_credit_param_[gs]et
# HG changeset patch # User George Dunlap <george.dunlap@xxxxxxxxxxxxx> # Date 1330626121 0 # Node ID 54a61fee00ebd276fcc1ef6078377145dadc5ac7 # Parent 82957f09bc42f9ee409510b8d2909ca513b5960b libxl: Implement libxl_sched_credit_param_[gs]et Implement functions to set credit scheduler global parameters. Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Committed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- diff -r 82957f09bc42 -r 54a61fee00eb tools/libxl/libxl.c --- a/tools/libxl/libxl.c Thu Mar 01 17:37:03 2012 +0000 +++ b/tools/libxl/libxl.c Thu Mar 01 18:22:01 2012 +0000 @@ -3105,6 +3105,67 @@ return 0; } +int libxl_sched_credit_params_get(libxl_ctx *ctx, uint32_t poolid, + libxl_sched_credit_params *scinfo) +{ + struct xen_sysctl_credit_schedule sparam; + int rc; + + rc = xc_sched_credit_params_get(ctx->xch, poolid, &sparam); + if (rc != 0) { + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting sched credit param"); + return ERROR_FAIL; + } + + scinfo->tslice_ms = sparam.tslice_ms; + scinfo->ratelimit_us = sparam.ratelimit_us; + + return 0; +} + +int libxl_sched_credit_params_set(libxl_ctx *ctx, uint32_t poolid, + libxl_sched_credit_params *scinfo) +{ + struct xen_sysctl_credit_schedule sparam; + int rc=0; + + if (scinfo->tslice_ms < XEN_SYSCTL_CSCHED_TSLICE_MIN + || scinfo->tslice_ms > XEN_SYSCTL_CSCHED_TSLICE_MAX) { + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, + "Time slice out of range, valid range is from %d to %d", + XEN_SYSCTL_CSCHED_TSLICE_MIN, + XEN_SYSCTL_CSCHED_TSLICE_MAX); + return ERROR_INVAL; + } + if (scinfo->ratelimit_us < XEN_SYSCTL_SCHED_RATELIMIT_MIN + || scinfo->ratelimit_us > XEN_SYSCTL_SCHED_RATELIMIT_MAX) { + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, + "Ratelimit out of range, valid range is from %d to %d", + XEN_SYSCTL_SCHED_RATELIMIT_MIN, + XEN_SYSCTL_SCHED_RATELIMIT_MAX); + return ERROR_INVAL; + } + if (scinfo->ratelimit_us > scinfo->tslice_ms*1000) { + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, + "Ratelimit cannot be greater than timeslice\n"); + return ERROR_INVAL; + } + + sparam.tslice_ms = scinfo->tslice_ms; + sparam.ratelimit_us = scinfo->ratelimit_us; + + rc = xc_sched_credit_params_set(ctx->xch, poolid, &sparam); + if ( rc < 0 ) { + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "setting sched credit param"); + return ERROR_FAIL; + } + + scinfo->tslice_ms = sparam.tslice_ms; + scinfo->ratelimit_us = sparam.ratelimit_us; + + return 0; +} + int libxl_sched_credit2_domain_get(libxl_ctx *ctx, uint32_t domid, libxl_sched_credit2_domain *scinfo) { diff -r 82957f09bc42 -r 54a61fee00eb tools/libxl/libxl.h --- a/tools/libxl/libxl.h Thu Mar 01 17:37:03 2012 +0000 +++ b/tools/libxl/libxl.h Thu Mar 01 18:22:01 2012 +0000 @@ -648,6 +648,10 @@ libxl_sched_credit_domain *scinfo); int libxl_sched_credit_domain_set(libxl_ctx *ctx, uint32_t domid, libxl_sched_credit_domain *scinfo); +int libxl_sched_credit_params_get(libxl_ctx *ctx, uint32_t poolid, + libxl_sched_credit_params *scinfo); +int libxl_sched_credit_params_set(libxl_ctx *ctx, uint32_t poolid, + libxl_sched_credit_params *scinfo); int libxl_sched_credit2_domain_get(libxl_ctx *ctx, uint32_t domid, libxl_sched_credit2_domain *scinfo); int libxl_sched_credit2_domain_set(libxl_ctx *ctx, uint32_t domid, diff -r 82957f09bc42 -r 54a61fee00eb tools/libxl/libxl_types.idl --- a/tools/libxl/libxl_types.idl Thu Mar 01 17:37:03 2012 +0000 +++ b/tools/libxl/libxl_types.idl Thu Mar 01 18:22:01 2012 +0000 @@ -418,6 +418,11 @@ ("cap", integer), ]) +libxl_sched_credit_params = Struct("sched_credit_params", [ + ("tslice_ms", integer), + ("ratelimit_us", integer), + ], dispose_fn=None) + libxl_sched_credit2_domain = Struct("sched_credit2_domain", [ ("weight", integer), ]) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |