xpra icon
Bug tracker and wiki

Opened 6 years ago

Closed 3 years ago

Last modified 23 months ago

#505 closed enhancement (worksforme)

fix bottleneck with applications like gtkperf

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: minor Milestone: 1.0
Component: server Version: 1.0.x
Keywords: Cc:

Description (last modified by Antoine Martin)

The problem with gtkperf is that it creates thousands of windows, and destroys them before we get a chance to paint them, this causes too many new-window packets to be queued up, too many damage requests to clog up the encoding queue, all of it for mostly nothing. (see also #232)

We should be able to detect when we have too many short-lived windows and start delaying things by a few milliseconds, which should be enough for the window to get closed before we bother with all the expensive actions.

This is one of the very rare cases where older protocols like VNC still do better, because they do not have to worry about windows, just pixels, which makes things so much easier.

Change History (5)

comment:1 Changed 6 years ago by Antoine Martin

Description: modified (diff)
Owner: changed from Antoine Martin to Antoine Martin
Status: newassigned

comment:2 Changed 5 years ago by Antoine Martin

Milestone: 1.00.16

We can't delay things in the server class which needs to keep track of things at all times, so this has to be done per-client in the server source class.

make_window_source is called from:

  • damage: we could just keep a list of pending damages events, and process them when we eventually get around to making the window source
  • new_window via send_window_icon: this one can be delayed a bit if we need to
  • set_client_properties: is this even needed here? This should not fire until we've sent the window.

comment:3 Changed 4 years ago by Antoine Martin

Milestone: 0.16future

Re-scheduling.

We should not care too much about pathological cases like these, it makes us look good on benchmarks but that's all.

comment:4 Changed 3 years ago by Antoine Martin

Resolution: worksforme
Status: assignedclosed

Works well enough for me!

comment:5 Changed 23 months ago by Antoine Martin

Milestone: future1.0
Version: 1.0.x
Note: See TracTickets for help on using tickets.