Hello,

After upgrading guacamole-server from 1.2.0 to 1.6.0, we are seeing a 
substantial performance regression on RDP connections, on identical hardware, 
against the same RDP server, with the same on-screen content:

  *
guacd CPU usage is ~2× higher, and
  *   network traffic to the client is 3–5× higher.

I investigated and ruled the following out (no measurable effect on either 
metric):

  *
reproduced identically with GFX / Graphics Pipeline disabled and enabled,
  *
reproduced identically with FreeRDP 2.11.7 (Debian 12) and FreeRDP 3.15.0 
(Debian 13)


The following data comes from two 30-second Guacamole protocol recordings of 
the same test (1.2.0 vs 1.6.0, same server), tallied by opcode:

1.2.0
1.6.0
Total stream
2.78 MB
9.63 MB
Image data (blob)
2.18 MB
8.79 MB
Images encoded (img)
3,632
13,642
copy operations
18,747
9,606
Avg. bytes per image tile
~600 B
~640 B

Basically this test was simply to scroll through the contents of a folder in 
Windows Explorer to force a screen refresh.

We also measured that, for this test, 69% of the image tiles encoded by 1.6.0 
are exact repeats of tiles already encoded earlier in the same session (7,399 
tiles encoded, 5,131 repeats, 2,268 distinct). In other words, a persistent 
tile cache that emitted a copy for a repeated tile instead of re-encoding it 
would eliminate roughly two-thirds of both the image bandwidth and the encoding 
CPU, bringing 1.6.0 close to 1.2.0 levels.
Our understanding is that the regression stems from the guac_display rendering 
model (rasterize everything, then diff and re-encode changed regions), which no 
longer benefits from persistent, cache-driven tile reuse: its copy detection 
compares only against the previous frame, with no persistent cache of 
previously transmitted tiles equivalent to the RDP bitmap cache used in 1.2.0.
Our questions:

  1.  Is this CPU/bandwidth increase known/expected for the RDP guac_display 
path in 1.6?
  2.  Is there any configuration to mitigate it, or a planned improvement to 
tile reuse/caching (e.g. a persistent tile cache) in guac_display?
  3.
Any guidance for CPU-density-constrained multi-session deployments on 1.6?
  4.
Is there any development related to similar issues planned for the next version 
?

Thanks in advance for your help.

Reply via email to