Update: UltraVNC 1.4.3.6 and UltraVNC SC 1.4.3.6: viewtopic.php?t=37885
Important: Please update to latest version before to create a reply, a topic or an issue: viewtopic.php?t=37864

Join us on social networks and share our announcements:
- Website: https://uvnc.com/
- GitHub: https://github.com/ultravnc
- Mastodon: https://mastodon.social/@ultravnc
- Facebook: https://www.facebook.com/ultravnc1
- X/Twitter: https://twitter.com/ultravnc1
- Reddit community: https://www.reddit.com/r/ultravnc
- OpenHub: https://openhub.net/p/ultravnc

Performance Measurements with 1.2.2.3

Post Reply
erel
Posts: 3
Joined: 2019-12-03 14:53

Performance Measurements with 1.2.2.3

Post by erel »

Hi All.

We are using Ultra VNC internally in our company but we have some performance problems and we want to pinpoint the reason (network, capturing desktop, rendering, actions take the most time etc.). We've checked the code but we see that it is not a Request/Response communication between server and viewer (sometimes server returns more than one response for some requests, like remote buffer update, and as we understood, this communication can be asynchronous). We want to correlate any request and response to have timings so we can extract the information needed to take action.
My question is; can we have extra information, like a message id, correlation id + timestamp etc. with the actual message (any rfb command or the ones that takes more than average time) without breaking anything (it should be compatible with unmodified endpoints (server or viewer)). Due to the structure we have, we want to collect this data in the computer that Ultra VNC Viewer runs.

Does anyone have an idea how we can do that?

Thanks in advance.
User avatar
Rudi De Vos
Admin & Developer
Admin & Developer
Posts: 6832
Joined: 2004-04-23 10:21
Contact:

Re: Performance Measurements with 1.2.2.3

Post by Rudi De Vos »

i7 HD 630 -> 20-35 FPS (1920x1200) video
DDengine capture method
video (u2) encoder.
1 Gb LAN
Cpu usage 5-20%,
Using youtube 60 FPS test video's

Using the ddengine it's as fast as with a mirror driver on the old OS's, but the requirements for a video card are higher. The capture is done using DirectX..
erel
Posts: 3
Joined: 2019-12-03 14:53

Re: Performance Measurements with 1.2.2.3

Post by erel »

Hi Rudi. Thank you for your reply but I really need to have some measurements inside of the Ultra VNC Server and Ultra VNC Viewer like:
  • For Viewer:
    • When command X is sent
    • When the response for the command X is received (exact match of the command X, not only the type, also the instance of the command)
    For Server
    • When command X is received (we need to match exact command that is sent from the viewer)
    • When the corresponding response is sent
Sometimes we have performance problems and we want to pinpoint the reason with these measurements.
Is there a way to do that, even if we need to alter the code?
User avatar
Rudi De Vos
Admin & Developer
Admin & Developer
Posts: 6832
Joined: 2004-04-23 10:21
Contact:

Re: Performance Measurements with 1.2.2.3

Post by Rudi De Vos »

The rfb protocol doesn't have a package ID, each request for udate is the same package.
Possible a network sniffer would do a better job then trying to measure packages.

Did you already tried to set the cpu to 100, server poll properties page.
I doesn't only allow more cpu, but also use a internal faster mode to send data

Check what this option does in the code, this are possible some good spots to monitor.
erel
Posts: 3
Joined: 2019-12-03 14:53

Re: Performance Measurements with 1.2.2.3

Post by erel »

Rudi De Vos wrote:The rfb protocol doesn't have a package ID, each request for update is the same package.
...
Thank you for your reply Rudi. Can we add some internally generated message ID to the protocol without breaking anything? If so, do you know how to do? It doesn't have to be for every command. Initially we are interested in command(s) for screen update.
Normally, we don't want to break anything on the other side (client or server) but if there is no way to be backward (modified<->unmodified) compatible, still, we would like to implement something for this purpose. We can try to match modified/unmodified server and viewer somehow.
Thanks in advance.
Post Reply