Forums

Help › Forums

Re: Server loads and the meter

rated by 0 users
Fri, Oct 22 2010 11:01 AM (48 replies)
  • WojciechMigda
    158 Posts
    Sat, Feb 27 2010 1:37 AM

    Infinito3010:
    The putting green has the biggest load due to the flash component when you are reading the green.

    I do observe that too, that is why I ALWAYS use the lowest graphics settings within the game and the flash plugin. These rolling dots are killing my CPU, and at least on my computer have no relation to the internet connection (cf. #4 in my experiment).

    Infinito3010:
    The communication between server and client should be halted during a swing. If this is the case that communication between server and client are halted (ie no info being transmitted or recieved) then there should be no meter issues.

    That is the case, at least on my computer, see # 6 of my experiment. I hope Jay can replicate this on his computer, so we can start dealing with something well defined and measured.

    Infinito3010:
    Now, if there is a lag between the server and client at the beginning of a swing, the lag is mimimal since we are dealing in milli-seconds. 

    I thought about a case when the GetBuddy List is being sent and the result downloaded just before the start of backswing. The response contains the list and status of all your friends, so if you have a large number of friends then downloading such data may last long enough to overlap with the backswing action. However, in my case (20 friends) the downloaded data in only 2408 bytes big. One of the captured GetBuddylist requests started at 22:24:08.816924 (1368 bytes of outgoing data, first fragment), followed by end fragment of 163 bytes at 22:24:08.816935. 2 Acks were received 0.25 sec later (22:24:09.066729 and 22:24:09.067556), and the response was received in two chunks at 22:24:09.078076 (1368 bytes, acked at 22:24:09.078092) and at 22:24:09.078163 (1040 bytes, acked at 22:24:09.078167). Entire operation lasted 0.27 secs, consisted of two outgoing packets, two outgoing acks, two incoming packets and two incoming acks. Jay has got 27 friends on his list, so GetBuddyList processing will most likely take only slightly larger of data transfer and should be practicaly transparent to his game.

    Infinito3010:

    Thus, for you computer guru types, we need a list of variables that correspond to meter's control on the clients computer. 

    List of Variables:

    1. Number of background tasks and type
    2. current version of video driver
    3. Current version of flash
    4. Amount of Ram
    5. Video card type and amount of RAM
    6. CPU speed
    7. Internet connection type
    8. The type of Meter control  (ie custom control derived from an ancestor)
    9. Meter integration to browser and CPU's internal clock

    I find points 1, 2, 3, 4, 5, 6 very important. For point 7 maybe if you have a veeery poor connection, with lots of retries being done, then maybe any kind of network activity (be it wgt gameclient or anything else of which you are aware or not) could cause some problems. I can think of a scenario when someone has very limited RAM resources and the gameclient consumes most of it. Then most of the remaining programs (foreground and background) have to be moved to the swap, however, in they have to prepare data for retrying sending packets they have to be brought back from swap to ram and this is known to cause hiccups of entire computer.

    As for points 8 and 9 I don't quite understand what do you mean by that, but I hope you could elaborate more on this.

    Thanks,

    -Wojtek

  • Infinito3010
    3,689 Posts
    Sat, Feb 27 2010 2:47 AM

    My limited knowledge with regards to software that I can explain 8 and 9.

     RAD  (Rapid application Development) is a term used in GUI development applications.  They usually exists a series of pre-developed controls, such as a button, etc that you can add to a form.  Each form has a window handle, the button is then part of the form, which is the child on that form.  The user presses a button, to provoke a program response. 

    Meters, are another control that is added to a form to perform some functionality.  How smooth the meter is a a function of your computer hardware and browser.  

    Thus, how well the browser interacts with the meter plays an important role.  Secondly, every CPU has an internal clock which is dependent on its horsepower.  Lets say, 3.0 ghz.  Thus each cpu cycle is dependent on its frequency.   The higher the CPU load, more prone your meter will be to fluctuations. 

    You can create a lock memory block for the meter which will become prioritize, however, this could have serious drawbacks on other background tasks.  Thus it is imperative that the only aspect of the game when you start your backswing is the meter and your browser can remain idle at that point.  Thus the integration of the meter control interacting with your browser plays a significant role.  It appears there is allot of asynchronous responses happening simultaneously which creates the cpu load in the first place.  Putting these resources on idle during the start of the backswing is paramount.  In other words, how fast this control responds plays an important role.  Since this is a flash component aspect of the game,  if the control doesn't respond fast enough you will see stuttering of the meter.

  • WojciechMigda
    158 Posts
    Sat, Feb 27 2010 4:07 AM

    Infinito3010:
    My limited knowledge with regards to software that I can explain 8 and 9.

    From what you wrote above I can say you have definitely more than limited knowledge on that subject :)

    Infinito3010:
    RAD  (Rapid application Development) is a term used in GUI development applications.  They usually exists a series of pre-developed controls, such as a button, etc that you can add to a form.  Each form has a window handle, the button is then part of the form, which is the child on that form.  The user presses a button, to provoke a program response.

    Meters, are another control that is added to a form to perform some functionality.  How smooth the meter is a a function of your computer hardware and browser.

    OK, at first I wasn't expecting you to refer to the OOP and GUI programming - that was the reason of my misunderstanding.

    I am not an expert on browsers architecture wrt plugins they allow to embed into html they display, but my understanding of how flash applications work is that they are completely independent from the browser and window manager internals when it comes to creating and operating user controls, aka widgets. This is why flash files look the same regardless of the OS and window manager used to display them.

    If we were talking about GUI programming which uses controls provided by one the many existing GUI libraries then I would agree 100% with your statement.

    Over five years ago I was playing a bit with flash applications under linux using swfc, and I could create simple buttons within a flash object like that:

    .button menu1
        .show menu as=hover
        .show menu as=pressed
        .show menuvoid as=idle
        .show menuvoid as=shape
        .on_press:
        this.geturl('BLOCKED SCRIPTalert(\'You pressed the item 1\')');
        .end

    .end

    Button is merely a area defined within flash object viewing area, which can have an action linked to the specified user event(s).

    All Flash object needs is interaction with the window manager to receive events from the user (mouse and keyboard event), and draw its contents to the user.

    Infinito3010:
    Thus, how well the browser interacts with the meter plays an important role.

    I tend to disagree, it's interaction with the window manager, not the browser. Browser only provides area to display given flash object within existing window manager controls and provide means to access internet transport (and probably run additional JavaScript code ? Maybe doubtful since flash it has its own actionscript language).

    Flash objects can be viewed without a browser using Adobe Flashplayer. Maybe networking will not work, but displaying will work ok.

    Infinito3010:
    The higher the CPU load, more prone your meter will be to fluctuations. 

    Agreed, it is a general fact. It impacts the way flash player displays meter control, and the actionscript which handles user events.

    Infinito3010:
    You can create a lock memory block for the meter which will become prioritize, however, this could have serious drawbacks on other background tasks.

    I don't know whether granularity of memory lock is such small so as you could be able to lock it for such a small object as the meter class problably is. More beneficial would be lock on the methods and functions which are used by the meter class. Also, I believe that memory locking is rather accessible at the regular program level, I would not expect flash objects to have an access to such low level OS internals. AFAIK memory lock on windows means that selected part of memory will not be transferred to swap. Prioritization you mentioned is used for machine code which is being executed - wrt to flash objects that would mean entire flash plugin, with its libraries. Game code is an interpretted action script (that is why it can be run on windows, linux, mac os, etc.), thus it is a static data accessed by the flash engine.

    Infinito3010:
    browser can remain idle at that point

    On windows this is tricky, since on one hand you've got IE, which is a huge combo, which among others serves as a browser, but serves for a lot of other purposes as well. On the other hand you can have a 3rd party browser, e.g. Firefox, Iceweasel, Opera, Chrome. For IE it is hard to assume that you can force it to being in idle, unless you kill it ;) For the other browsers they will be idle, unless you have some other tabs open, or it is checking/downloading upgrades of itself or installed addons.

    Infinito3010:
    It appears there is allot of asynchronous responses happening simultaneously which creates the cpu load in the first place.

    I/O requests take the same amount of CPU resources whether or not they were initiated in a synchronous or asynchronous manner. The difference is on the level of the caller - it will be suspended waiting for completion, or not. The amount od CPU resources (ticks required to execute certain amount of machine code) is the same, but may be differenty spread on the time scale.

    Infinito3010:
    In other words, how fast this control responds plays an important role.

    First and foremost this is responsibility of the flash plugin (I have always voted that flash is a poor choice for purposes which demand exact time constraints, also it consumes huge amount of CPU power, even when flash object is static). Then we can think of an overload caused by the window manager drawing flash contents and bringing user events to the flash object.

    Infinito3010:
    if the control doesn't respond fast enough you will see stuttering of the meter.

    Right on Infnito.

    ---------------------

    This looks like an interesting reading:

    Examining the event-handling process

    Display list programming

    Flash object architecture

  • YankeeJim
    25,827 Posts
    Sat, Feb 27 2010 6:22 AM

    jayjonbeach:
    If there are people that really dont have meter troubles, maybe they can pipe in and tell us their specs such as Operating System, browser, CPU, RAM, time of day played mostly, etc.   Wo if you dont have problems, tell us more as maybe this will help. 

    Impressive stuff here but I believe there's something more basic that you can deal with before getting all hung up on tech stuff-look at your msconfig file. I've attached a pic of mine to show you what I don't have running. This topic was covered a while back in this thread   http://wgt.com/forums/t/6655.aspx?PageIndex=2  and I believe a lot of the meter problems do come from the local machine. I have very few problems, other than slow loads, at any time I play. look at yours and see what you have running every time you boot up!

     

     

  • Infinito3010
    3,689 Posts
    Sat, Feb 27 2010 7:52 AM

     

    No matter what language you are using, every window, control, form, has a window handle associated with it.  That is how windows manager keeps things separate. 

    OOP and GUI is a method of creating pointers to memory blocks which is allot more efficient way of programming, and generally executes faster.  

    Browsers and flash plug-ins are integrated.  Therefore they can not be independent of each other.  As you said, the flash content looks the same regardless.  But note,  if you examine the load on the CPU during game play, it is the browser that has the load not the plugin.

    The button you described is OOP with a GUI interface.  It has a list of public properties that can be set via the interface within the SDK (software development kit).  Now since the browser that has the CPU load and how well it interacts with the control is dependent on 2 factors.

    1. CPU load
    2. Code efficiency

    The browser receives instructions from JS code and it tells it what to do.  The JS code may say create a window with the following demensions utilizing the following flash content.  So the browser is the vessel in which web content on a specific site is displayed. 

    The flash content you refer to by using a FLV player.  Generally you can think of this content as streaming video.  For example, the water ripple on a lake.

     

  • WojciechMigda
    158 Posts
    Sat, Feb 27 2010 9:17 AM

    Infinito3010:
    No matter what language you are using, every window, control, form, has a window handle associated with it.

    Right, because it uses window manager API. Flash object window is one single widget (some kind of drawable area). Things dislpayed within it are separated from window manager and have their own context.

    Infinito3010:
    But note,  if you examine the load on the CPU during game play, it is the browser that has the load not the plugin.

    And that is because plugin itself is a library: libflashplayer.so, thus, flash objects are handled within a browser's process context - they are not a separate thread.

    As a sidenote, OOP stands for Object Oriented Programming

    Infinito3010:
    The button you described is OOP with a GUI interface.

    It is an object within Flash ActionScript class hierarchy of widgets. This hierarchy of classes is independent from those provided by any installed gui libraries, be it gtk+, qt, motif...

    Infinito3010:
    So the browser is the vessel in which web content on a specific site is displayed. 

    Right.

    This looks like a valuable resource to understand the idea of plugins within the Gecko engine.

  • chuckiee
    2,194 Posts
    Fri, Oct 22 2010 10:08 AM
    First time I have ever had a server alert and it just keeps timing out over and over again? Is this saying wgt needs more or better servers and that they have to many players online ? I have always had meter issues and deal with it whats up wgt ? any thing i can do on my end or do we just live with this too ? Is that why i keep getting a message to buy some balls so you can buy more servers ? just wondering whats going on
  • YankeeJim
    25,827 Posts
    Fri, Oct 22 2010 10:14 AM

    chuckie-I just posted a bug report about that very thing. I believe it's a Firefox issue as everything works in Chrome. Go figure.  :-(

    http://wgt.com/forums/t/26154.aspx

  • chuckiee
    2,194 Posts
    Fri, Oct 22 2010 11:01 AM

    Its doing it again I use IE never had this happen thanks YJ

RSS