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

Re: [Xen-devel] about the funtion call memory_type_changed()

On 16/01/15 10:29, Li, Liang Z wrote:
> Hi Jan,
> I found the restore process of the live migration is quit long, so I try to 
> find out what's going on.
> By debugging, I found the most time consuming process is restore the VM's 
> The process is done in the function hvm_load_mtrr_msr(), it will call the
> memory_type_changed(), which eventually call the time consuming function
> flush_all().
> All this is caused by adding the memory_type_changed in your patch, here is 
> the link
> http://lists.xen.org/archives/html/xen-devel/2014-03/msg03792.html,
> I am not sure if it's necessary to call flush_all, even it's necessary,  call 
> the function
>  hvm_load_mtrr_msr one time will cause dozens call of flush_all, and each 
> call of the
>  flush_all function will consume about 8 milliseconds, in my test 
> environment, the VM
>  has 4 VCPUs, the hvm_load_mtrr_msr() will be called four times, and totally 
> consumes
>  about 500 milliseconds. Obviously, there are too many flush_all calls.
>  I think something should be done to solve this issue, do you think so?

The flush_all() cant be avoided completely, as it is permitted to use
sethvmcontext on an already-running VM.  In this case, the flush
certainly does need to happen if altering the MTRRs has had a real
effect on dirty cache lines.

However, having a batching mechanism across hvm_load_mtrr_msr() with a
single flush at the end seems like a wise move.


Xen-devel mailing list



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