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

Re: [Xen-devel] [PATCH] remove blocked time accounting from xen "clockchip"



>>> On 18.10.11 at 22:42, Laszlo Ersek <lersek@xxxxxxxxxx> wrote:
> ... because the "clock_event_device framework" already accounts for idle
> time through the "event_handler" function pointer in
> xen_timer_interrupt().

As event_handler is being checked to be non-zero, shouldn't the
code you remove simply become conditional (upon event_handler
being zero)?

Jan

> The patch is intended as the completion of [1]. It should fix the double
> idle times seen in PV guests' /proc/stat [2]. It should be orthogonal to
> stolen time accounting (the removed code seems to be isolated).
> 
> The approach may be completely misguided.
> 
> [1] https://lkml.org/lkml/2011/10/6/10 
> [2] http://lists.xensource.com/archives/html/xen-devel/2010-08/msg01068.html 
> 
> Signed-off-by: Laszlo Ersek <lersek@xxxxxxxxxx>
> ---
>  arch/x86/xen/time.c |   17 ++---------------
>  1 files changed, 2 insertions(+), 15 deletions(-)
> 
> diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c
> index 163b467..377f6ae 100644
> --- a/arch/x86/xen/time.c
> +++ b/arch/x86/xen/time.c
> @@ -36,9 +36,8 @@ static DEFINE_PER_CPU(struct vcpu_runstate_info, 
> xen_runstate);
>  /* snapshots of runstate info */
>  static DEFINE_PER_CPU(struct vcpu_runstate_info, xen_runstate_snapshot);
>  
> -/* unused ns of stolen and blocked time */
> +/* unused ns of stolen time */
>  static DEFINE_PER_CPU(u64, xen_residual_stolen);
> -static DEFINE_PER_CPU(u64, xen_residual_blocked);
>  
>  /* return an consistent snapshot of 64-bit time/counter value */
>  static u64 get64(const u64 *p)
> @@ -115,7 +114,7 @@ static void do_stolen_accounting(void)
>  {
>       struct vcpu_runstate_info state;
>       struct vcpu_runstate_info *snap;
> -     s64 blocked, runnable, offline, stolen;
> +     s64 runnable, offline, stolen;
>       cputime_t ticks;
>  
>       get_runstate_snapshot(&state);
> @@ -125,7 +124,6 @@ static void do_stolen_accounting(void)
>       snap = &__get_cpu_var(xen_runstate_snapshot);
>  
>       /* work out how much time the VCPU has not been runn*ing*  */
> -     blocked = state.time[RUNSTATE_blocked] - snap->time[RUNSTATE_blocked];
>       runnable = state.time[RUNSTATE_runnable] - 
> snap->time[RUNSTATE_runnable];
>       offline = state.time[RUNSTATE_offline] - snap->time[RUNSTATE_offline];
>  
> @@ -141,17 +139,6 @@ static void do_stolen_accounting(void)
>       ticks = iter_div_u64_rem(stolen, NS_PER_TICK, &stolen);
>       __this_cpu_write(xen_residual_stolen, stolen);
>       account_steal_ticks(ticks);
> -
> -     /* Add the appropriate number of ticks of blocked time,
> -        including any left-overs from last time. */
> -     blocked += __this_cpu_read(xen_residual_blocked);
> -
> -     if (blocked < 0)
> -             blocked = 0;
> -
> -     ticks = iter_div_u64_rem(blocked, NS_PER_TICK, &blocked);
> -     __this_cpu_write(xen_residual_blocked, blocked);
> -     account_idle_ticks(ticks);
>  }
>  
>  /* Get the TSC speed from Xen */





_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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