Jump to content
fred41

Arma Server Monitor (very small, but useful)

Recommended Posts

@Tankbuster,

i found a little bug (related to enableAPImonitoring=0).

There is a fix in a smal update available (v1.32) on GitHub.

Please try it out (complete update required) and let me know if it helps.

Thanks and Greets,

Fred41

Share this post


Link to post
Share on other sites
Yep, that's fixed it mate. Great job!

... nice ...

UPDATE: v1.32 available via github (full update required)

- fix: bug related to enableAPImonitoring, caused double slot usage with HC (thanks tankbuster, for report)

- color difference between FPS&CPS increased a very little bit

Share this post


Link to post
Share on other sites

Hi Fred, thanks for the continual effort on this.

Recently Dwarden unveiled the approach he optimised his servers with, which is described Here

What I am trying to figure out is (While using your tool to monitor changes in performance) what changes should I be looking at on each stage of his optimisation method

The method is

  1. First set bandwidth

    For a 1 Gbps connection:

    Maxbandwidth: 1073741824

    Minbandwidth: 107374182


    For a 100 Mbps connection:

    Maxbandwidth: 104857600

    Minbandwidth: 10485760


  2. Set Maxmsgsend at 2048, lower by 256 until it's ok
  3. Set MaxSizeGuaranteed=958; or lower by 64 until it's ok
  4. Set MaxSizeNonguaranteed=224; increase by 16 until it's ok
  5. for METS/METSN use either default or 2x
    MinErrorToSend=0.002;
    MinErrorToSendNear=0.02;(tho quite admins use even higher values 3-12x default

Would it be possible to explain what we should be looking to achieve, at each stage of the optimisation process

Dwarden states "until it's OK" which leaves a lot of unanswered questions

e.g

Stage 2: Adjust the value up or down until XYZ on the Monitor values are at their optimum etc etc

I am currently at Stage 2 adjusting the Maxmsgsend but really don't know what to look out for at this stage

I am getting a CPS at 50% of the FPS

I would really appreciate any help here as I want to understand this better to so I can post an optimisation tutorial that makes sense and can be followed.

It is the one area in running a server that has always been shrouded with mystery

Edited by Terox

Share this post


Link to post
Share on other sites

Hi Terox,

i am really not an expert for all this network related params, but maybe i can help to interprete values showed by ASM.

First of all, i think the goal of all optimizations is still: improving the experience for the players.

This in mind, we have to consider, that ASM can tell you only what happens in your server process directly.

At least the latest development progress suggests, that BI developers decouple servers and client cycles more and more,

so the feedback of your users will be more and more important too, to evaluate the success of network parameters tuning.

However, i think maximizing the servers FPS makes still sense, because it is still very important,

that our server is able to react fast to all events that have to be processed.

FPS vs. CPS

Servers FPS is a value, that tells us how many whole simulation cycles per second are processed and this includes all the non scheduled script processing in your mission.

Non scheduled means, it have to be processed, what ever happens, in the current cycle and serial (one by one).

So if there are many scripted eventhandlers, for example, this will extend your simulation cycle and FPS goes down.

Scheduled execution, on the other hand, is much more 'relaxed'. Technically it is a time frame of ~3ms per simulation cycle, where this script code is allowed to be processed.

This scheduled execution is done in the VM and many scripts can be processed in (pseudo) parallel.

Additional there is a (linear) relation between condition evaluations in FSM and VM load observable.

CPS stands for 'condition evaluations per second' and means how often a condition in FSMs can be evaluated. It mainly impacts AI reaction performance.

We could say, low CPS is mostly caused be a overloaded VM. We can also observe, that CPS is never above FPS, but can be much lower indeed.

In any case, CPS should not be impacted directly by network parameters, but by mission design/scripting.

I hope i could help a bit, at least to understand CPS/FPS better.

Directly related to network parameters:

If i see the many, many questions around this important values and i realize how much time it needs to evaluate each little modification, i really start to ask me,

why not making this parameters tunable in real time?

I mean a simple monitoring/tuning interface (via UDP socket or shared memory), just moving one of some sliders on server and asking the players via chat "is it better now?". :)

Greets,

Fred41

Share this post


Link to post
Share on other sites

I too have been trying to finetune and experiment with the network settings for over a year now. Changing them realtime would be a tremendous help, but even more if the developers actually shared some more information about the subject. Don't understand why it's still a mystery after all these years, in a game where multiplayer is the main "thing" and the game is played on servers hosted by private persons/communities.

The values in the "tuning guide" Terox posted are nearly identical to the values I've come up with over the last year, still feels they aren't perfect.

On another note, any chance of enabling the network usage feature for ArmA 2 on this wonderful little tool?

Share this post


Link to post
Share on other sites

On another note, any chance of enabling the network usage feature for ArmA 2 on this wonderful little tool?

... assuming you are familiar with the manual start methode of fn_ASM.fsm and you are using the latest build, API values like NTI, NTO and DIR should be available on arma 2 too?

