[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 39/60] x86: optimize loading of GDT at context switch
On 03.07.19 14:21, Andrew Cooper wrote: On 03/07/2019 07:30, Juergen Gross wrote:On 02.07.19 18:09, Andrew Cooper wrote:On 28/05/2019 11:32, Juergen Gross wrote:Instead of dynamically decide whether the previous vcpu was using full"deciding"or default GDT just add a percpu variable for that purpose. This at"was using a full or default GDT, just add"once removes the need for testing vcpu_ids to differ twice. Cache the need_full_gdt(nd) value in a local variable.What's the point of doing this? I know the logic is rather complicated in __context_switch(), but at least it is visually consistent. After this change, it is asymmetric and harder to follow.This is a hot path. need_full_gdt() needs two compares, of which one is using evaluate_nospec().Urgh. So evalute_nospec() is already broken here because need_full_gdt() isn't always_inline, but surely this isn't the only example impacted in __context_switch()? The choice of 'gdt' is similarly impacted by the looks of things. I'd recommend not worrying about evalute_nospec() for now. There are several fundamental problems atm, and Xen 4.13 cannot ship with it in this state. I did a small performance test with this patch and then removed latching of need_full_gdt(nd) in the local variable: On a 8 cpu system I started 2 mini-os domains (1 vcpu each) doing a busy loop sending events to dom0. On dom0 I did a build of the hypervisor via "make -j 8" and measured the time for that build, then took the average of 5 such builds (doing a make clean in between). elapsed user system Unpatched: 66.51 232.93 109.21 latched: 64.82 232.33 109.18 unlatched: 63.39 231.81 107.49 As there is a small advantage for not latching I'll remove the full_gdt local variable. Juergen _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |