Re: Performance of Xspice - some results, and a potential patch

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

 



> <snip>
> I'm very encouraged to hear this as we are very, very interested in
> SPICE as a WAN protocol.  We have noticed that the end user experience
> is almost as dependent upon latency as bandwidth so I was a little
> concerned that you are sending pixmaps changes on a periodic basis.
> Does that introduce any noticeable latency?
> 
> I've been quite surprised at how much users are affected by latency I
> would not have thought an issue.  Thus, I would define noticeable as
> somewhere between 50 and 100 ms.  Thanks very much - John
> 

Actually, there is a hard coded behavior in the Spice server that can
make it function poorly with any kind of latency.  That is, by default,
it requires that the client supply an acknowledgment either every 20th
or 40th packet.  So if you do something that generates more than 40
display messages in a short period of time (which isn't that hard to do)
you have to wait for a full round trip before proceeding on.

The attached patch hacks its way around that issue by mangling the sizes
up by a factor of 10.  I have a todo on my list to ask smarter people
here how better to address this issue.

Cheers,

Jeremy

diff --git a/server/red_worker.c b/server/red_worker.c
index 9330fff..c766910 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -347,11 +347,11 @@ typedef struct LocalCursor {
     SpiceCursor red_cursor;
 } LocalCursor;
 
-#define MAX_PIPE_SIZE 50
+#define MAX_PIPE_SIZE 500
 #define RECIVE_BUF_SIZE 1024
 
-#define WIDE_CLIENT_ACK_WINDOW 40
-#define NARROW_CLIENT_ACK_WINDOW 20
+#define WIDE_CLIENT_ACK_WINDOW 400
+#define NARROW_CLIENT_ACK_WINDOW 200
 
 #define BITS_CACHE_HASH_SHIFT 10
 #define BITS_CACHE_HASH_SIZE (1 << BITS_CACHE_HASH_SHIFT)
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]