Gianluca Guida
2011-Nov-16 13:44 UTC
[Xen-devel] [PATCH] [shadow] Disable higher level pagetables early unshadow only when the "process dying" hypercall is used.
This patch fixes a performance problem in fully virtualized guests. Should be backported to xen-4.0 and xen-4.1. This patch applies (with slightly different offsets) to all three versions. Signed-off-by: Gianluca Guida <gianluca.guida@citrix.com> Tested-by: Jan Beulich <jbeulich@suse.com> diff -r 068d3d55ce6e xen/arch/x86/mm/shadow/multi.c --- a/xen/arch/x86/mm/shadow/multi.c Tue Nov 01 19:03:38 2011 +0000 +++ b/xen/arch/x86/mm/shadow/multi.c Wed Nov 16 14:30:57 2011 -0800 @@ -2723,8 +2723,9 @@ || ( !v->domain->arch.paging.shadow.pagetable_dying_op && v->arch.paging.shadow.last_emulated_mfn_for_unshadow == mfn_x(gmfn) ) ) && sh_mfn_is_a_page_table(gmfn) - && !(mfn_to_page(gmfn)->shadow_flags - & (SHF_L2_32|SHF_L2_PAE|SHF_L2H_PAE|SHF_L4_64)) ) + && (!v->domain->arch.paging.shadow.pagetable_dying_op || + !(mfn_to_page(gmfn)->shadow_flags + & (SHF_L2_32|SHF_L2_PAE|SHF_L2H_PAE|SHF_L4_64))) ) { perfc_incr(shadow_early_unshadow); sh_remove_shadows(v, gmfn, 1, 0 /* Fast, can fail to unshadow */ ); _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
George Dunlap
2011-Dec-14 15:58 UTC
Re: [PATCH] [shadow] Disable higher level pagetables early unshadow only when the "process dying" hypercall is used.
On Wed, Nov 16, 2011 at 1:44 PM, Gianluca Guida <glguida@gmail.com> wrote:> This patch fixes a performance problem in fully virtualized guests.What performance problem, and how does it fix it? The c/s doesn''t have any information about either, so it''s hard for me to evaluate whether I should pull it into the XenServer patchqueue...> > Should be backported to xen-4.0 and xen-4.1. This patch applies (with > slightly different offsets) to all three versions. > > Signed-off-by: Gianluca Guida <gianluca.guida@citrix.com> > Tested-by: Jan Beulich <jbeulich@suse.com> > > diff -r 068d3d55ce6e xen/arch/x86/mm/shadow/multi.c > --- a/xen/arch/x86/mm/shadow/multi.c Tue Nov 01 19:03:38 2011 +0000 > +++ b/xen/arch/x86/mm/shadow/multi.c Wed Nov 16 14:30:57 2011 -0800 > @@ -2723,8 +2723,9 @@ > || ( !v->domain->arch.paging.shadow.pagetable_dying_op > && > v->arch.paging.shadow.last_emulated_mfn_for_unshadow == mfn_x(gmfn) ) > ) > && sh_mfn_is_a_page_table(gmfn) > - && !(mfn_to_page(gmfn)->shadow_flags > - & (SHF_L2_32|SHF_L2_PAE|SHF_L2H_PAE|SHF_L4_64)) ) > + && (!v->domain->arch.paging.shadow.pagetable_dying_op || > + !(mfn_to_page(gmfn)->shadow_flags > + & (SHF_L2_32|SHF_L2_PAE|SHF_L2H_PAE|SHF_L4_64))) ) > { > perfc_incr(shadow_early_unshadow); > sh_remove_shadows(v, gmfn, 1, 0 /* Fast, can fail to unshadow */ ); > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel
Gianluca Guida
2011-Dec-14 16:19 UTC
Re: [PATCH] [shadow] Disable higher level pagetables early unshadow only when the "process dying" hypercall is used.
Hi George, On Wed, Dec 14, 2011 at 7:58 AM, George Dunlap <dunlapg@umich.edu> wrote:> On Wed, Nov 16, 2011 at 1:44 PM, Gianluca Guida <glguida@gmail.com> wrote: >> This patch fixes a performance problem in fully virtualized guests. > > What performance problem, and how does it fix it? The c/s doesn''t > have any information about either, so it''s hard for me to evaluate > whether I should pull it into the XenServer patchqueue...Have a look at this: http://old-list-archives.xen.org/archives/html/xen-devel/2011-11/msg00650.html A good question is whether the performance improvement that brought Stefano to implement the hypercall in Linux was due to the original patch creating a regression or if it really helps even after the performance regression is fixed. I wasn''t here on the Xen world while the patch was tested on unstable, so i have no idea about it. Gianluca -- It was a type of people I did not know, I found them very strange and they did not inspire confidence at all. Later I learned that I had been introduced to electronic engineers. E. W. Dijkstra