TigerVNC / tigervnc

High performance, multi-platform VNC client and server
https://tigervnc.org
GNU General Public License v2.0
5.14k stars 942 forks source link

High CPU load on TigerVNC 1.9.0 and degradation picture quality #827

Closed AAAPops closed 5 years ago

AAAPops commented 5 years ago

I see regression in picture quality in version 1.9.0 compared with previous version 1.7.8

I use absolutely identical hardware and software: Server side - 4x Xeon X5660 2.80GHz, 8GB RAM + Debian 10 Client side - 8x i7-6700K 4.00GHz, 8GB RAM + Debian 10

If I use vncserver/vncviewer ver.1.9.0 I see ~100% CPU load on youtube's movies and picture on client is not suitable. If I use vncserver/vncviewer ver.1.7.8 I see ~60-90% CPU load and picture is OK. If I use vncserver1.7.8 + vncviewer ver.1.9.0 everything is Ok too.

I guess that problem is on server side but how can I resolve it?

AAAPops commented 5 years ago

I have made a little investigation and get next result: TigerVNC version compare

I use the same vncviewer from TigerVNC 1.9.0 all the time.

I check it twice on another hardware (client and server + CentOS 7) and get the same result even when vncviewer has the same version as Xvnc

CendioOssman commented 5 years ago

Could you attach some screen shots for comparison?

AAAPops commented 5 years ago

My test is youtube video playback so what kind of shot can I attach here? In this situation I prefer to rely on CPU usage persent. Do you see the same values as I post earlier? I quess 100% CPU consumption is too high per user and limits Tight stream quality between Xvnc server and client.

If you dont't see difference in CPU consumption in cases 1.8.0 and 1.9.0 well... the problem on my side -)

CendioOssman commented 5 years ago

No, I don't see any such issues. That's why a screen shot would be helpful as it might give some clue to the problem.

AAAPops commented 5 years ago

I am ready to prepare a virtual machine that show you the problem. ESXi image will be Ok? Or this is a wrong way?

I would be glad to attach screen shot but all I see is about 100% CPU usage by Xvnc and not smooth video enough.

CendioOssman commented 5 years ago

You wrote that picture quality was poor. Was that only referring to a low framerate and not blurry or pixelated image?

AAAPops commented 5 years ago

Yes, I mean low frame rate (not enough smooth image).

CendioOssman commented 5 years ago

Alright. Could you open connection info and see what encoding it claims it is using? It's on the context menu (F8).

AAAPops commented 5 years ago

Screenshot at 2019-04-26 18-10-55

CendioOssman commented 5 years ago

Hm... everything looks okay there. Very odd that you are seeing such issues.

We had another report where the encryption was consuming a lot of CPU. That was on really low end devices though, but it might be worth testing.

Could you check if it helps disabling encryption? And also check if the old servers were built without encryption support?

AAAPops commented 5 years ago

Sorry for long delay. I was out of office.

What kind of "encryption" are you talking about? Is it an option of Xvnc or vncviewer?

P.S. By the way if I use Xvnc from ThinLinc 4.10.0 CPU load and movie quality become good.

CendioOssman commented 5 years ago

What kind of "encryption" are you talking about? Is it an option of Xvnc or vncviewer?

Either, but it's probably easiest modifying it in the viewer. Check options and security and disable the two TLS encryption types.

P.S. By the way if I use Xvnc from ThinLinc 4.10.0 CPU load and movie quality become good.

That Xvnc is built without encryption support, so it does support that theory. Are you getting still getting 60-70% CPU or is it much calmer?

AAAPops commented 5 years ago

Either, but it's probably easiest modifying it in the viewer. Check options and security and disable the two TLS encryption types.

I have disabled both TLS encryption types in the viewer 1.9.0. It doesn't help. CPU load is still about 100%

P.S. By the way if I use Xvnc from ThinLinc 4.10.0 CPU load and movie quality become good.

That Xvnc is built without encryption support, so it does support that theory. Are you getting still getting 60-70% CPU or is it much calmer?

In this case CPU load about 60-70% but I think it's normal for my old server.

P.S. I'm ready to rebuild Xvnc with the same configure options you use in case ThinLinc 4.10.0 or ready to test binary Xvnc you prepare youself if configure options is commercial secret -)

CendioOssman commented 5 years ago

ThinLinc's Xvnc doesn't have anything magical in it, so I'm not sure why you are seeing a difference.

Just to make sure, could you switch back to the "bad" server and test again? Open the connection info dialog again and make sure "Security type" says VNCAuth.

