[Spice-devel] [PATCH spice] compress-stat: Add not compressed image to statistics

Pavel Grunt pgrunt at redhat.com
Fri Jan 29 06:10:42 PST 2016


On Fri, 2016-01-29 at 08:41 -0500, Frediano Ziglio wrote:
> > 
> > To see how many images and data could not be compressed.
> > ---
> >  server/dcc.c             | 27 +++++++++++++++++++++++++++
> >  server/display-channel.c | 11 +++++++++++
> >  server/display-channel.h |  1 +
> >  3 files changed, 39 insertions(+)
> > 
> > diff --git a/server/dcc.c b/server/dcc.c
> > index bf692f8..15cec72 100644
> > --- a/server/dcc.c
> > +++ b/server/dcc.c
> > @@ -1029,7 +1029,12 @@ static int
> > dcc_compress_image_quic(DisplayChannelClient *dcc, SpiceImage
> > *dest,
> >  
> >  #define MIN_SIZE_TO_COMPRESS 54
> >  #define MIN_DIMENSION_TO_QUIC 3
> > +
> > +#ifdef COMPRESS_STAT
> > +static int dcc_compress_image_internal(DisplayChannelClient *dcc,
> > +#else
> >  int dcc_compress_image(DisplayChannelClient *dcc,
> > +#endif
> >                         SpiceImage *dest, SpiceBitmap *src,
> > Drawable
> >                         *drawable,
> >                         int can_lossy,
> >                         compress_send_data_t* o_comp_data)
> > @@ -1154,6 +1159,28 @@ int dcc_compress_image(DisplayChannelClient
> > *dcc,
> >      }
> >  }
> >  
> > +#ifdef COMPRESS_STAT
> > +int dcc_compress_image(DisplayChannelClient *dcc,
> > +                       SpiceImage *dest, SpiceBitmap *src,
> > Drawable
> > *drawable,
> > +                       int can_lossy,
> > +                       compress_send_data_t* o_comp_data)
> > +{
> > +    int success;
> > +    stat_start_time_t start_time;
> > +
> > +    stat_start_time_init(&start_time, &DCC_TO_DC(dcc)->off_stat);
> > +    success = dcc_compress_image_internal(dcc, dest, src,
> > drawable,
> > can_lossy, o_comp_data);
> > +
> > +    if (!success) {
> > +        uint64_t image_size = src->stride * src->y;
> > +
> > +        stat_compress_add(&DCC_TO_DC(dcc)->off_stat, start_time,
> > image_size,
> > image_size);
> > +    }
> > +
> > +    return success;
> > +}
> > +#endif
> > +
> 
> This change does not look that beautiful. What about your other
> patches
> for image compression? Wouldn't they decrease the number of returns
> from
> dcc_compress_image?

Actually yes, it would be possible to track it inside
the dcc_compress_image function. I will go that way.

Thanks,
Pavel

> The stat_* interface is designed to produce no code is statistics are
> disabled so copying on all exist paths would work. I understand that
> now there are too much paths that return FALSE.
> 
> >  #define CLIENT_PALETTE_CACHE
> >  #include "cache-item.tmpl.c"
> >  #undef CLIENT_PALETTE_CACHE
> > diff --git a/server/display-channel.c b/server/display-channel.c
> > index f0d133a..5effd56 100644
> > --- a/server/display-channel.c
> > +++ b/server/display-channel.c
> > @@ -36,6 +36,7 @@ void
> > display_channel_compress_stats_reset(DisplayChannel
> > *display)
> >  {
> >      spice_return_if_fail(display);
> >  
> > +    stat_reset(&display->off_stat);
> >      stat_reset(&display->quic_stat);
> >      stat_reset(&display->lz_stat);
> >      stat_reset(&display->glz_stat);
> > @@ -58,6 +59,12 @@ void display_channel_compress_stats_print(const
> > DisplayChannel *display_channel)
> >  
> >      spice_info("==> Compression stats for display %u",
> >      display_channel->common.base.id);
> >      spice_info("Method   \t  count
> >      \torig_size(MB)\tenc_size(MB)\tenc_time(s)");
> > +    spice_info("OFF     \t%8d\t%13.2f\t%12.2f\t%12.2f",
> > +               display_channel->off_stat.count,
> > +               stat_byte_to_mega(display_channel-
> > >off_stat.orig_size),
> > +               stat_byte_to_mega(display_channel-
> > >off_stat.comp_size),
> > +               stat_cpu_time_to_sec(display_channel-
> > >off_stat.total)
> > +               );
> >      spice_info("QUIC     \t%8d\t%13.2f\t%12.2f\t%12.2f",
> >                 display_channel->quic_stat.count,
> >                 stat_byte_to_mega(display_channel-
> > >quic_stat.orig_size),
> > @@ -103,18 +110,21 @@ void
> > display_channel_compress_stats_print(const
> > DisplayChannel *display_channel)
> >      spice_info("------------------------------------------------
> > -------------------");
> >      spice_info("Total    \t%8d\t%13.2f\t%12.2f\t%12.2f",
> >                 display_channel->lz_stat.count +
> >                 display_channel->glz_stat.count +
> > +
> > display_channel->off_stat.count
> > +
> >                                                  display_channel-
> > >quic_stat.count
> >                                                  +
> >                                                  display_channel-
> > >jpeg_stat.count
> >                                                  +
> >                                                  display_channel-
> > >lz4_stat.count
> >                                                  +
> >                                                  display_channel-
> > >jpeg_alpha_stat.count,
> >                 stat_byte_to_mega(display_channel-
> > >lz_stat.orig_size +
> >                                   display_channel-
> > >glz_stat.orig_size +
> > +                                 display_channel-
> > >off_stat.orig_size +
> >                                   display_channel-
> > >quic_stat.orig_size +
> >                                   display_channel-
> > >jpeg_stat.orig_size +
> >                                   display_channel-
> > >lz4_stat.orig_size +
> >                                   display_channel-
> > >jpeg_alpha_stat.orig_size),
> >                 stat_byte_to_mega(display_channel-
> > >lz_stat.comp_size +
> >                                   glz_enc_size +
> > +                                 display_channel-
> > >off_stat.comp_size +
> >                                   display_channel-
> > >quic_stat.comp_size +
> >                                   display_channel-
> > >jpeg_stat.comp_size +
> >                                   display_channel-
> > >lz4_stat.comp_size +
> > @@ -122,6 +132,7 @@ void display_channel_compress_stats_print(const
> > DisplayChannel *display_channel)
> >                 stat_cpu_time_to_sec(display_channel->lz_stat.total 
> > +
> >                                      display_channel-
> > >glz_stat.total +
> >                                      display_channel-
> > >zlib_glz_stat.total +
> > +                                    display_channel-
> > >off_stat.total +
> >                                      display_channel-
> > >quic_stat.total +
> >                                      display_channel-
> > >jpeg_stat.total +
> >                                      display_channel-
> > >lz4_stat.total +
> > diff --git a/server/display-channel.h b/server/display-channel.h
> > index bf29cd3..e3527bd 100644
> > --- a/server/display-channel.h
> > +++ b/server/display-channel.h
> > @@ -213,6 +213,7 @@ struct DisplayChannel {
> >      uint64_t *add_to_cache_counter;
> >      uint64_t *non_cache_counter;
> >  #endif
> > +    stat_info_t off_stat;
> >      stat_info_t lz_stat;
> >      stat_info_t glz_stat;
> >      stat_info_t quic_stat;
> 
> The rest of the patch looks ok.
> 
> Frediano


More information about the Spice-devel mailing list