WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

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

To: "Laszlo Ersek" <lersek@xxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] remove blocked time accounting from xen "clockchip"
From: "Jan Beulich" <JBeulich@xxxxxxxx>
Date: Wed, 19 Oct 2011 08:51:19 +0100
Cc: Jeremy Fitzhardinge <jeremy@xxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx, Joe Jin <joe.jin@xxxxxxxxxx>, Zhenzhong Duan <zhenzhong.duan@xxxxxxxxxx>, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Delivery-date: Wed, 19 Oct 2011 00:52:48 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <1318970579-6282-1-git-send-email-lersek@xxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <1318970579-6282-1-git-send-email-lersek@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
>>> 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