Skip to contentSkip to conversation

Sanity checking of scheduling parameters

PATCH Superseded Dario Faggioli 2 participants 5 messages Jun 7, 2012 – Jun 8, 2012

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 Sanity checking of scheduling parameters

Hi,

This small series achieves two goals:
- check the return value of libxl_domain_sched_params_set() in libxl__build_post() and deal with the error, if that is the case (patch #1);
- check and ensue we are passing along a meaningful set of sedf scheduling parameters when they come directly from the config file (patch #2)

Tested on both credit and sedf schedulers.

Changes from v1:
* patch #1: it was not there at all in v1! :-P
* patch #2: the if-s have been moved into an helper function. Also, they only happen if the domain is actually being scheduled with sedf (IanC, yes, I decided to do it... At the end of the day, it is simple enough I think).

Thanks and Regards,
Dario

Signature · 4 lines
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://retis.sssup.it/people/faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
#1 lore raw

PATCH v2 1/1 libxl: propagete down the error from libxl_domain_sched_params_set

So that the caller (e.g., libxl__build_post() ) knows and can deal with it.

tools/libxl/libxl_dom.c +2 -1
@@ -175,7 +175,8 @@ int libxl__build_post(libxl__gc *gc, uin
     char **ents, **hvm_ents;
     int i;
 
-    libxl_domain_sched_params_set(CTX, domid, &info->sched_params);
+    if (libxl_domain_sched_params_set(CTX, domid, &info->sched_params))
+        return ERROR_INVAL;
 
     libxl_cpuid_apply_policy(ctx, domid);
     if (info->cpuid != NULL)
#4 lore raw

PATCH v2 1/1 xl: check for meaningful combination of sedf config file parameters

In reply to Dario Faggioli

As it happens in the implementation of `xl sched-sedf -d ...', some consistency checking is needed for the scheduling parameters when they come from the config file.

tools/libxl/xl_cmdimpl.c +29 -0
@@ -550,6 +550,31 @@ vcpp_out:
     return rc;
 }
 
+static int sched_params_valid(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;
+    libxl_domain_sched_params sci;
+
+    libxl_domain_sched_params_get(ctx, domid, &sci);
+
+    /* The sedf scheduler needs some more consistency checking */
+    if (sci.sched == LIBXL_SCHEDULER_SEDF) {
+        if (has_weight && (has_period || has_slice))
+            return 0;
+
+        if (has_weight) {
+            scp->slice = 0;
+            scp->period = 0;
+        }
+        if (has_period || has_slice)
+            scp->weight = 0;
+    }
+
+    return 1;
+}
+
 static void parse_config_data(const char *config_source,
                               const char *config_data,
                               int config_len,
@@ -644,6 +669,10 @@ static void parse_config_data(const char
         b_info->sched_params.latency = l;
     if (!xlu_cfg_get_long (config, "extratime", &l, 0))
         b_info->sched_params.extratime = l;
+    if (!sched_params_valid(&b_info->sched_params)) {
+        fprintf(stderr, "Invalid scheduling parameters\n");
+        exit(1);
+    }
 
     if (!xlu_cfg_get_long (config, "vcpus", &l, 0)) {
         b_info->max_vcpus = l;
#2 lore raw

Re: [PATCH 1 of 2 v2] libxl: propagete down the error from libxl_domain_sched_params_set

In reply to Dario Faggioli

Dario Faggioli writes ("[PATCH 1 of 2 v2] libxl: propagete down the error from libxl_domain_sched_params_set"):

Quoted 1 line

So that the caller (e.g., libxl__build_post() ) knows and can deal with it.

...

tools/libxl/libxl_dom.c int libxl__build_post(libxl__gc *gc, uin · line 179

Quoted 3 lines
tools/libxl/libxl_dom.c +2 -1
-    libxl_domain_sched_params_set(CTX, domid, &info->sched_params);
+    if (libxl_domain_sched_params_set(CTX, domid, &info->sched_params))
+        return ERROR_INVAL;

This is not correct. It should return whatever error code libxl_domain_sched_params_set returns, not unconditionally ERROR_INVAL.

Ian.

#3 lore raw

Re: [PATCH 1 of 2 v2] libxl: propagete down the error from libxl_domain_sched_params_set

Quoted 11 lines · Ian Jackson

Dario Faggioli writes ("[PATCH 1 of 2 v2] libxl: propagete down the error from libxl_domain_sched_params_set"):

Quoted 1 line

So that the caller (e.g., libxl__build_post() ) knows and can deal with it.

...

tools/libxl/libxl_dom.c int libxl__build_post(libxl__gc *gc, uin · line 179

Quoted 3 lines
tools/libxl/libxl_dom.c +2 -1
-    libxl_domain_sched_params_set(CTX, domid, &info->sched_params);
+    if (libxl_domain_sched_params_set(CTX, domid, &info->sched_params))
+        return ERROR_INVAL;

This is not correct. It should return whatever error code libxl_domain_sched_params_set returns, not unconditionally ERROR_INVAL.

Ops, you're right, sorry... New version coming!

Thanks and Regards,
Dario

Signature · 4 lines
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://retis.sssup.it/people/faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xen.org/xen-devel