(i didn't tested with arma 2 and it is possible that A2 uses other API functions then A3)

Share this post


Link to post
Share on other sites

Everything else works except the NTI and NTO with the latest version and ArmA 2.

Share this post


Link to post
Share on other sites

UPDATE:

fixed, monitoring NTI/NTO values should work now with A2, if you set enableAPImonitoring=2 in asm.ini (thanks Viba, for reporting and testing)

(for A3, please use still enableAPImonitoring=1)

Greets,

Fred41

Share this post


Link to post
Share on other sites

Hello fred,

When i try to launch the ArmaMonitor .EXE i get an error about OS type compatibility (x86, x64).

What are the dependencies that i must install for it?

Share this post


Link to post
Share on other sites
Hello fred,

When i try to launch the ArmaMonitor .EXE i get an error about OS type compatibility (x86, x64).

What are the dependencies that i must install for it?

ArmaServerMonitor.exe should run on all current windows versions.

Probably your downloaded file is damaged.

Please use the 'RAW' button in github to download the file again.

Greets,

Fred41

Share this post


Link to post
Share on other sites

Hi Fred41

I'm trying to run Arma Server Monitor on my ArmA2 server but I get this error on loading: "Addon 'ASM' requires addon 'A3_Functions_F'". Is there a separate package for A3 and A2? Because I'm using the one that works fine for me in A3.

Share this post


Link to post
Share on other sites

Unpack the pbo and put the fsm file in your mission file or on the servers harddrive in the A2OA installation directory and start it manually.

Share this post


Link to post
Share on other sites

@tomeek, arma2 doesn't support the preinit function, introduced with arma 3.

As viba wrote, it requires explicit starting.

On way is packing the fn_ASM.fsm file in your mission and call it from init.qf via a line like this:

if (isServer) then {[] execFSM "fn_ASM.fsm";};

@Viba, thanks :)

Share this post


Link to post
Share on other sites

Question about the OC0-2

What are they and how do we use them ?

Share this post


Link to post
Share on other sites

OC0, OC1 and OC2 represent three different measurements of the number of objects in a running mission (OC = Object Count). If you look at the ASM.ini file you can see the default script commands that are used to update these values:

  • OC0 is the number of objects currently in the mission (vehicles, players, AI, crates, tents, bunny rabbits and so on...)
  • OC1 is the number of vehicles in the mission.
  • OC2 is the number of "mission created objects" (*).

You can use OC0-OC2 to report any three values you can think of by changing the script commands in the ASM.ini file.

EDIT: OC0-OC2 must be positive numerical values. See Fred41:s comment below.

(*) See allMissionObjects

Edited by Killswitch

Share this post


Link to post
Share on other sites

@KillSwitch, you explained it perfectly and i have nothing to add (maybe except, that the returned value have to be a positive number). Many thanks :)

Share this post


Link to post
Share on other sites

Firstly thank you for this tool, this has helped no end with performance adjustments made to our server.

I want to utilise this to do some basic testing on our Arma II server. I've read through the thread and I've run in to some issues.

Firstly it was throwing an error in to the server rpt with the following:

15:27:29 "ASM.fsm started"
15:27:29 Error in expression < "ASMdll" callExtension format ["9:%1", profileName];
call compile _output;

if >
15:27:29   Error position: <profileName];
call compile _output;

if >
15:27:29   Error Undefined variable in expression: profilename

To combat this I changed profilename (something only A3 supported by the looks of it) to the hardcoded value of the profile on the server. This worked and the rpt now states that it's hooked the .fsm and is running. However I get no data in the ASM GUI itself. I've tried with API mode 0 and 2 just in case. I know this is a bit vague so I'm happy to get further information if required.

For reference I dePbo'd the newest @ASM rather than using the src ones, even though it looks like they are the same version. I'm calling the fsm from the mission init and I've got the .dll and the .ini files in the OA folder.

Share this post


Link to post
Share on other sites

@Cyruz, are you running your server as service?

If yes, you have to start ArmaServerMonitor via 'Run as administrator' to get the required access to a shared memory region.

Share this post


Link to post
Share on other sites

Both DS and ASM are run as a service from the administrator account.

Share this post


Link to post
Share on other sites

Try restart your arma server instance, while ASM is already running. Start a mission on arma server instance. Let me know.

Share this post


Link to post
Share on other sites

Would PM you to discuss further but your inbox is full (not surprised) to save filling this thread.

Tried these orders:

Start server, load mission, start ASM

Start ASM, start server, load mission.

Share this post


Link to post
Share on other sites

... inbox cleared, let us continue there ...

Share this post


Link to post
Share on other sites
OC0, OC1 and OC2 represent three different measurements of the number of objects in a running mission (OC = Object Count). If you look at the ASM.ini file you can see the default script commands that are used to update these values:

  • OC0 is the number of objects currently in the mission (vehicles, players, AI, crates, tents, bunny rabbits and so on...)
  • OC1 is the number of vehicles in the mission.
  • OC2 is the number of "mission created objects" (*).

You can use OC0-OC2 to report any three values you can think of by changing the script commands in the ASM.ini file.

(*) See allMissionObjects

Thank you very much Killswitch that is a very clear explanation.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×