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

Re: [Xen-devel] [PATCH] RFC: Linux: disable APERF/MPERF feature in PV kernels



On Tue, May 22, 2012 at 06:07:11PM +0200, Andre Przywara wrote:
> Hi,
> 
> while testing some APERF/MPERF semantics I discovered that this
> feature is enabled in Xen Dom0, but is not reliable.
> The Linux kernel's scheduler uses this feature if it sees the CPUID
> bit, leading to costly RDMSR traps (a few 100,000s during a kernel
> compile) and bogus values due to VCPU migration during the

Can you point me to the Linux scheduler code that does this? Thanks.

> measurement.
> The attached patch explicitly disables this CPU capability inside
> the Linux kernel, I couldn't measure any APERF/MPERF reads anymore
> with the patch applied.
> I am not sure if the PVOPS code is the right place to fix this, we
> could as well do it in the HV's xen/arch/x86/traps.c:pv_cpuid().
> Also when the Dom0 VCPUs are pinned, we could allow this, but I am
> not sure if it's worth to do so.
> 
> Awaiting your comments.
> 
> Regards,
> Andre.
> 
> P.S. Of course this doesn't fix pure userland software like
> cpupower, but I would consider this in the user's responsibility to

Which would not work anymore as the cpufreq support is disabled
when it boots under Xen.

> not use these tools in Dom0, but instead use xenpm.
> 
> -- 
> Andre Przywara
> AMD-Operating System Research Center (OSRC), Dresden, Germany

> commit e802e47d85314b4541288e4a19d057e2ea885a28
> Author: Andre Przywara <andre.przywara@xxxxxxx>
> Date:   Tue May 22 15:13:07 2012 +0200
> 
>     filter APERFMPERF feature in Xen to avoid kernel internal usage
>     
>     Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx>
> 
> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> index 95dccce..71252d5 100644
> --- a/arch/x86/xen/enlighten.c
> +++ b/arch/x86/xen/enlighten.c
> @@ -240,6 +240,11 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
>               *dx = cpuid_leaf5_edx_val;
>               return;
>  
> +     case 6:
> +             /* Disabling APERFMPERF for kernel usage */
> +             maskecx = ~(1U << 0);
> +             break;
> +
>       case 0xb:
>               /* Suppress extended topology stuff */
>               maskebx = 0;

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


_______________________________________________
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®.