From: Dieter Bloms <dieter@bloms.de>
To: Dario Faggioli <dario.faggioli@citrix.com>
Cc: George Dunlap <George.Dunlap@eu.citrix.com>,
Ian Campbell <Ian.Campbell@citrix.com>,
Dieter Bloms <dieter@bloms.de>,
xen-devel <xen-devel@lists.xen.org>
Subject: Re: [Xen-users] xl doesn't honour the parameter cpu_weight from my config file while xm does honour it
Date: Tue, 24 Apr 2012 14:14:03 +0200 [thread overview]
Message-ID: <20120424121402.GA19331@bloms.de> (raw)
In-Reply-To: <1335247525.2397.4.camel@Abyss>
[-- Attachment #1: Type: text/plain, Size: 466 bytes --]
Hi,
On Tue, Apr 24, Dario Faggioli wrote:
> What might be missing is some documentation in docs/man/xl.cfg.pod.5,
> explaining about the new options... :-)
I've added a little documentation, so now I hope it is ok.
--
best regards
Dieter Bloms
--
I do not get viruses because I do not use MS software.
If you use Outlook then please do not put my email address in your
address-book so that WHEN you get a virus it won't use my address in the
>From field.
[-- Attachment #2: add_support_for_cpu_weight_config_in_xl.diff --]
[-- Type: text/x-diff, Size: 6742 bytes --]
libxl: set domain scheduling parameters while creating the dom
the domain specific scheduling parameters like cpu_weight, cap, slice, ...
will be set during creating the domain, so this parameters can be defined
in the domain config file
Signed-off-by: Dieter Bloms <dieter@bloms.de>
diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
index e2cd251..4060933 100644
--- a/docs/man/xl.cfg.pod.5
+++ b/docs/man/xl.cfg.pod.5
@@ -112,6 +112,44 @@ List of which cpus the guest is allowed to use. Default behavior is
(all vcpus will run on cpus 0,2,3,5), or `cpus=["2", "3"]` (all vcpus
will run on cpus 2 and 3).
+=item B<cpu-weight="weight of cpu (default 256)">
+
+A domain with a weight of 512 will get twice as much CPU as a domain
+with a weight of 256 on a contended host.
+Legal weights range from 1 to 65535 and the default is 256.
+Can be set for credit, credit2 and sedf scheduler.
+
+=item B<cap="max amount of cpu (default 0)">
+
+The cap optionally fixes the maximum amount of CPU a domain will be
+able to consume, even if the host system has idle CPU cycles.
+The cap is expressed in percentage of one physical CPU:
+100 is 1 physical CPU, 50 is half a CPU, 400 is 4 CPUs, etc.
+The default, 0, means there is no upper cap.
+Can be set for the credit and credit2 scheduler.
+
+=item B<period="time in nanoseconds (default 0)">
+
+The normal EDF scheduling usage in nanoseconds. This means every period
+the domain gets cpu time defined in slice.
+Can be set for sedf scheduler.
+
+=item B<slice="time in nanoseconds (default 0)">
+
+The normal EDF scheduling usage in nanoseconds. it defines the time
+a domain get every period time.
+Can be set for sedf scheduler.
+
+=item B<latency=" (default 0)">
+
+Scaled period if domain is doing heavy I/O.
+Can be set for sedf scheduler.
+
+=item B<extratime="BOOLEAN (default 0)">
+
+Flag for allowing domain to run in extra time.
+Can be set for sedf scheduler.
+
=item B<memory=MBYTES>
Start the guest with MBYTES megabytes of RAM.
diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c
index 0bdd654..38acff4 100644
--- a/tools/libxl/libxl_dom.c
+++ b/tools/libxl/libxl_dom.c
@@ -124,8 +124,27 @@ int libxl__build_post(libxl__gc *gc, uint32_t domid,
char *dom_path, *vm_path;
xs_transaction_t t;
char **ents, **hvm_ents;
+ libxl_scheduler sched;
int i;
+ sched = libxl_get_scheduler (ctx);
+ switch (sched) {
+ case LIBXL_SCHEDULER_SEDF:
+ libxl_sched_sedf_domain_set(ctx, domid, &(info->us.sedf));
+ break;
+ case LIBXL_SCHEDULER_CREDIT:
+ libxl_sched_credit_domain_set(ctx, domid, &(info->us.credit));
+ break;
+ case LIBXL_SCHEDULER_CREDIT2:
+ libxl_sched_credit2_domain_set(ctx, domid, &(info->us.credit2));
+ break;
+ case LIBXL_SCHEDULER_ARINC653:
+ /* not implemented */
+ break;
+ default:
+ abort();
+ }
+
libxl_cpuid_apply_policy(ctx, domid);
if (info->cpuid != NULL)
libxl_cpuid_set(ctx, domid, info->cpuid);
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index 5cf9708..c1cdc3c 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -224,6 +224,27 @@ libxl_domain_create_info = Struct("domain_create_info",[
MemKB = UInt(64, init_val = "LIBXL_MEMKB_DEFAULT")
+libxl_sched_credit_domain = Struct("sched_credit_domain", [
+ ("weight", integer),
+ ("cap", integer),
+ ])
+
+libxl_sched_credit2_domain = Struct("sched_credit2_domain", [
+ ("weight", integer),
+ ])
+
+libxl_sched_sedf_domain = Struct("sched_sedf_domain", [
+ ("period", integer),
+ ("slice", integer),
+ ("latency", integer),
+ ("extratime", integer),
+ ("weight", integer),
+ ])
+
+libxl_sched_arinc653_domain = Struct("sched_arinc653_domain", [
+ ("weight", integer),
+ ])
+
# Instances of libxl_file_reference contained in this struct which
# have been mapped (with libxl_file_reference_map) will be unmapped
# by libxl_domain_build/restore. If either of these are never called
@@ -256,6 +277,13 @@ libxl_domain_build_info = Struct("domain_build_info",[
# extra parameters pass directly to qemu for HVM guest, NULL terminated
("extra_hvm", libxl_string_list),
+ ("us", KeyedUnion(None, libxl_scheduler, "sched",
+ [("credit", libxl_sched_credit_domain),
+ ("credit2", libxl_sched_credit2_domain),
+ ("sedf", libxl_sched_sedf_domain),
+ ("arinc653", libxl_sched_arinc653_domain),
+ ], keyvar_init_val = "-1")),
+
("u", KeyedUnion(None, libxl_domain_type, "type",
[("hvm", Struct(None, [("firmware", string),
("bios", libxl_bios_type),
@@ -417,28 +445,12 @@ libxl_cputopology = Struct("cputopology", [
("node", uint32),
], dir=DIR_OUT)
-libxl_sched_credit_domain = Struct("sched_credit_domain", [
- ("weight", integer),
- ("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),
- ])
-
-libxl_sched_sedf_domain = Struct("sched_sedf_domain", [
- ("period", integer),
- ("slice", integer),
- ("latency", integer),
- ("extratime", integer),
- ("weight", integer),
- ])
-
libxl_event_type = Enumeration("event_type", [
(1, "DOMAIN_SHUTDOWN"),
(2, "DOMAIN_DEATH"),
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index 5703512..db51ca6 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -587,6 +587,23 @@ static void parse_config_data(const char *configfile_filename_report,
libxl_domain_build_info_init_type(b_info, c_info->type);
/* the following is the actual config parsing with overriding values in the structures */
+ if (!xlu_cfg_get_long (config, "cpu_weight", &l, 0))
+ b_info->us.credit.weight = l;
+ b_info->us.credit2.weight = l;
+ b_info->us.sedf.weight = l;
+
+ if (!xlu_cfg_get_long (config, "cap", &l, 0))
+ b_info->us.credit.cap = l;
+
+ if (!xlu_cfg_get_long (config, "period", &l, 0))
+ b_info->us.sedf.period = l;
+ if (!xlu_cfg_get_long (config, "slice", &l, 0))
+ b_info->us.sedf.period = l;
+ if (!xlu_cfg_get_long (config, "latency", &l, 0))
+ b_info->us.sedf.period = l;
+ if (!xlu_cfg_get_long (config, "extratime", &l, 0))
+ b_info->us.sedf.period = l;
+
if (!xlu_cfg_get_long (config, "vcpus", &l, 0)) {
b_info->max_vcpus = l;
b_info->cur_vcpus = (1 << l) - 1;
[-- Attachment #3: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2012-04-24 12:14 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20120420150012.GB3720@bloms.de>
2012-04-20 15:13 ` [Xen-users] xl doesn't honour the parameter cpu_weight from my config file while xm does honour it Ian Campbell
2012-04-20 15:23 ` Dieter Bloms
2012-04-23 9:46 ` Dieter Bloms
2012-04-23 12:04 ` Ian Campbell
2012-04-23 14:22 ` Dario Faggioli
2012-04-23 15:41 ` Dieter Bloms
2012-04-23 16:07 ` Dario Faggioli
2012-04-23 19:35 ` Dieter Bloms
2012-04-24 6:05 ` Dario Faggioli
2012-04-24 12:14 ` Dieter Bloms [this message]
2012-04-24 13:09 ` Ian Campbell
2012-04-24 14:33 ` Dieter Bloms
2012-04-24 14:51 ` Ian Campbell
2012-04-24 16:03 ` Ian Jackson
2012-04-24 16:15 ` Ian Campbell
2012-04-24 16:20 ` Ian Jackson
2012-04-24 16:27 ` Ian Campbell
2012-04-24 18:26 ` Dieter Bloms
2012-04-24 19:35 ` Dieter Bloms
2012-04-25 9:07 ` Ian Campbell
2012-04-25 10:40 ` Ian Jackson
2012-04-24 13:24 ` Ian Jackson
2012-04-24 13:27 ` Ian Campbell
2012-04-24 13:33 ` Ian Jackson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120424121402.GA19331@bloms.de \
--to=dieter@bloms.de \
--cc=George.Dunlap@eu.citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=dario.faggioli@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.