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

Re: [Xen-devel] migration and restore?

thank both of you

and how to debug python, i could debug c program with gdb ,and how to
debug python program?

and ,does the code of xc_domain_save.c and xc_domain_restore.c do the
same job as the xend "xm save " and "xm restore"? and what are the valid
parameter for it ? i look through the code ,it seems to be able to save
VM in a live way ,and i try for some parameter , but failed , and how to
do it?

[root@vt-0 ~]# cd /root/xen-build-tree/xen-3.1.0-src/tools/xcutils/
[root@vt-0 xcutils]# ls
Makefile readnotes.c xc_restore xc_restore.o xc_save.c
readnotes readnotes.o xc_restore.c xc_save xc_save.o
[root@vt-0 xcutils]# ./xc_save /tmp
xc_save: usage: ./xc_save iofd domid maxit maxf flags
[root@vt-0 xcutils]# ./xc_save /tmp/dom-1 dom-1 2 2 1
ERROR Internal error: Couldn't map live_shinfo
Warning - couldn't disable shadow modeSave exit rc=1
[root@vt-0 xcutils]# ./xc_save /tmp/dom-1 dom-1 1 1 1
ERROR Internal error: Couldn't map live_shinfo
Warning - couldn't disable shadow modeSave exit rc=1
[root@vt-0 xcutils]# ./xc_save /tmp/dom-1 dom-1 1 1 0
ERROR Internal error: Couldn't map live_shinfo
Save exit rc=1
[root@vt-0 xcutils]#


Daniel Stodden 写道:
> On Tue, 2008-01-08 at 13:16 +0100, Andre Przywara wrote:
>>> i read the code of migration, and i fail to find the counterpart code of 
>>> migration , which deal with the restoration of VM in the destination 
>>> node, and i read the code of /tools/libxc/xc_domain_restore.c ,but the 
>>> function of xc_domain_restore() seems not to be the one for the 
>>> migration, it seems not support the restore of the iterative copy of the 
>>> VM memory state ,is it? or how does it deal with the work?
>> Maybe the missing pieces you are looking for are in the xend (Python) 
>> code? In line 205 (or so) in tools/pyhton/xen/xend/XendDomainInfo.py you 
>> will find the high level function "restore". This method calls 
>> XendDomainInfo.resume (line 446) and triggers the necessary actions 
>> here. Another file to look in is XendCheckpoint.py, here you'll find the 
>> method "restore" (line 154). Some Migration code is also in XendDomain.py.
>> You can get more info if you enable debugging, do a live migration (to 
>> localhost) and look in xend.log for "Saving memory pages" or "Reloading 
>> memory pages". From here you will find the corresponding code (maybe by 
>> just grepping for the log message text).
>> I found line 427 in xc_domain_restore.c, the code following this line 
>> deals with the restoring of the frames. From my perspective there is 
>> everything needed in there.
> this is correct, the iteration is definitely done in
> xc_domain_restore().
> the for loop as described above follows iteration as dictated by the
> source machine. each interation generates a number of batches, each
> batch comprising a number of pages, either first try or (later) resent
> due to being dirtied. each batch is dispatched in several passes. the
> second pass generates the machine frame list into which the batch is
> read. the most interesting part where that memory is mapped and filled
> with frame contents starts in line 533 (xc_map_foreign_range) and the
> subsequent for-loop in line 544 resp.
> complete enough to follow without the addtional setup done by xend.
> tools/xcutils/ contains C programs calling into the library for save and
> restore. should be easy to call from the command line once the parameter
> meanings are understood; i'd suggest to build with debug output enabled
> and follow the stderr messages to see how it works.
> regards,
> daniel

Xen-devel mailing list



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