* Ian Pratt <m+Ian.Pratt@xxxxxxxxxxxx> [2006-08-14 13:12]:
> > This patch modifies xend to accept and parse multiple cpumask strings
> > from the cpus parameter. The cpus string stays the same, but it now
> > can parse either a python list of strings:
> According to the example config file, we currently take a string
> containing the list of CPUs that the *domain* can run on. We should be
> putting this CPU mask into all of the VCPUs for the domain (rather than
> one bit in each as we currently do).
> Adding support to enable separate masks for each VCPU isn't a bad idea,
> but we certainly don't want to break the behaviour of being able to set
> the mask for a domain.
This doesn't break the previous behavior though maybe the description or
implementation is misleading. We may have dropped the behavior over time
as I seem to recall having a cpumap_t/cpumask in the domain structure,
but there isn't a domain-wide cpumask anymore. Instead there is a
cpumask per vcpu. The cpus parameter is used to restrict which
physical cpus the domains' vcpus' can use. This is done by mapping
each vcpu to a value from the list of physical cpus the domain can
use. The side-effect of that is that the cpumask of the vcpu has
only that cpu set, which prevents balancing when using the credit
Are you asking that we introduce in addition to the per-vcpu cpumask
another domain-wide mask that we would use to further restrict the vcpu
masks (think cpus_and(d->affinity, v->affinity))? And have two config
variables like below?
domain_cpus = "0-7"
vcpu_cpus = "0-3, 4-7"
> Allowing a list of masks to be passed in (as well as a single string)
> isn't a bad idea.
> Surely the comma separated list of vcpus isn't compatible with the
> current parsing? Or are you using the quotes to try and separate the
> different vcpu masks? That's horrid.
I didn't want the quotes either, nor the python list. I guess I
misinterpreted your suggestion for requirements. As for the commas, it
is certainly functional, but it sounds like we need some other cpumask
field delimiter, any takers for "|" ?
cpus = "0-3,^2|4-7|8|9-12"
> BTW: As syntactic sugar, if the string starts with an exclusion, should
> it implicitly mean that mask starts off containing all 1's rather than
> all 0's? [avoiding the need to do "0-255,^0"]
That makes sense. I'm not sure what happens right now if you lead with
an exclusion. I can look into that after we settle on what do with
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
(512) 838-9253 T/L: 678-9253
Xen-devel mailing list