neutrinolabs / xrdp

xrdp: an open source RDP server
http://www.xrdp.org/
Apache License 2.0
5.46k stars 1.72k forks source link

xrdp 0.10 performance issues with xvnc #3114

Open fc-michael5527 opened 3 weeks ago

fc-michael5527 commented 3 weeks ago

xrdp version

xrdp 0.10.0

Detailed xrdp version, build options

xrdp 0.10.0
  A Remote Desktop Protocol Server.
  Copyright (C) 2004-2024 Jay Sorg, Neutrino Labs, and all contributors.
  See https://github.com/neutrinolabs/xrdp for more information.

  Configure options:
      --build=x86_64-redhat-linux-gnu
      --host=x86_64-redhat-linux-gnu
      --program-prefix=
      --disable-dependency-tracking
      --prefix=/usr
      --exec-prefix=/usr
      --bindir=/usr/bin
      --sbindir=/usr/sbin
      --sysconfdir=/etc
      --datadir=/usr/share
      --includedir=/usr/include
      --libdir=/usr/lib64
      --libexecdir=/usr/libexec
      --localstatedir=/var
      --sharedstatedir=/var/lib
      --mandir=/usr/share/man
      --infodir=/usr/share/info
      --enable-fuse
      --enable-pixman
      --enable-painter
      --enable-vsock
      --enable-ipv6
      --with-socketdir=/run/xrdp
      --with-imlib2
      build_alias=x86_64-redhat-linux-gnu
      host_alias=x86_64-redhat-linux-gnu
      CC=gcc
      CFLAGS=-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection 
      LDFLAGS=-Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 
      CXX=g++
      CXXFLAGS=-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
      LT_SYS_LIBRARY_PATH=/usr/lib64:
      PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig

  Compiled with OpenSSL 3.0.7 1 Nov 2022

Operating system & version

Rocky Linux 9.4

Installation method

dnf / apt / zypper / pkg / etc

Which backend do you use?

xorgxrdp

What desktop environment do you use?

GNOME3

Environment xrdp running on

AWS EC2 instance

What's your client?

Microsoft Remote Desktop application (Windows 10 & 11)

Area(s) with issue?

Performance

Steps to reproduce

Upgrade from 0.9.25 to 0.10.0 results in significant performance degradation when using the default configuration of xrdp (laggy experience). Updating the /etc/xrdp/xrdp.ini to use xorg (commenting out xvnc section) restores the performance to an acceptable level, however my users still report a loss in performance vs 0.9.25

✔️ Expected Behavior

The same performance as 0.9.25

❌ Actual Behavior

Loss of performance when using default configuration of xrdp with Microsoft RDP

Anything else?

Packages Altered: Upgrade xorgxrdp-0.10.1-1.el9.x86_64 @epel Upgraded xorgxrdp-0.9.20-1.el9.x86_64 @@System Upgrade xrdp-1:0.10.0-4.el9.x86_64 @epel Upgraded xrdp-1:0.9.25-2.el9.x86_64 @@System Upgrade xrdp-selinux-1:0.10.0-4.el9.x86_64 @epel Upgraded xrdp-selinux-1:0.9.25-2.el9.x86_64 @@System

matt335672 commented 3 weeks ago

@fc-michael5527 - thanks for raising this.

The changes to the VNC codepaths are not that significant. If you're using GFX, there's a new compression algorithm which was initially quite CPU intensive (see neutrinolabs/xorgxrdp#301) but you should have that fix if you're running xorgxrdp v0.10.1

matt335672 commented 1 week ago

@fc-michael5527 - have you got any more feedback on this?