[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH 0 of 8 [RFC]] Move all the memory of a domain



Hi everyone,

It's been a while now since I started working on trying to implement a
mechanism for moving all the memory of a domain from one NUMA node to another.
Yes, that is part of the more general work about improving Xen NUMA support I'm
carrying on... For more details, see here:

 http://wiki.xen.org/wiki/Xen_NUMA_Roadmap.

The approach I decided to take is to mimic a sort of back-to-back save/restore.
In some more details, I'm suspending a domain, deallocating all its memory,
reallocating it to different places (especially, for instance, if the NUMA
node-affinity changed in the meanwhile), update the domain's and the Xen's
address translation tables, and resume the domain back. Easy eh? :-D

All the above happens at the libxc level, although the patch series provides
all the glue code needed to interact with the new feature from both libxl and
xl.

Also, consider that this fisrt series focuses on PV guests. For HVM, some "if
(hvm)" here and there will do the trick, together, of course, with the proper
updating of HAP tables, etc. ... Still much less work than all the tweaking
required by PV-guests! I'll include more HVM bits in future releases of this
series, but, in case you have, do feel free to  provide you comments on that
aspect too, even right now.

I got sidetracked and distracted many times, and I have to admit, this is not
quite a done job yet. However, I reached the point where, at least part of what
I have can be shown here, so that you can provide some early feedback on it,
and help me proceed further, with future design choices and implementation
steps.

I have to say I find it quite challenging as, especially for PV, it touches and
exercises a lot of code paths and features I'm not yet so much familiar with.
That is why feedback is really important, even if the thing is still at an
early stage. For instances, discussing how to properly deal with things like
grant tables, or TMEM, or how to make sure we do not mess up vCPU contexts,
would be really great. Despite the RFC status, I did my best in trying to
facilitate that, both when writing the code and the comments/changelogs for
each patch... For instance, I've put some 'XXX' marked spots where I thought
something was missing and/or commenting is most needed. If you find 5 minutes
to look into them, that would be much appreciated. :-)

I know we're in a very particular moment, due to 4.3 freeze, so I understand if
people are busy finalizing the existing and proposed features, instead of
reviewing RFCs for new ones, but I still felt like it would be worthwhile to
send this out. Let's see if anyone take this chance of telling me how bad it
looks! ;-P

About the series, the patches on which to concentrate on are, especially at
this stage:

 6/8 libxc: introduce xc_domain_move_memory
 7/8 libxl: introduce libxl_domain_move_memory

The others are introducing minor changes, ancillary to the two above.

Thanks in advance and Regards,
Dario

--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.