[Spice-devel] [RFC spice-gtk 0/5] Quality of Service and monitoring network usage
Marc-André Lureau
marcandre.lureau at redhat.com
Fri Apr 7 13:31:57 UTC 2017
Hi
----- Original Message -----
> From: Victor Toso <me at victortoso.com>
>
> Hi,
>
> For a while now I've been playing with the overall network usage with
> spice-gtk and trying to think in a way to avoid situations where
> channels which are transferring files don't interfere too much on
> channels like display or input as they are very important to the user
> experience.
>
> This has been proved quite difficult (tm) but hopefully this patches can
> help.
>
> In the last patch, I'm measuring and storing the data rate for read and
> write on each channel in order to plot charts for seeing what is going
> on in regard network usage per channel.
>
> I'm considering moving this 'saving network data' to spice-gtk so we can
> make it more usable with other clients too. Opinions?
>
> I've saved 5 tests + images at [0] and I'll mention them in the notes
> bellow. All the tests were using Fedora 25 (client and guest) and I'm
> targeting only webdav + display channels.
>
> [0] https://people.freedesktop.org/~victortoso/imgs/spice/qos-tests/
>
> In the first 03 tests I'm transferring two files (second only when the
> first one is done) 200MB and 400MB in size, from the guest fs to the
> shared folder. During the whole time the stopwatch from Clocks app is
> running as it does a great job drawing several times per second :)
>
> Streaming and image compression are off.
>
> In tests 04-05 I'm transferring a bigger file (1.4 GB) with caution as
> it is *very easy* to run out of memory in the host and having the VM
> killed by the operation system. Bug [1] is around spice-server not
> controlling the amount of data it is storing.
>
> [1] https://bugs.freedesktop.org/show_bug.cgi?id=100550
>
> So, a few notes of this experience:
>
> * I'm quite amazed by how much data the display-channel can transfer.
> Considering client-machine = host-machine, data rate can go as big as
> ~200 MiB/s but my feeling is that having overall bandwidth of 50 MiB/s
> did not affect _my_ user experience in those tests.
>
> * I can see the throttling working but I wonder if it should be
> more/less aggressive depending on the network usage?
>
> * A few bugs around memory usage. By default, if we have to store a file
> in memory we should be more careful about it.
>
> Last but not least, I wonder if we should have an option to limit
> bandwidth usage for the whole session. I think it can be easy to extend
> this patches to achieve that.
>
My main question is about the design to place throttling on the client, why not at the server instead? We already use SO_PRIORITY for the sound channel. Have you tried doing more server-side / socket tweaking before doing client side computations that may have various issues?
thanks
> Thanks for any comments,
> toso
>
> PS: code in qos branch of
> https://gitlab.com/victortoso/spice-gtk/
>
> Victor Toso (5):
> spice-channel: new 'total-write-bytes' property
> qos: introduce quality of service to channels
> qos: bandwidth computation
> qos: introduce channel priority throttling
> spicy: save data measurements for each channel
>
> src/spice-channel-priv.h | 1 +
> src/spice-channel.c | 51 ++++++
> src/spice-option.c | 5 +
> src/spice-session-priv.h | 5 +
> src/spice-session.c | 469
> ++++++++++++++++++++++++++++++++++++++++++++++-
> tools/spicy-gnuplot.sh | 19 ++
> tools/spicy.c | 259 +++++++++++++++++++++++++-
> 7 files changed, 807 insertions(+), 2 deletions(-)
> create mode 100755 tools/spicy-gnuplot.sh
>
> --
> 2.9.3
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
>
More information about the Spice-devel
mailing list