qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PULL v2 10/11] monitor: Add drift info to 'info jit'


From: Sebastian Tanase
Subject: Re: [Qemu-devel] [PULL v2 10/11] monitor: Add drift info to 'info jit'
Date: Fri, 8 Aug 2014 17:37:53 +0200 (CEST)


----- Mail original -----
> De: "Paolo Bonzini" <address@hidden>
> À: address@hidden
> Cc: "Sebastian Tanase" <address@hidden>
> Envoyé: Jeudi 7 Août 2014 15:34:49
> Objet: [PULL v2 10/11] monitor: Add drift info to 'info jit'
> 
> From: Sebastian Tanase <address@hidden>
> 
> Show in 'info jit' the current delay between the host clock
> and the guest clock. In addition, print the maximum advance
> and delay of the guest compared to the host.
> 
> Signed-off-by: Sebastian Tanase <address@hidden>
> Tested-by: Camille Bégué <address@hidden>
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
>  cpu-exec.c            |  6 ++++++
>  cpus.c                | 19 +++++++++++++++++++
>  include/qemu-common.h |  4 ++++
>  monitor.c             |  1 +
>  4 files changed, 30 insertions(+)
> 
> diff --git a/cpu-exec.c b/cpu-exec.c
> index 3c14502..cbc8067 100644
> --- a/cpu-exec.c
> +++ b/cpu-exec.c
> @@ -105,6 +105,12 @@ static void init_delay_params(SyncClocks *sc,
>                     sc->realtime_clock +
>                     cpu_get_clock_offset();
>      sc->last_cpu_icount = cpu->icount_extra +
>      cpu->icount_decr.u16.low;
> +    if (sc->diff_clk < max_delay) {
> +        max_delay = sc->diff_clk;
> +    }
> +    if (sc->diff_clk > max_advance) {
> +        max_advance = sc->diff_clk;
> +    }
>  
>      /* Print every 2s max if the guest is late. We limit the number
>         of printed messages to NB_PRINT_MAX(currently 100) */
> diff --git a/cpus.c b/cpus.c
> index 19245e9..2b5c0bd 100644
> --- a/cpus.c
> +++ b/cpus.c
> @@ -64,6 +64,8 @@
>  #endif /* CONFIG_LINUX */
>  
>  static CPUState *next_cpu;
> +int64_t max_delay;
> +int64_t max_advance;
>  
>  bool cpu_is_stopped(CPUState *cpu)
>  {
> @@ -1552,3 +1554,20 @@ void qmp_inject_nmi(Error **errp)
>      error_set(errp, QERR_UNSUPPORTED);
>  #endif
>  }
> +
> +void dump_drift_info(FILE *f, fprintf_function cpu_fprintf)
> +{
> +    if (!use_icount) {
> +        return;
> +    }
> +
> +    cpu_fprintf(f, "Host - Guest clock  %"PRIi64" ms\n",
> +                (cpu_get_clock() - cpu_get_icount())/SCALE_MS);
> +    if (icount_align_option) {
> +        cpu_fprintf(f, "Max guest delay     %"PRIi64" ms\n",
> -max_delay/SCALE_MS);
> +        cpu_fprintf(f, "Max guest advance   %"PRIi64" ms\n",
> max_advance/SCALE_MS);
> +    } else {
> +        cpu_fprintf(f, "Max guest delay     NA\n");
> +        cpu_fprintf(f, "Max guest advance   NA\n");
> +    }
> +}

Thank you very much for fixing this.
I must have missed it somehow.

Best regards,

Sebastian

> diff --git a/include/qemu-common.h b/include/qemu-common.h
> index 5d10ac2..bcf7a6a 100644
> --- a/include/qemu-common.h
> +++ b/include/qemu-common.h
> @@ -109,6 +109,10 @@ static inline char *realpath(const char *path,
> char *resolved_path)
>  void configure_icount(QemuOpts *opts, Error **errp);
>  extern int use_icount;
>  extern int icount_align_option;
> +/* drift information for info jit command */
> +extern int64_t max_delay;
> +extern int64_t max_advance;
> +void dump_drift_info(FILE *f, fprintf_function cpu_fprintf);
>  
>  #include "qemu/osdep.h"
>  #include "qemu/bswap.h"
> diff --git a/monitor.c b/monitor.c
> index 5bc70a6..cdbaa60 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -1047,6 +1047,7 @@ static void do_info_registers(Monitor *mon,
> const QDict *qdict)
>  static void do_info_jit(Monitor *mon, const QDict *qdict)
>  {
>      dump_exec_info((FILE *)mon, monitor_fprintf);
> +    dump_drift_info((FILE *)mon, monitor_fprintf);
>  }
>  
>  static void do_info_history(Monitor *mon, const QDict *qdict)
> --
> 1.8.3.1
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]