Where did you get the "bad" server? Where was it built?

AAAPops commented 5 years ago

ThinLinc's Xvnc doesn't have anything magical in it, so I'm not sure why you are seeing a difference.

It looks like it has -)

Let me describe my test server again:

1--------------------------------------------------------------------------------------- Xvnc TigerVNC 1.9.0 - built Jul 16 2018 14:18:04 Underlying X server release 11400000, The X.Org Foundation

Was download from: https://github.com/TigerVNC/tigervnc/releases

CPU load 70-95% Video playback quality - Poor Connection info dialog - Security method: VncAuth

2--------------------------------------------------------------------------------------- Xvnc ThinLinc release 4.10.0 build 6068 - built Mar 15 2019 03:42:14 Underlying X server release 12001000, The X.Org Foundation

Was download from: https://www.cendio.com/thinlinc/download

CPU load 40-50% Video playback quality - Good Connection info dialog - Security method: VncAuth

CendioOssman commented 5 years ago

Ah. Your initial description mentioned Xorg 1.20, so I figured you were running something more recently built than our build of 1.9.0.

So the upgraded X stack could be a reason then. Could you test a nightly build? It should be built with the same version of things as the Xvnc in ThinLinc.

AAAPops commented 5 years ago

To clarify question: in my case I use "Xvnc TigerVNC 1.9.0" and "Xvnc ThinLinc release 4.10.0 build 6068" as a binary releases and I see dramatically difference in video playback quality and CPU load.

I use binary official releases to be sure everyone can get the same problem as I get.

I woud be glad to build "Xvnc TigerVNC 1.9.0 nightly build + Xorg 1.20" but I have to know "configure" option you use for "Xvnc ThinLinc release 4.10.0 build 6068" otherwise my attempt not be clear.

CendioOssman commented 5 years ago

We already have automated nightly builds on our home page, so you don't have to build it yourself.

But if you want to give it a go, this is the configure line used:

../configure --prefix=/usr --disable-static --disable-unit-tests --enable-xfree86-utils --with-int10=x86emu --disable-dmx --disable-kdrive --disable-xvfb --disable-xnest --disable-xorg --enable-glx --with-sha1=libcrypto --with-default-font-path=catalogue:/etc/X11/fontpath.d,/usr/share/X11/fonts/misc,/usr/share/X11/fonts/75dpi,/usr/share/X11/fonts/100dpi,/usr/share/X11/fonts/Type1,/usr/share/X11/fonts/TTF,/usr/share/fonts/default/Type1,/usr/share/fonts/X11/misc,/usr/share/fonts/X11/Type1,/usr/share/fonts/misc,/usr/share/fonts/75dpi,/usr/share/fonts/100dpi,/usr/share/fonts/Type1,/usr/share/fonts/URW,/usr/share/fonts/Speedo,/usr/share/fonts/cyrillic,/usr/share/fonts/truetype,/usr/share/fonts/misc 'CFLAGS=-Wall -O2 -g' 'CXXFLAGS=-Wall -O2 -g' LDFLAGS=-g

Note that the final result will depend on much more than the configure line and xserver version though. There are a whole bunch of libraries that are crucial for performance that get linked in.

AAAPops commented 5 years ago

Sorry I can't find TigerVNC nightly build.

I see ThinLink nightly build but ThinLink 4.10.0 works perfect right now and no need further testings. I want TigerVNC work as good as ThinLink 4.10.0 does.

So we can't find out the build different between the two releases.

P.S. Of course I can build TigerVNC last commit with your ''configure....' line but I will get (you are right) absolutely different build version so I would prefer work and check only "official" releases.

CendioOssman commented 5 years ago

Sorry I can't find TigerVNC nightly build.

If you go to https://tigervnc.org/, you have a section under "Downloads" that says "Pre-release builds of the experimental next-generation code can be found here.". Clicking the link there should take you to http://tigervnc.bphinz.com/nightly/. Grab the x86_64 version from the top section ("Cross-compatible builds") and see how that behaves. It should be built the the same base as the ThinLinc Xvnc.

AAAPops commented 5 years ago

Great job, Pierre, great job! Nightly build works perfect! CPU load becomes normal. I think you can close the task.

P.S. What about new version of TigerVNC with fixed bugs?

CendioOssman commented 5 years ago

Great. I'll close this issue then.

I'd like to get one out soon. But time is scarce and we're really busy with our own things here unfortunately. Might not be until the end of summer. :/