[Spice-devel] experimental spice-server branch

Yonit Halperin yhalperi at redhat.com
Thu Oct 24 17:29:03 CEST 2013


Hi,

You can find some optimizations I made to spice-server under:

http://cgit.freedesktop.org/~yhalperi/spice/
branch bitmap-crop.mem-control

together with:
http://cgit.freedesktop.org/~yhalperi/spice-common/
branch bitmap-crop.mem-control

The first set of patches (till commit a5100670f, inclusive) is about 
sending only the used part of bitmaps, instead of the whole bitmaps.
With Windows7 guest, I noticed, that when scrolling with chrome browser, 
and also when moving a window over the desktop, we get from the driver 
large bitmaps, while only a small part of them is actually being used 
(even if they are cached, when taking into account their usage over 
several drawable operations).
Since cropping bitmaps might have negative affect over caching, I 
activated it only when the low_bandwidth flag is turned on and when the 
cropped area is less the 10% of the whole bitmap (more details in the code).

The second set of patches tries to improve how the qxl ram memory is 
held by the server and minimize the occurrences of OOM in the driver.

I don't have yet conclusive results on how these optimizations affect 
latency. We don't have a tool for measuring latency objectively, and it 
was hard to estimate it from user experience.
I post these patches so that others can review and try them. There is 
also a room to play with threshold constants, improving the occupied 
memory estimation, changing the release ring management in qemu and the 
driver, etc.

The patches for controlling the qxl ram usage can also be used for 
removing the NUM_DRAWABLES limitation (useful for multiple clients and 
spiceterm).

Best,
Yonit.


More information about the Spice-devel mailing list