FYI

I modified glxgears to allow me to pass an interval (0,1,2,3,4) to 
GLX_EXT_swap_control.  That's the -interval flag you see.

---
Thanks,
Dyweni

On 2013-06-03 16:52, Dyweni - VirtualGL-Users wrote:
> Frame spoiling has no effect in my setup.  (Maybe you can spot a
> problem in my setup?) Here's how I have things configured:
> 
> 
> (Game) -> VirtualGL (1) -> TurboVNC Server (2) -> Wire
> (Ethernet/Cable Modem) -> TurboVNC Viewer (3)
> 
> (1) Game is run in VirtualGL in order to limit the outgoing FPS that
> is sent across the wire (vglrun -fps x game).  To much FPS and the
> whole thing becomes "unresponsive".  Limiting the FPS here is the
> optimal way (I've found) to keep the bandwidth used under a specific
> value.  I don't want the game traffic to hog all available bandwidth.
> This is especially critical when sending out across the Cable modem as
> I need to avoid the ISP's upload bandwidth capping mechanism.
> (2) TurboVNC Server is used to isolate each game instance.  Activity
> in one instance must not be able to interfere with any other instance.
> TurboVNC is run in 1024x768 resolution.  This is also required as I
> want the users to be able to connect / disconnect from the game
> instance on the fly, so that the game instance will continue to run
> even if no one is connected to it.
> (3) TurboVNC Viewer is used to display the game instance and control
> quality settings (jpeg compression, subsampling) to fine-tune the
> bandwidth used.
> 
> 
> In this setup, I use the 'vglrun -fps' to control the bulk of how
> much bandwidth is used, letting the quality settings then fine-tune
> that a bit more.  The game still runs at full speed (roughly 118FPS,
> 100% CPU) letting VirtualGL show only x frames per second to the
> TurboVNC server.
> 
> What I am trying to do now is limit the FPS of the game itself, in
> order to drive down its CPU usage.  This is where I thought the GLX
> Swap Control interval would come into play.
> 
> I should note that the test I ran yesterday was not the best of all
> tests... I was running the game at 2558x975 at 24bits.
> 
> I have revised by changes to implement the kind of behaviour I am
> expected from VirtualGL.  What I am looking for is for VirtualGL to
> simulate a monitor refresh and emulate GLX's swap control intervals
> itself.  It is working pretty well for me, using glxgears as my test
> application.  I have implemented GLX_EXT_swap_control, but still need
> to implement WGL_EXT_swap_control.  I changed -fps3d to set the
> virtual monitor refresh rate.  If not provided, it defaults to 60.
> Here are the new performance marks:
> 
> 
> (glxgears -interval n)
> INTERVAL   FPS     CPU
> 0          27000   100%
> 1          60      1%
> 2          30      1%
> 3          20      0%
> 4          10      0%
> 
> (vglrun glxgears -interval n)
> INTERVAL   FPS     CPU
> 0          1122    107%
> 1          57      6%
> 2          29      3%
> 3          19      2%
> 4          15      2%
> 
> 
> I have attached a new patch for your review / feedback.  Any feedback
> would be great.
> 
> 
> 
> ---
> Thanks,
> Dyweni
> 
> 
> On 2013-06-02 23:36, DRC wrote:
>> But you didn't answer my question. Why can't you achieve the same
>> effect by setting VGL_FPS and disabling frame spoiling? The reason 
>> why
>> frame spoiling exists is to make 3D apps feel more "interactive." You
>> can think of it like this: through a remote connection, the mouse and
>> keyboard are probably being sampled at 40-60 fps, and if you're
>> interacting in real time with a 3D app and the image transport
>> pipeline in VGL is unable to keep up with the mouse/keyboard sample
>> rate, then the performance will feel "draggy." Thus, frame spoiling
>> allows the app to render at the speed of the mouse interaction, even
>> though all of those frames may not make it to the client.
>> In your case, though, you have established that the VGL pipeline is
>> capable of 36 fps on your system, so if you're trying to limit the
>> rendering rate to less than that, you are effectively not spoiling
>> frames anyhow. Thus, disabling frame spoiling and setting VGL_FPS
>> should achieve the same effect as your VGL_3DFPS option.
>> On Jun 2, 2013, at 11:09 PM, Dyweni - VirtualGL-Users
>> <t7nhgfds7...@dyweni.com> wrote:
>> 
>>> Hi DRC,
>>> I use VirtualGL / TurboVNC to play multiple instances of the game 
>>> EVE
>>> Online through a web interface.  The web interfaces makes it real 
>>> easy
>>> to "multi-box".  The backend server (where the games all run) does 
>>> all
>>> the heavy lifting and the lightweight client (netbook, laptop, etc) 
>>> just
>>> displays the game via the web interface.
>>> The game has several settings related to syncing with the monitor
>>> refresh rate.  They are 'Interval {immediate,one,two,three,four}'.
>>> Interval immediate disables "sync to vblank".  Intervals
>>> one/two/three/four enable "sync to vblank" and run at 1, 1/2, 1/3, 
>>> and
>>> 1/4 the monitor refresh rate.
>>> When I run the game natively, I get the following performance marks:
>>>  Interval      FPS     CPU
>>>  Immediate     230     100%
>>>  One           60      18%
>>>  Two           30      10%
>>>  Three         20      7-8%
>>>  Four          15      6%
>>> 
>>> VirtualGL does not support the "sync to vblank" GLX extensions, 
>>> which
>>> causes the game to be unable to limit its FPS.  Here are the 
>>> performance
>>> marks for the same intervals when running under VirtualGL without my
>>> patch added.
>>>  Interval      FPS     CPU
>>>  Immediate     36      93%
>>>  One           36      93%
>>>  Two           36      93%
>>>  Three         36      93%
>>>  Four          36      93%
>>> The patch I posted to the mailing list earlier today, allows the 
>>> user
>>> to specify what the desired FPS should be.  Here are the performance
>>> marks for the same intervals when running under VirtualGL with my 
>>> patch
>>> added and the fps3d option set to 20.
>>>  Interval      FPS     CPU
>>>  Immediate     20      56%
>>>  One           20      56%
>>>  Two           20      56%
>>>  Three         20      56%
>>>  Four          20      56%
>>> As you can see, the patch has made the first step forward towards
>>> allowing the user to run the game at a lower FPS and reclaim some of
>>> that CPU power for other tasks (in my case, more game instances).
>>> Surprise!  In documenting the performance marks tonight, I see my 
>>> patch
>>> needs a lot more work before I feel comfortable declaring it 
>>> optimal. I
>>> would have expected to see similar breaks in FPS / CPU that the 
>>> native
>>> test shows (obviously there will be some differences due to 
>>> VirtualGL
>>> overhead).  Regardless, I was hoping for some feedback.  I guess the
>>> artist is his own worst critic!
>>> 
>>> 
>>> ---
>>> Thanks,
>>> Dyweni
>>> 
>>> On 2013-06-02 20:53, DRC wrote:
>>>> I am still unclear why the normal mechanism of setting VGL_FPS and
>>>> disabling frame spoiling wouldn't work for you. Have you tried 
>>>> that?
>>>> It's not that I'm opposed to this feature, but I also don't want to
>>>> implement something that isn't actually necessary. Please make a 
>>>> case
>>>> for why VGL_3DFPS solves a problem that couldn't be solved by using
>>>> VGL_FPS with frame spoiling disabled.
>>>> On Jun 2, 2013, at 3:58 PM, Dyweni - VirtualGL-Users
>>>> <t7nhgfds7...@dyweni.com> wrote:
>>>> 
>>>>> Hi DRC/All,
>>>>> I have mucked around with the VirtualGL 2.3.2 code and have come 
>>>>> up
>>>>> with a solution that seems to work well.  I have to mention that 
>>>>> the
>>>>> solution is rather rough around the edges.  Some of the code / 
>>>>> ideas
>>>>> were drawn from Mesa's GLXGEARS program (i.e. calculating and
>>>>> reporting the current FPS and the location to do so in).
>>>>> Here is how this works:
>>>>> 1. User provides -fps3d <n> argument to vglrun.  N is any double 0 
>>>>> or
>>>>> greater.
>>>>> 2. The function 'glXSwapBuffers' (server/faker-glx.cpp) 
>>>>> continually
>>>>> monitors the current fps and adjusts 'delay' to keep the fps 
>>>>> around
>>>>> the requested fps value (the fps3d argument).
>>>>> 3. User can tweak the fps3d value via the vglconfig 
>>>>> (CTRL+SHIFT+F9)
>>>>> GUI utility.
>>>>> I am sure that the algorithm for adjusting the delay can be 
>>>>> improved.
>>>>> It was what I could come up with in the limited time I had today.
>>>>> I have attached a patch that applies to VirtualGL 2.3.2.  Please 
>>>>> feel
>>>>> free to review / test and provide feedback.
>>>>> ---
>>>>> Thanks,
>>>>> Dyweni
>>>>> 
>>>>> On 2012-07-26 13:41, DRC wrote:
>>>>>> Since VirtualGL redirects the 3D rendering into offscreen 
>>>>>> buffers,
>>>>>> there
>>>>>> is no concept of VSync, because there is no monitor involved 
>>>>>> until
>>>>>> the
>>>>>> pixels are drawn on the client machine, and by that time, the 3D
>>>>>> rendering is already done.
>>>>>> In the current implementation, there is no way to limit the 3D
>>>>>> rendering
>>>>>> rate except to disable frame spoiling.  Disabling frame spoiling
>>>>>> couples
>>>>>> the 3D rendering and compress/send stages of the pipeline, so the
>>>>>> frame
>>>>>> rate will be the lesser of (a) the VGL_FPS setting or (b) the 
>>>>>> rate
>>>>>> at
>>>>>> which the client can process frames.  However, that's probably 
>>>>>> not
>>>>>> what
>>>>>> you want, because you may experience "mouse lag" when frame 
>>>>>> spoiling
>>>>>> is
>>>>>> disabled.
>>>>>> This issue has never come up, because in visualization apps, the
>>>>>> frame
>>>>>> rate is ultimately limited by the sampling rate of the mouse, 
>>>>>> which
>>>>>> is
>>>>>> generally 40-60 Hz.  I'm honestly not sure what would be the best
>>>>>> approach to applying a frame rate governor on the 3D side (a
>>>>>> VGL_3DFPS
>>>>>> option, if you will.)  It might be as simple as putting a delay 
>>>>>> into
>>>>>> the
>>>>>> buffer swap function.
>>>>>> What I'm wondering, however, is whether our long-term plans to
>>>>>> replace
>>>>>> Pbuffers with FBO's and hidden windows might magically fix this,
>>>>>> since
>>>>>> VSync might still work when rendering to a hidden window.
>>>>>> If anyone else has further insight, please share.
>>>>>> On 7/26/12 12:56 PM, Dyweni - VirtualGL-Users wrote:
>>>>>>> Hi All,
>>>>>>> I'm wondering if VirgualGL has support for VSync?  I know that
>>>>>>> VirtualGL
>>>>>>> has support to output only x frames per second, but that is
>>>>>>> different
>>>>>>> from VSync.
>>>>>>> I have a game (EVE Online) that can limit itself to the VSync.  
>>>>>>> In
>>>>>>> normal X, it limits itself to 60 FPS (my monitor refresh rate)
>>>>>>> thanks to
>>>>>>> VSync, and that keeps the CPU usage low.  However, when running 
>>>>>>> on
>>>>>>> VirtualGL, it does not limit its FPS and they skyrocket to 120+ 
>>>>>>> FPS
>>>>>>> which drives the CPU usage high.
>>>>>>> I would like to be able to lock the game to the VSync (say 60 
>>>>>>> FPS,
>>>>>>> to
>>>>>>> keep the CPU usage low) and then export x frames per second (as 
>>>>>>> I
>>>>>>> do
>>>>>>> know with the -fps) switch.
>>>>>>> Is this possible?
>>>>>>> --
>>>>>>> Thanks,
>>>>>>> Dyweni
>>>>>>> ------------------------------------------------------------------------------
>>>>>>> Live Security Virtual Conference
>>>>>>> Exclusive live event will cover all the ways today's security 
>>>>>>> and
>>>>>>> threat landscape has changed and how IT managers can respond.
>>>>>>> Discussions
>>>>>>> will include endpoint security, mobile security and the latest 
>>>>>>> in
>>>>>>> malware
>>>>>>> threats. 
>>>>>>> http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
>>>>>>> _______________________________________________
>>>>>>> VirtualGL-Users mailing list
>>>>>>> VirtualGL-Users@lists.sourceforge.net
>>>>>>> https://lists.sourceforge.net/lists/listinfo/virtualgl-users
>>>>>> ------------------------------------------------------------------------------
>>>>>> Live Security Virtual Conference
>>>>>> Exclusive live event will cover all the ways today's security and
>>>>>> threat landscape has changed and how IT managers can respond.
>>>>>> Discussions
>>>>>> will include endpoint security, mobile security and the latest in
>>>>>> malware
>>>>>> threats. 
>>>>>> http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
>>>>>> _______________________________________________
>>>>>> VirtualGL-Users mailing list
>>>>>> VirtualGL-Users@lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/virtualgl-users
>>>>> <0001-Support-limiting-3D-application-framerate-into-Virtu.patch>
>>>>> ------------------------------------------------------------------------------
>>>>> Get 100% visibility into Java/.NET code with AppDynamics Lite
>>>>> It's a free troubleshooting tool designed for production
>>>>> Get down to code-level detail for bottlenecks, with <2% overhead.
>>>>> Download for free and get started troubleshooting in minutes.
>>>>> http://p.sf.net/sfu/appdyn_d2d_ap2
>>>>> _______________________________________________
>>>>> VirtualGL-Users mailing list
>>>>> VirtualGL-Users@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/virtualgl-users
>>>> ------------------------------------------------------------------------------
>>>> Get 100% visibility into Java/.NET code with AppDynamics Lite
>>>> It's a free troubleshooting tool designed for production
>>>> Get down to code-level detail for bottlenecks, with <2% overhead.
>>>> Download for free and get started troubleshooting in minutes.
>>>> http://p.sf.net/sfu/appdyn_d2d_ap2
>>>> _______________________________________________
>>>> VirtualGL-Users mailing list
>>>> VirtualGL-Users@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/virtualgl-users
>>> ------------------------------------------------------------------------------
>>> Get 100% visibility into Java/.NET code with AppDynamics Lite
>>> It's a free troubleshooting tool designed for production
>>> Get down to code-level detail for bottlenecks, with <2% overhead.
>>> Download for free and get started troubleshooting in minutes.
>>> http://p.sf.net/sfu/appdyn_d2d_ap2
>>> _______________________________________________
>>> VirtualGL-Users mailing list
>>> VirtualGL-Users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/virtualgl-users
>> ------------------------------------------------------------------------------
>> Get 100% visibility into Java/.NET code with AppDynamics Lite
>> It's a free troubleshooting tool designed for production
>> Get down to code-level detail for bottlenecks, with <2% overhead.
>> Download for free and get started troubleshooting in minutes.
>> http://p.sf.net/sfu/appdyn_d2d_ap2
>> _______________________________________________
>> VirtualGL-Users mailing list
>> VirtualGL-Users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/virtualgl-users

------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j
_______________________________________________
VirtualGL-Users mailing list
VirtualGL-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtualgl-users

Reply via email to