[Spice-devel] [PATCH v2] stats: use CLOCK_THREAD_CPUTIME_ID for cpu statistics

Christophe Fergeau cfergeau at redhat.com
Mon Jan 11 07:57:04 PST 2016


Acked-by: Christophe Fergeau <cfergeau at redhat.com>

On Mon, Jan 11, 2016 at 03:45:40PM +0000, Frediano Ziglio wrote:
> Use CLOCK_THREAD_CPUTIME_ID instead of getting the clock
> with pthread_getcpuclockid.
> This avoids to call red_worker_get_clockid. This function returns
> uninitialized value at the time DisplayChannel is built resulting in setting
> statistics to CLOCK_REALTIME (which is 0) instead to cpu time as expected.
> 
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>  server/display-channel.c |  2 +-
>  server/red-worker.c      | 16 ++--------------
>  server/red-worker.h      |  1 -
>  3 files changed, 3 insertions(+), 16 deletions(-)
> 
> diff --git a/server/display-channel.c b/server/display-channel.c
> index ec4ca10..3bf065c 100644
> --- a/server/display-channel.c
> +++ b/server/display-channel.c
> @@ -2041,7 +2041,7 @@ DisplayChannel* display_channel_new(RedWorker *worker, int migrate, int stream_v
>          &cbs, dcc_handle_message);
>      spice_return_val_if_fail(display, NULL);
>  
> -    clockid_t stat_clock = red_worker_get_clockid(worker);
> +    clockid_t stat_clock = CLOCK_THREAD_CPUTIME_ID;
>      stat_init(&display->add_stat, "add", stat_clock);
>      stat_init(&display->exclude_stat, "exclude", stat_clock);
>      stat_init(&display->__exclude_stat, "__exclude", stat_clock);
> diff --git a/server/red-worker.c b/server/red-worker.c
> index dfaf4ba..ae798ec 100644
> --- a/server/red-worker.c
> +++ b/server/red-worker.c
> @@ -67,7 +67,6 @@ struct SpiceWatch {
>  
>  struct RedWorker {
>      pthread_t thread;
> -    clockid_t clockid;
>      QXLInstance *qxl;
>      RedDispatcher *red_dispatcher;
>      int running;
> @@ -256,7 +255,7 @@ static int red_process_display(RedWorker *worker, uint32_t max_pipe_size, int *r
>  
>          if (worker->record_fd)
>              red_record_qxl_command(worker->record_fd, &worker->mem_slots, ext_cmd,
> -                                   stat_now(worker->clockid));
> +                                   stat_now(CLOCK_THREAD_CPUTIME_ID));
>  
>          stat_inc_counter(worker->command_counter, 1);
>          worker->display_poll_tries = 0;
> @@ -1348,7 +1347,7 @@ static void worker_dispatcher_record(void *opaque, uint32_t message_type, void *
>  {
>      RedWorker *worker = opaque;
>  
> -    red_record_event(worker->record_fd, 1, message_type, stat_now(worker->clockid));
> +    red_record_event(worker->record_fd, 1, message_type, stat_now(CLOCK_THREAD_CPUTIME_ID));
>  }
>  
>  static void register_callbacks(Dispatcher *dispatcher)
> @@ -1619,10 +1618,6 @@ SPICE_GNUC_NORETURN static void *red_worker_main(void *arg)
>          spice_error("failed to create timer queue");
>      }
>  
> -    if (pthread_getcpuclockid(pthread_self(), &worker->clockid)) {
> -        spice_warning("getcpuclockid failed");
> -    }
> -
>      RED_CHANNEL(worker->cursor_channel)->thread_id = pthread_self();
>      RED_CHANNEL(worker->display_channel)->thread_id = pthread_self();
>  
> @@ -1723,10 +1718,3 @@ RedChannel* red_worker_get_display_channel(RedWorker *worker)
>  
>      return RED_CHANNEL(worker->display_channel);
>  }
> -
> -clockid_t red_worker_get_clockid(RedWorker *worker)
> -{
> -    spice_return_val_if_fail(worker, 0);
> -
> -    return worker->clockid;
> -}
> diff --git a/server/red-worker.h b/server/red-worker.h
> index 1f0cd99..91533e1 100644
> --- a/server/red-worker.h
> +++ b/server/red-worker.h
> @@ -97,7 +97,6 @@ bool       red_worker_run(RedWorker *worker);
>  QXLInstance* red_worker_get_qxl(RedWorker *worker);
>  RedChannel* red_worker_get_cursor_channel(RedWorker *worker);
>  RedChannel* red_worker_get_display_channel(RedWorker *worker);
> -clockid_t red_worker_get_clockid(RedWorker *worker);
>  RedMemSlotInfo* red_worker_get_memslot(RedWorker *worker);
>  
>  void red_drawable_unref(RedWorker *worker, RedDrawable *red_drawable,
> -- 
> 2.4.3
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20160111/424c0a0d/attachment.sig>


More information about the Spice-devel mailing list