Hi VirtualGL,

thanks for your detailed answer - we searched, but could not find a good 
explanaition like this:

> Efficiency and cost.  VirtualGL and TurboVNC are only going to take
> up resources when they are running.  A full-blown X server has a much
> larger footprint.  The screen scraper will eat up CPU cycles even if the
> 3D application is sitting there doing nothing, because the screen
> scraper is having to poll for changes in the pixels.

 best,
Jens Henrik

P.S.: You might want mention the 'screen scraper'-approach in the 
documentation/introduction/wiki and compare it with VirtualGL.

________________________________________
From: DRC [dcomman...@users.sourceforge.net]
Sent: Thursday, October 02, 2014 10:26 PM
To: virtualgl-users@lists.sourceforge.net
Subject: Re: [VirtualGL-Users] virtualGL vs. multiple remote 3D X-servers

For starters, GLXgears is not a GPU benchmark.  It is a CPU benchmark,
because its geometry and window size are so small that its frame rate is
almost entirely dependent upon CPU overhead.  Please (and I'm saying
this to the entire 3D application community, not just you) stop quoting
GLXgears frame rates as if they have any relevance to GPU performance.

GLXspheres (which is provided with VirtualGL) is a much better solution
if you need something quick & dirty, but you also have to understand
what it is you're benchmarking.  GLXspheres is designed primarily as an
image benchmark for remote display systems, so it is meant to be limited
by the drawing speed of the remote display solution, not by the 3D
rendering speed.  On the K5000 that nVidia was kind enough to send me
for testing, I can literally max out the geometry size on GLXspheres--
over a billion polys-- and it keeps chugging along at 300 fps, because
it's using display lists by default (and thus, once the geometry is
downloaded once to the GPU, subsequent frames just instruct the GPU to
reuse that same geometry.)

Not every app uses display lists, though, so if you want to use
GLXspheres as a quick & dirty OpenGL pipeline benchmark, then I suggest
boosting its geometry size to 500,000 or a million polygons and enabling
immediate mode (-m -p 500000).  This will give a better sense of what a
"busy" immediate-mode OpenGL app might do.

When your benchmark is running at hundreds of frames per second, that's
a clue that it isn't testing anything resembling a real-world use case.
  In the real world, you're never going to see more than 60 fps because
of your monitor's refresh rate, and most humans can't perceive any
difference after 25-30 fps.  In real-world visualization scenarios, if
things get too fast, then the engineers will just start using larger
(more accurate) models.  :)

So why would you use VirtualGL?  Several reasons:

(1) The approach you're describing, in which multiple 3D X servers are
served up with VNC, requires screen scraping.  Screen scraping
periodically reads the pixels on the framebuffer and compares them
against a snapshot of the pixels taken earlier.  There are some
solutions-- the RealVNC/TigerVNC X.org module and x11vnc, for instance--
that are a little more sophisticated than just a plain screen scraper.
They use the X Damage extension and other techniques to get hints as to
which part of the display to read back, but these techniques don't work
well (or sometimes at all) with hardware-accelerated 3D.  Either the
OpenGL pixels don't update at all, or OpenGL drawing is out of sync with
the delivery of pixels to the client (and thus you get tearing artifacts.)

I personally tested the version of x11vnc that ships with libvncserver
0.9.9 (libvncserver 0.9.9 has the TurboVNC extensions, so at the library
level at least, it's a fast solution.)  I observed bad tearing artifacts
for a few seconds, and then it would hang because the X server got too
busy processing the 3D drawing and couldn't spare any cycles for x11vnc
(X servers are single-threaded.)  Turning off X Damage support in x11vnc
made the solution at least usable, but without X Damage support, x11vnc
is mainly just polling the display, so it will incur a lot of overhead.
  This became particularly evident when using interactive apps.
glxspheres -i

I couldn't get the TigerVNC 1.3.1 X.org module to work at all, and the
TigerVNC 1.1.0 X.org module (the one that ships with RHEL 6) did not
display any pixels from the OpenGL app.

(2) The ability to share a GPU among multiple users.  VirtualGL
installations often have dozens of users sharing the GPU, because not
all of them will be using it simultaneously, and even when they are,
they might only need to process a small model that uses 1% of the GPU's
capacity.  Like I said above, a K5000 pipe can process billions of
polys/second.  That's the equivalent performance of at least a handful
of desktop GPUs (if not more) combined.  It's a lot more cost-effective
to buy beefy servers with really beefy multi-pipe GPU configurations and
provision the servers to handle 40 or 50 users.  You can't do that if
each user has a dedicated GPU, because you can't install 40 or 50
dedicated GPUs into a single machine.

(3) Efficiency and cost.  VirtualGL and TurboVNC are only going to take
up resources when they are running.  A full-blown X server has a much
larger footprint.  The screen scraper will eat up CPU cycles even if the
3D application is sitting there doing nothing, because the screen
scraper is having to poll for changes in the pixels.
TurboVNC/VirtualGL, on the other hand, will not take up CPU cycles
unless the 3D application is actually drawing something.  Furthermore,
if the user goes to lunch, their GPU is now sitting completely idle.  If
the user only needs to process a 50,000-polygon model, then their
dedicated GPU is being grossly underutilized.


On 10/2/14 12:36 PM, Göbbert, Jens Henrik wrote:
> Hi VirtualGL,
>
> I am using virtualGL since some years now to get 3d-accelerated remote
> visualization possible via TurboVNC on our frond-nodes of a
> compute-cluster via.
>
> Just recently I was asked why remote 3d-accelerated desktop scenario is
> not possible with multiple 3d-accelerated X-servers+VNC, each dedicated
> to a single user?
>
> I cannot answer this question as I would like to, as it seems to run fine:
>
> We tested to run multiple 3d-accelerated X-servers on the same machine
> with a single GPU without any problems.
>
> glxgears showed 600 frames per second on both at the same time –> both
> X-server where 3d-accelerated.
>
> Why shouldn´t I go for multiple 3D-X-server (one for each user)
>
> and send its framebuffer via VNC to the workstations
>
> instead of using VirtualGL?
>
> Best,
>
> Jens Henrik

------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
VirtualGL-Users mailing list
VirtualGL-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtualgl-users

------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
VirtualGL-Users mailing list
VirtualGL-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtualgl-users

Reply via email to