On Thu, May 12, 2011 at 11:01:09PM +0800, Osier Yang wrote:
于 2011年05月12日 22:11, Eric Blake 写道:
>On 05/12/2011 05:01 AM, Osier Yang wrote:
>>>>The new XML is like:
>>>>
>>>><numatune>
>>>> <memory model="interleave"
nodeset="+0-4,8-12"/>
>>>><numatune>
>>>>
>>>Compatibility with numactl syntax is an explicit non-goal.
>>>numactl is just one platform specific impl. Compatibility
>>>with numactl syntax is of no interest to the ESX or VirtualBox
>>>drivers. The libvirt NUMA syntax should be using other
>>>existing libvirt XML as the design compatibility target.
>>
>>Hi, Dan
>>
>>The syntax is actually not of numactl, but of libnuma, it
>>provides API numa_parse_nodestring() to parse the syntax,
>
>The point we're trying to make is that the XML should _not_ match
>libnuma, but should match<vcpu cpuset=...>. That is, the XML should
>use 0-4,^3 to mean 0, 1, 2, 4; and then we need an internal translation
>routine that converts ^ to + before calling libnuma functions.
"+" means different with "^".
[quote]
The + indicates that the node numbers are relative to the process'
set of allowed nodes in its current cpuset.
[/quote]
Also "!",
[quote]
A !N-N notation indicates the inverse of N-N, in other words all
nodes except N-N
[/quote]
>
>The fact that we use libnuma under the hood is an implementation detail;
>in the future we may find it easier to use some other mechanism to get
>the same semantic effect, and that other mechanism may have yet some
>third syntax. Therefore, it is better for libvirt to present consistent
>syntax for all of its cpuset parsing, rather than to have two different
>cpuset spellings based on what under-the-hood capability it is targetting.
>
Agree that we may use other mechanism to get the same sementic effect
in future, this is good consideration.
but the syntax is for NUMA *NODE* set, not *CPU* set, if we use same
syntax as cpuset for NUMA nodeset, then we lose some semantics, e.g.
for a "!2-4", we could use "^2,^3,^4" as an alternative solution,
though it looks quite uncomfortable, and the disadvantage is
we abort some smarter syntax, but the advantage is we follow the
syntax of cpuset, and actually they are just different at user
visible level, the final bitmask are same.
There is no reason why '^2' couldn't also be made to support '^2-4'
in our current CPU set parsing code.
But for "+2-4", we have no alternative solution with
cpuset's syntax,
as far as I could understand, it has specific meaning for NUMA nodeset.
That kind of syntax does not make sense for libvirt. Configuration
should not be described relative to the current runtime policy. The
XML description should be self-contained & canonical format. So I
consider it a benefit that we don't support that syntax.
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|