jinx.de
jinx.de
Fast VNC client anybody ?
Mittwoch, 7. Februar 2007
Grmpf.
You would think that with the number of VNC clients out there, at least one should be fairly fast right ? Think again.
Actually there is one that performs quite well and that one works only on PPC macs - VNCThing. ScreenRecycler depends on fast VNC clients so I decided to write a small VNC viewer application: JollysFastVNC.
Another product in the line of Jollys Fast programs: FastConsole, FastSokoban and now FastVNC.
As I did not have any experience in writing a VNC client I decided to write a only a small test - JollysFastVNC. It seems promising. Here some early performance results on the client:
Resolution: 1280x854x32bit hextile
Chicken of the VNC 2.0b4 0.075MByte/s@ 78.5% CPU 0% idle
VNCThing 2.2 25.0 MByte/s @ 83.3% CPU 0% idle
JollysFastVNC 0.52 48.2 MByte/s @ 62.1% CPU 15% idle
The client was a 1.25 GHz Powerbook 15” connected via Gigabit to the ScreenRecycler Server running hextile encoding on a dual 2.0 GHz G5. The G5 was at 100% CPU while JFVNC was connected, so JFVNC was waiting !
Hmmmm... must be something wrong - probably nobody uses 32bit for VNC connections. So let’s try the same setup in 16bit.
Resolution: 1280x854x16bit hextile
Chicken of the VNC 2.0b4 0.12MByte/s @ 79.9% CPU 0% idle
VNCThing 2.2 24.6 MByte/s @ 83.4% CPU 0% idle
JollysFastVNC 0.52 42.9 MByte/s @ 45.3% CPU 30% idle
Hmmmm... must be something wrong - probably nobody uses hextile any more and the implementation of hextile encoding is bad with cotvnc ?
Resolution: 1280x854x32bit raw
Chicken of the VNC 2.0b4 0.65MByte/s @ 73.6% CPU 0% idle
VNCThing 2.2 32.5 MByte/s @ 79.0% CPU 0% idle
JollysFastVNC 0.52 55.7 MByte/s @ 54.4% CPU 20% idle
Seems that I have to write a VNC client now. The current version is packaged in ScreenRecycler and only views the remote content.
For people that do not trust the results I achieved - here’s how to get them on your machine:
I used the public version of ScreenRecycler 0.78 with a high scanrate setting. When hextile was used the max. degration was set to three.
For the stats I used the shell:
netstat 1 run on the server using the highest value seen, then a bc ‘$value/(1024*1024)’
while 1=1;do;ps uaxwww|egrep ‘(Chicken|VNCThing|JollysFastVNC)’; sleep 1; done
For the idle time I used top and watched for ten seconds the idle time.
I did create the traffic while running the following SpeedClip.qtz in fullscreen.