[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 1/7] libxl: get rid of the SEDF scheduler
only the interface is left in place, for backward compile-time compatibility, but every attempt to use it would throw an error. Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx> Reviewed-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx> --- Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> Cc: Ian Campbell <ian.campbell@xxxxxxxxxx> Cc: Wei Liu <wei.liu2@xxxxxxxxxx> Chenges from v2: - introduce and use ERROR_FEATURE_REMOVED, as requested during review; - mark the SEDF only parameter as deprecated in libxl_types.idl, as requested during review. --- tools/libxl/libxl.c | 73 ++----------------------------------------- tools/libxl/libxl_create.c | 61 ------------------------------------ tools/libxl/libxl_types.idl | 11 +++++- 3 files changed, 12 insertions(+), 133 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index e9a2d26..98254e2 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -5787,73 +5787,6 @@ static int sched_credit2_domain_set(libxl__gc *gc, uint32_t domid, return 0; } -static int sched_sedf_domain_get(libxl__gc *gc, uint32_t domid, - libxl_domain_sched_params *scinfo) -{ - uint64_t period; - uint64_t slice; - uint64_t latency; - uint16_t extratime; - uint16_t weight; - int rc; - - rc = xc_sedf_domain_get(CTX->xch, domid, &period, &slice, &latency, - &extratime, &weight); - if (rc != 0) { - LOGE(ERROR, "getting domain sched sedf"); - return ERROR_FAIL; - } - - libxl_domain_sched_params_init(scinfo); - scinfo->sched = LIBXL_SCHEDULER_SEDF; - scinfo->period = period / 1000000; - scinfo->slice = slice / 1000000; - scinfo->latency = latency / 1000000; - scinfo->extratime = extratime; - scinfo->weight = weight; - - return 0; -} - -static int sched_sedf_domain_set(libxl__gc *gc, uint32_t domid, - const libxl_domain_sched_params *scinfo) -{ - uint64_t period; - uint64_t slice; - uint64_t latency; - uint16_t extratime; - uint16_t weight; - - int ret; - - ret = xc_sedf_domain_get(CTX->xch, domid, &period, &slice, &latency, - &extratime, &weight); - if (ret != 0) { - LOGE(ERROR, "getting domain sched sedf"); - return ERROR_FAIL; - } - - if (scinfo->period != LIBXL_DOMAIN_SCHED_PARAM_PERIOD_DEFAULT) - period = (uint64_t)scinfo->period * 1000000; - if (scinfo->slice != LIBXL_DOMAIN_SCHED_PARAM_SLICE_DEFAULT) - slice = (uint64_t)scinfo->slice * 1000000; - if (scinfo->latency != LIBXL_DOMAIN_SCHED_PARAM_LATENCY_DEFAULT) - latency = (uint64_t)scinfo->latency * 1000000; - if (scinfo->extratime != LIBXL_DOMAIN_SCHED_PARAM_EXTRATIME_DEFAULT) - extratime = scinfo->extratime; - if (scinfo->weight != LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT) - weight = scinfo->weight; - - ret = xc_sedf_domain_set(CTX->xch, domid, period, slice, latency, - extratime, weight); - if ( ret < 0 ) { - LOGE(ERROR, "setting domain sched sedf"); - return ERROR_FAIL; - } - - return 0; -} - static int sched_rtds_domain_get(libxl__gc *gc, uint32_t domid, libxl_domain_sched_params *scinfo) { @@ -5932,7 +5865,8 @@ int libxl_domain_sched_params_set(libxl_ctx *ctx, uint32_t domid, switch (sched) { case LIBXL_SCHEDULER_SEDF: - ret=sched_sedf_domain_set(gc, domid, scinfo); + LOG(ERROR, "SEDF scheduler no longer available"); + ret=ERROR_FEATURE_REMOVED; break; case LIBXL_SCHEDULER_CREDIT: ret=sched_credit_domain_set(gc, domid, scinfo); @@ -5968,7 +5902,8 @@ int libxl_domain_sched_params_get(libxl_ctx *ctx, uint32_t domid, switch (scinfo->sched) { case LIBXL_SCHEDULER_SEDF: - ret=sched_sedf_domain_get(gc, domid, scinfo); + LOG(ERROR, "SEDF scheduler no longer available"); + ret=ERROR_FEATURE_REMOVED; break; case LIBXL_SCHEDULER_CREDIT: ret=sched_credit_domain_get(gc, domid, scinfo); diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index f799081..8dbf0d8 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -50,61 +50,6 @@ int libxl__domain_create_info_setdefault(libxl__gc *gc, return 0; } -static int sched_params_valid(libxl__gc *gc, - uint32_t domid, libxl_domain_sched_params *scp) -{ - int has_weight = scp->weight != LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT; - int has_period = scp->period != LIBXL_DOMAIN_SCHED_PARAM_PERIOD_DEFAULT; - int has_slice = scp->slice != LIBXL_DOMAIN_SCHED_PARAM_SLICE_DEFAULT; - int has_extratime = - scp->extratime != LIBXL_DOMAIN_SCHED_PARAM_EXTRATIME_DEFAULT; - - /* The sedf scheduler needs some more consistency checking */ - if (libxl__domain_scheduler(gc, domid) == LIBXL_SCHEDULER_SEDF) { - if (has_weight && (has_period || has_slice)) - return 0; - /* If you want a real-time domain, with its own period and - * slice, please, do provide both! */ - if (has_period != has_slice) - return 0; - - /* - * Idea is, if we specify a weight, then both period and - * slice has to be zero. OTOH, if we do specify a period and - * slice, it is weight that should be zeroed. See - * docs/misc/sedf_scheduler_mini-HOWTO.txt for more details - * on the meaningful combinations and their meanings. - */ - if (has_weight) { - scp->slice = 0; - scp->period = 0; - } - else if (!has_period) { - /* No weight nor slice/period means best effort. Parameters needs - * some mangling in order to properly ask for that, though. */ - - /* - * Providing no weight does not make any sense if we do not allow - * the domain to run in extra time. On the other hand, if we have - * extra time, weight will be ignored (and zeroed) by Xen, but it - * can't be zero here, or the call for setting the scheduling - * parameters will fail. So, avoid the latter by setting a random - * weight (namely, 1), as it will be ignored anyway. - */ - - /* We can setup a proper best effort domain (extra time only) - * iff we either already have or are asking for some extra time. */ - scp->weight = has_extratime ? scp->extratime : 1; - scp->period = 0; - } else { - /* Real-time domain: will get slice CPU time over every period */ - scp->weight = 0; - } - } - - return 1; -} - int libxl__domain_build_info_setdefault(libxl__gc *gc, libxl_domain_build_info *b_info) { @@ -915,12 +860,6 @@ static void initiate_domain_create(libxl__egc *egc, ret = libxl__domain_build_info_setdefault(gc, &d_config->b_info); if (ret) goto error_out; - if (!sched_params_valid(gc, domid, &d_config->b_info.sched_params)) { - LOG(ERROR, "Invalid scheduling parameters\n"); - ret = ERROR_INVAL; - goto error_out; - } - for (i = 0; i < d_config->num_disks; i++) { ret = libxl__device_disk_setdefault(gc, &d_config->disks[i]); if (ret) goto error_out; diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index e1632fa..e7fe8bf 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -68,6 +68,7 @@ libxl_error = Enumeration("error", [ (-22, "ABORTED"), (-23, "NOTFOUND"), (-24, "DOMAIN_DESTROYED"), # Target domain ceased to exist during op + (-25, "FEATURE_REMOVED"), # For functionallities that are no longer there ], value_namespace = "") libxl_domain_type = Enumeration("domain_type", [ @@ -356,9 +357,13 @@ libxl_domain_sched_params = Struct("domain_sched_params",[ ("weight", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT'}), ("cap", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_CAP_DEFAULT'}), ("period", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_PERIOD_DEFAULT'}), - ("slice", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_SLICE_DEFAULT'}), - ("latency", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_LATENCY_DEFAULT'}), - ("extratime", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_EXTRATIME_DEFAULT'}), + # The following three parameters ('slice', 'latency' and 'extratime') are deprecated, + # and will have no effect if used, since the SEDF scheduler has been removed. + # Note that 'period' was an SDF parameter too, but it is still effective as it is + # now used (together with 'budget') by the RTDS scheduler. + ("slice", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_SLICE_DEFAULT'}), # deprecated + ("latency", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_LATENCY_DEFAULT'}), # deprecated + ("extratime", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_EXTRATIME_DEFAULT'}), # deprecated ("budget", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_BUDGET_DEFAULT'}), ]) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |