Jump to content

Linux Performance


Dwarfer

Recommended Posts

Hi,

 

Some feedback from myself.

 

Seems to be running nicely does seem to be able to freely use CPU's easily.  However gut feeling so far is its seems to be using more CPU than windows which is strange.

 

Bellow is two ASM Top is Windows Box Bottom is Linux. Both with the same server pbo and client pbo, very similar hardware boxes

 

epochwinvlin.jpg

Link to comment
Share on other sites

Also my players are reporting *NO* micro lag or stuttering (apart from when the Sapper first spawns).

 

also seems to reload/load in a quarter of the time compared to windows

 

vbawol

 

the Windows box does have -enableHT the linux box no as I am not sure that is even possible is it ?. (testing now with -enableHT as assumed just windows option)

 

I will be swapping the boxes over so all my PROD's are on the linux build and should be able to give some more feed back soon

 

** Should also say that its the same redis db dump from the Windows box that was loaded on the Linux with 5000 objects or so

Link to comment
Share on other sites

OK,

 

This is with HT ON.. CPS was bouncing between 3 and 70 ! Have gone back to -cpucount=4 Will play around with this some more but from what i have seen don't use HT on the linux server !

 

epochlinht.jpg

Link to comment
Share on other sites

Interestingly if you use something like top (press 1 shows the cores) you can see the load boucning around between them and this seems to be what is causing the saw tooth.. doing some more test with cpucount, HT and linux's version of affinity taskset -c

Link to comment
Share on other sites

vbawol

 

CPS seems to be very up and down where FPS is solid most of the time.. I'm not actually sure what CPS is, I know from fred's git you see the following, however how much attention should we pay the value ?

 

 

 

Alongside to the well known FPS (frames per second), an very interesting value, CPS, is introduced here.
CPS is expressed by condition evalations per second and measured from an reference condition in fn_ASM.fsm.
You can realize this CPS value as the reciprocal of the current "minimal response delay" of local AI in the running mission.
Link to comment
Share on other sites

OK We are getting some place now.

 

8-10 players 50-60AI server controlled on missions. That Dip mas me trying some linux CPU/IO to see if it had impact but using nice -10 helps with the priority 

 

epoch3.jpg

Link to comment
Share on other sites

OK,

 

So.. CleanDB all the way until the restart the CPS is Maxing out at 60 most of the time, Restart CleanDB still CPS max. Build loads of stuff (6-7 200 object bases) CPS still fine UNTIL restart.. Then CPS starts to saw tooth allot more between 50-20.. Not sure why.. Clean DB back to solid 60..

 

FPS is still staying at a good 45-50 no matter what.. SO anyone have any idea why the CPS is lower and why/what it is actually measuring ? and how does that effect load ?

Link to comment
Share on other sites

I pulled this from Fred's ASM thread on BI forums regarding CPS:

 

 

CPS value can tell you how often FSM conditions are evaluated (per second).

Because AI is mainly controlled by FSMs, a low CPS value means slow reacting AI too.
Additional, while playing, you will notice that some actions are delayed more than normally, if CPS is very low.

There is a relation between the number of scripts running in the VM (schedeled environment) and the FSM condition evaluation frequency.
A low CPS value is most likely caused by an overloaded VM (to many scripts spawned, execVM ...).

Link to comment
Share on other sites

Looking at the code on the git, it seems to be using the fn_asm.fsm itself to evaluate how fast the FSM conditions are evaluated (more accurately how many are evaluated during a set time in the .fsm). As fn_asm.fsm is running via .fsm it will slow along with other FSMs as the server takes load.

 

The FSM Conditions are the yellow diamond shaped FSM objects where you decide if a condition is met and if to perform an action in that condition object or pass the routine to another FSM state.

 

pseudo_fsm.jpg

 

These conditions are called every tick and can also hold a pre-condition, which is run before the check is made, and an action, which is run if the condition is met. Without careful consideration these can grow and make many unnecessary calls to the engine.

 

I have been religious in reducing the impact of these, as a rule, by declaring vars that may be called more than once, e.g. the value for getPosATL player. Also applying scheduling helps to not make too many calls. For example, do you really need to update how dirty a player is ever single tick, probably not..

 

In this pseudo fsm you have 4 conditions to check. That said not completed will be checked more than once during a single loop. The code shown is a scheduler within not completed to try and limit the impact if any actions were taken, the scheduling / timer check is still made every tick though. Still refining the scheduling methods..

 

That's just from a quick glance at the ASM code so if I have missed anything apologies..

 

EDIT: That code condition would actually be something like: 

diag_tickTIme - _doCheck > 3 && !_taskCompleted;
Link to comment
Share on other sites

Hmm..

So why would build objects have that much effect. 

 

Going todo some more testing and strip anything extra back to verify my thoughts

 

@second_coming

 

Not sure how much you can see from redis stats wise (MySQL ;-) ) but I could just run TCPUMP and see if here is much interaction.

Link to comment
Share on other sites

Every additional object has an effect as the engine needs to be aware of it in some capacity, server and client.

 

The book is still out on this and was touched upon during the server performance chat the other night. But, there is a consensus that when objects are at a further distance from a client the client is less 'aware' of them, this can be demonstrated with AI run by a HC, the AI will have issues with player position when a long way from the HC position. TBH, I don't know how much this has improved with A3.

 

The server has to be aware of all objects, again I would expect some optimisation by the engine as vehicles and custom placed objects with no players nearby play no part in active gameplay.

 

Try running an ESP on all vehicles and players on a busy server to demonstrate the hit when collecting info on all objects. 

 

Hasn't one of the latest server builds increased the amount of objects? 

Link to comment
Share on other sites

Another thing to remember is that ASM is no longer getting updated.  There have been multiple engine updates to A3 since ASM effectively died, including network optimizations and AI changes.  It's likely that there are updates needed so that ASM can work correctly and is properly optimized for these changes.  There may come a time where we can no longer rely on ASM for accurate server performance data, if it even continues working at all at some point.  

Link to comment
Share on other sites

Another thing to remember is that ASM is no longer getting updated.  There have been multiple engine updates to A3 since ASM effectively died, including network optimizations and AI changes.  It's likely that there are updates needed so that ASM can work correctly and is properly optimized for these changes.  There may come a time where we can no longer rely on ASM for accurate server performance data, if it even continues working at all at some point.  

Im not sure thats relevent...

ASM reports information about the server, its unlikely those core figures will ever change...

Basically, the FPS of the server is the same regardless how you get it.

Link to comment
Share on other sites

It would be interesting to find if there are CPS hits causing issues, would be more interested in client side CSS. Though server side CPS shouldn't hit client side directly. AI on the server could definitely be effected by a drop in CPS. I don't see ASM stopping working any time soon, is fairly basic info being queried.

Link to comment
Share on other sites

@axeman

 

Yeah that is what i am trying to figure out.. FPS does not move just CPS. Weird is the Windows box's I have with same DB set on don't do It so I wonder if something todo with bug in arma code. I read on some forum in the depths of a coffee fueled search that 1.44 is going to have more Linux optimization in it or maybe I was just on the magic C8H10N4O2..

Link to comment
Share on other sites

Having a play with the various start up options -cpuCount=4 -exThreads=1 -noCB see if any changes make a difference.

 

One thing to note 

 

17:06:59 "Epoch: Server Start Complete: 14.296 seconds"
 
So much quicker than Windows.. Makes for Testing very good :-)
Link to comment
Share on other sites

Something definitely going on there and should be resolved to keep the CPS steady.

 

Keep an eye out for the clean-up not running as well, vehicles not simulating as quickly and player / vehicle data not saving to the DB as quickly. Are some of the things that may be effected by low CPS.

 

Why the amount of building objects should influence this is a bit of a wonder. What is the time difference between the troughs in CPS. I am assuming something is running at those times for the duration of the trough.

 

The fact that it is fine on windows and enableHT is causing mischief does point to a non Epoch issue but am curious. More testing needed for sure :)

Link to comment
Share on other sites

  • 2 weeks later...

Sry for poor english.

 

My server : Intel® Xeon® CPU E3-1220 V2 @ 3.10GHz

 

1-18 players : 50 FPS no variation

18-26 players : 30-14 FPS, but players say they can't see any change, all is perfectly playable. I caped the server to 26 players because game experience is the most important for me.

 

I tried taskset -c 0,1,2,3 and a priority -10 for the user in limits.conf, but it didn't change anything.

 

I don't know if a windows server can do best or not. the good thing is one reboot/daily is very fine.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Discord

×
×
  • Create New...