fred41 42 Posted April 26, 2014 @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
Tankbuster 1747 Posted April 26, 2014 Yep, that's fixed it mate. Great job! Share this post Link to post Share on other sites
fred41 42 Posted April 26, 2014 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
terox 316 Posted April 27, 2014 (edited) 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 First set bandwidthFor a 1 Gbps connection:Maxbandwidth: 1073741824Minbandwidth: 107374182 For a 100 Mbps connection:Maxbandwidth: 104857600Minbandwidth: 10485760 Set Maxmsgsend at 2048, lower by 256 until it's ok Set MaxSizeGuaranteed=958; or lower by 64 until it's ok Set MaxSizeNonguaranteed=224; increase by 16 until it's ok for METS/METSN use either default or 2xMinErrorToSend=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 April 27, 2014 by Terox Share this post Link to post Share on other sites
fred41 42 Posted April 27, 2014 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
Viba 1 Posted April 27, 2014 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
fred41 42 Posted April 27, 2014 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
Viba 1 Posted April 28, 2014 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
fred41 42 Posted April 28, 2014 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
silentkiller* 11 Posted May 3, 2014 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
fred41 42 Posted May 3, 2014 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
tomeek 10 Posted May 6, 2014 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
Viba 1 Posted May 6, 2014 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
fred41 42 Posted May 6, 2014 @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
tomeek 10 Posted May 6, 2014 OK got it, thanks for the help :) Share this post Link to post Share on other sites
BL1P 35 Posted May 11, 2014 Question about the OC0-2 What are they and how do we use them ? Share this post Link to post Share on other sites
killswitch 19 Posted May 12, 2014 (edited) 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 May 13, 2014 by Killswitch Share this post Link to post Share on other sites
fred41 42 Posted May 12, 2014 @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
cyruz 103 Posted May 12, 2014 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
fred41 42 Posted May 13, 2014 @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
cyruz 103 Posted May 13, 2014 Both DS and ASM are run as a service from the administrator account. Share this post Link to post Share on other sites
fred41 42 Posted May 13, 2014 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
cyruz 103 Posted May 13, 2014 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
fred41 42 Posted May 13, 2014 ... inbox cleared, let us continue there ... Share this post Link to post Share on other sites
BL1P 35 Posted May 13, 2014 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