Well, it's important to understand that VNC will usually just send the 
portions of the display that have changed ("incremental framebuffer 
update.")  It will send a full framebuffer update upon first connecting 
and when specifically requested by the viewer (using the Refresh or 
Lossless Refresh functions) or when the scaling factor is changed, etc. 
  The TurboVNC X11 viewer doesn't maintain a back buffer, and thus it 
will also request a full framebuffer update if the window is 
minimized/maximized or obscured.  The Windows and Java viewers, however, 
are smart enough to redraw the window's current contents without 
requesting a new update from the server.  All of that is somewhat moot 
if you are using a full-screen viz app that updates most of the display 
on every frame.

To answer your question, since the viewer is maintaining a copy of the 
pixels from the server, a full framebuffer update will always send all 
of the pixels from the server, even if some of them aren't visible in 
the viewer due to the window size.  The reason for this is both because 
the logic would be inordinately complicated if it was only maintaining 
the visible portion of the display, and also you wouldn't want to have 
to wait for a new framebuffer update when using the scrollbars.

Downsampling on the server:  Someone else asked about this, and I'm 
going to look into the possibility of using the RANDR extension (part of 
the desktop resize functionality that will go into TurboVNC 1.3) to do 
this.  However, I'm not really sure how useful it would be.  I don't 
understand why anyone would want to run the TurboVNC Server in a 
resolution that is significantly larger than the client display, unless 
they were broadcasting to multiple clients that support different 
resolutions.

With downsampling, the text is quickly going to become unreadable.  Can 
you provide more details of exactly why you need to use a 24-36 Mpixel 
display?  Perhaps I can provide a more intelligent answer.


On 6/15/13 12:35 AM, Paul McIntosh wrote:
> Hi Darrell,
>
> Thanks - the client we just tried was a Windows one but we'll be trying a 
> few. I'll give the multi-threading a go.
>
> For testing purposes, how out is setting a standard resolution screen to 
> something ridiculous? Is it smart enough to down sample on the server side if 
> the client is viewing in scaled mode? Or if the client is viewing in full 
> res, but only a portion, is the out of view portion not sent?
>
> The point James just made is also something I need to try, I forgot to look 
> if the ssh daemon was maxing out! And I should test with it without any 
> tunnel at all.
>
> Cheers,
>
> Paul
>
> ----- Original Message -----
>> From: "DRC" <dcomman...@users.sourceforge.net>
>> To: virtualgl-users@lists.sourceforge.net
>> Sent: Saturday, 15 June, 2013 9:43:08 AM
>> Subject: Re: [VirtualGL-Users] Improving performance on very large displays
>>
>> Bigger pipes will definitely help, up to a point.  The compression
>> ratio
>> you can get will vary a lot depending on the types of images that the
>> app is generating.  I use GLXspheres as a sort of
>> "middle-of-the-road"
>> approximation, since it has a realistic proportion of solid color and
>> smooth gradient, one that you might see in a CAD or viz app when the
>> model is zoomed out to fit in the window.  However, as they say here
>> in
>> the States, your mileage may vary.
>>
>> GLXspheres compresses to about 1.8 bits/pixel when using perceptually
>> lossless JPEG, about 0.75 bits/pixel when using medium-quality JPEG,
>> and
>> about 0.4 bits/pixel when using low-quality JPEG.  Thus, for that
>> particular image workload to maintain 15 fps at low quality on a
>> 24-36
>> Mpixel display would require 10-15 Megabits/sec of bandwidth.  Double
>> that for medium quality.
>>
>> It is also more than likely that you will run into a CPU bottleneck
>> once
>> you eliminate the network bottleneck.  libjpeg-turbo is typically
>> going
>> to be capable of compressing perceptually lossless JPEG at about
>> 60-100
>> Mpixels/sec on a reasonably modern CPU core (maybe a bit more than
>> that
>> now-- my machine is 2 years old.)  Add 30% to that for medium-quality
>> JPEG, and add 50% for low-quality JPEG (both are faster, simply
>> because
>> they generate less data for the Huffman codec.)  So applying that to
>> the
>> GLXspheres example above, my particular machine might be capable of
>> compressing ~2-4 fps with a 24-36 Mpixel display, or perhaps ~3-6 fps
>> if
>> using low-quality JPEG.
>>
>> If the client and server are reasonably similar in terms of CPU
>> performance, then you can probably improve the situation by enabling
>> server-side multithreading (export TVNC_MT=1 prior to launching
>> vncserver.)  This divides the VNC desktop into equal-sized tiles and
>> uses a separate compression thread for each.  Even though the client
>> is
>> not multithreaded yet, typically libjpeg-turbo can decompress a lot
>> faster than it compresses, so enabling server-side multithreading
>> will
>> likely shift the CPU bottleneck to the client.  Be sure to read the
>> section on multithreading in the TurboVNC User's Guide.
>>
>> I have funding to work on multithreading the client as well and will
>> be
>> looking into that later this summer.  Can you clarify which viewer
>> you're using?
>>
>>
>> On 6/14/13 6:12 PM, Paul McIntosh wrote:
>>> Hi,
>>>
>>> I have done a couple of experiments with very large displays (e.g.
>>> 7680x4800, 7680x3200) and the performance has (understandably)
>>> dropped significantly.
>>>
>>> Are there any tricks to improving the performance or is it not
>>> worth trying? I recall multi-threaded builds but have not had a
>>> chance to try them out.
>>>
>>> The tests so far have been on less than optimal links - we will be
>>> trying a long hall 1G network soon (across Australia) and possibly
>>> a shorter 10G link (from one facility on campus to another). Would
>>> bigger pipes solve the issue or is the bottle neck be elsewhere?
>>>
>>> Cheers,
>>>
>>> Paul
>>>
>>
>> ------------------------------------------------------------------------------
>> This SF.net email is sponsored by Windows:
>>
>> Build for Windows Store.
>>
>> http://p.sf.net/sfu/windows-dev2dev
>> _______________________________________________
>> VirtualGL-Users mailing list
>> VirtualGL-Users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/virtualgl-users
>>
>

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
VirtualGL-Users mailing list
VirtualGL-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtualgl-users

Reply via email to