terox

[Tutorial] Server bandwidth & Optimisation

75 posts in this topic

[Tutorial] Server bandwidth & Optimisation

Last updated: 21st April 2014

Updated to this post:

This is new content

This is a heavily edited extract from a discussion on the Skype channel between B.I and server admins.

This is basically a methodology to optimise a server

Set The following bandwidth as follows

For a 1 Gbps connection:

Maxbandwidth: 1073741824

Minbandwidth: 107374182

For a 100 Mbps connection:

Maxbandwidth: 104857600

Minbandwidth: 10485760

Then:

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

Additional notes:

  • If there are more instances of a ArmA3 server on the same box, to play safe you would split the Min and Max bandwidth appriopriately, although because the RV engine does not use all the bandwidth available on such connections anyway, it shouldn't really matter
  • MinerrorX settings are often ignored if there are special events triggering the update on object
  • The RV engine autodetects and adjusts unknown elements using it's internal optimisation system
  • Settings will vary from server to server depending on but not inclusive of the following
    • Type of mission, eg Coop/PvP
    • Number of players and quality of their connection to the server
    • Hardware capabilities of clients and server
    • Quality of connection of clients and server

It would be good to get some feedback on this methodology if anyone trys it

In its current state, (UNTIL THIS LINE HAS BEEN REMOVED) this is more of a discussion that a tutorial .

As the feedback comes in I am hoping to change this thread into a full tutorial much in the same way as I did for the dedicated server tutorial

BIS are working on network optimisation at the moment, I will try to keep this tutorial updated as and when that content is made public

Important... If you see information within this post that is innacurate, please let me know ASAP so I can edit it

CONTENTS

(not yet implemented)

A little introduction first

I am not an IT technician, but have been running Gaming servers for OFP & ArmA series for over 10 years now and I am still confronted with Dedicated Server documentation that doesn’t fully explain the setup.

I have read many posts and seen many examples of Configs and have yet to see any consistency with the values defined.

My intention with this thread is to compile a more detailed description of the relationships, values and settings required to achieve optimisation for the following variables as defined in the Arma3.cfg's

  • MinBandwidth
  • MaxBandwidth
  • MaxMsgSend
  • MaxSizeGuaranteed
  • MaxSizeNonguaranteed
  • MinErrorToSend
  • MinErrorToSendNear
  • maxPacketSize

My first aim is to discuss the various elements required to achieve optimisation and compile a list of unanswered queries that we can direct to BIS devs for more information.

To achieve this, I am going to open up a thread about each setting, so they can be discussed separately and then use this thread as the central repository for the information that is forthcoming and accepted as being correct.

The end aim is to

  1. Create a definitive tutorial with a set of formulae to calculate the required values
  2. Possibly Build a benchmark testing mission that can be run and used for comparison purposes from 1 server to another
  3. Define typical settings for common hardware setups and typical datacentre/home connections

TO DO THIS I NEED YOUR help, advice and knowledge to put this baby to bed once and for all

Could you please add whatever information, conclusions or information you can to the following relevant threads

SEPERATE DISCUSSION THREADS

anything else belongs in this thread

Quote from Dwarden in reference to this area of Server administration

Terox, quite some stuff is wip, so cross your fingers the goodies are done asap and work :)

I have No idea what this will be

Useful Links:

BIS WIKI: basic.cfg

Wiki: Talk-basic.cfg

Useful Tools

Arma-Server-Monitor


TERMINOLOGY

Bits v Bytes

Data size is normally defined in bits

Data transfer is normally defined in Bytes

Unless otherwise defined, the bandwidth setting values are shown in Bytes

1 bit is either a "0" or a "1" (On or Off switch to a computer)

1 byte = 8 bits ( an array of eight 0's and 1's)

There is a difference between **bps and ** Bps

  • bps: bits \ second
  • Bps: Bytes \ second

It is very important when reading information about bandwidth transfers and connection speeds that you can differentiate between these two values (bits or bytes)

Comparison Chart

10  Mbit connection :  = 1.31072  Megabytes\second = 1310720    bytes\second
100 Mbit connection:   = 12.5     Megabytes\second = 13107200   bytes\second
1   GBit connection:   = 128      Megabytes\second = 134217728  bytes\second


Frames v Simulation cycles

The client machine measures the speed of the simulation in Frames per second (Basically how many pictures are recreated on the screen every second)

The server however does not run any graphics, so it has a unit of measurement of Simulation cycles per second

The maximum the server is allowed to run at is 50 Simulation cycles per second regardless of hardware

For ease of understanding I will refer to this as "Server FPS"

The actual Server FPS is dependant on

  • The number of players connected
  • The number of scripts running and the weight those scripts are placing on the cpu
  • The number of AI that are in the mission
  • The hardware capabilities, CPU,RAM Hard drive I/O and bandwidth settings
  • The state of play (Combat causes greater load than non combat stages of the mission)

For each Server Simulation cycle, apart from ctually running the simulation, the engine attempts to check the status of objects in the mission, compares that to the previous check and updates according to the minerrorsend, sending the required data to the clients in "packets" of data and also receiving data back from them.

If there are too many checks to be done or it cannot send the data out quickly enough or receive the data quickly enough, the FPS will reduce.

If it reduces below 20, the clients will start to notice a deterioration in gameplay, (especially in coops where the AI will be effected)

At an FPS of around 15 the server is deemed overloaded

At an FPS of 10 the mission no longer becomes playable

You should typically be aiming to achieve a minimum of 25 to 30 FPS

The aim of optimising your server is to try and maintain as high an FPS as possible.

To do this you need to take into account the following

  1. Your hardware limitations
  2. How many virtual servers you will be running consecutively on the same box
  3. Your bandwidth limitations (Connectivity)
  4. How many players each server will host for
  5. The type of Missions you will be playing (Coop, PvP)
  6. The weight of the scripting


HARDWARE

CPU

ArmA3 is heavily dependant on CPU. The faster the CPU the better

However each ArmA3server.exe instance currently only uses 2 cores. One of those cores being used for A.I

(There is a methodology that utilises something called "Headless Client" which is basically a Client (Installed on the server or other machine) that connects to the server and runs AI. This is a method to utilise more cores and thus allow more A.I per mission)

RAM

Each server instance needs between ? and ? ram

CASE STUDY

This is an example of useage (Do not use the settings as guidelines, they have clearly not been optimised, however this particular server runs very stably with little if any desync but was running at 7-8 FPS)

The server is set to run 40 players and the mission in use was Invade & Annex v2.86

(Not sure if the server had 32 +/- 2 connected to it)

A3 Version was Type: Public Alpha Development Version: 0.61.106371

Also running were at least 2 other servers (Mix between A2 and A3)

Windows 2012

Hardware:

CPU: Dual Xeon X5570 (Quad core 2.93ghz)

RAM: 24Gb

HD's: SATA 6Gb enterprise drives

Connectivity: 1 GBit

Bandwith:

MinBandwidth=400000000;

MaxBandwidth=800000000;

MaxMsgSend=384;

MaxSizeGuaranteed=512;

MaxSizeNonguaranteed=256;

MinErrorToSend=0.003;

The resulting values were seen

data out: Typically 6000 TO 7000 kbps

data in: Typically 400 to 700+ Kbps

RAM: 1526MB

CPU : 13%

Player individual bandwidth ranged from 150 to 6000



THE SETTINGS


1) maxPacketSize

For now check this link Discussion Thread: All about maxPacketSize

What the BIKI states

class sockets{maxPacketSize = <limit>;};

Maximal size of packet sent over network.

This can be set for both client-to-server AND server-to-client(s) independently!

see client(arma2.cfg#Generic_config or arma2oa.cfg#Generic_config, )

Default: 1400

Use please only in case Your router or ISP enforce lower packet size and You have connectivity issues with game

Desync might happen if used MaxSizeGuaranteed/MaxSizeNonguaranteed values over the maxPacketSize.

maxPacketSize default reduced from 1490 to 1400, thus MaxSize... values over 1300 could be affected negatively.

Important

For the greater majority of us, this value should not be touched

If you are thinking about playing with this setting, to put your mind to rest and to prevent you altering this value unnecessarily, carry out the following test as described in this little tutorial

http://help.expedient.net/broadband/mtu_ping_test.shtml

If the resulting MTU value calculated by the test is higher than the default maxPacketSizevalue, then leave well alone

What we known

Default value: 1400 bytes

Typical MTU for a server when following the above linked tutorial is 1500

Too big a value is likely to cause lag and desync

The value should be the same no matter

  1. How many players the server hosts for,
  2. How many virtual Arma 3 server you run on the same box
  3. Whether you run PVP or COOP

What you are trying to achieve

Defining the maximum size without causing loss of packets, lag or desync

Too big a value is likely to cause lag and desync

How to test

Use the tutorial above to check your MTU


MaxMsgSend

For now check this link All about MaxMsgSend

What the BIKI states

Maximum number of packets (aggregate messages) that can be sent in one simulation cycle ("frame").

Increasing this value can decrease lag on high upload bandwidth servers.

What we known

Default value: 128 Messages\Client

Maxmessagesend = maximum amount of messages that can be sent per simulation cycle per client

The maximum number of simulation cycles per second is 50

This however will not be the typically actual number of simulation cycles when the mission is running which will be more likely in the region of 25 to 30

To best achieve the correct value, you will first need to obtain your actual transfer rates

How best to achieve this?

This is the best information i could find http://forum.ovh.co.uk/showthread.php?t=1897

It basically states not to use Online speed testing sites because they use web browsers and that has a definte effect on the values you will get

It basically states to download a large file from somewhere and monitor the transfer rate on your backend

What I assume

(Something is wrong here)

So......

if MaxMsgSend=128 and the server FPS is at 30, the server will send out a maximum 30*128=3840 messages per second per client

Using the MaxPacketSize default of 1400 bytes, this will equate to a data transfer rate of 3840*1400=5376000 bytes\second or 5.126953125MBps (Per client ?)

Compare this to your servers connectivity, typical example being a 100MBit connection, with a data transfer rate theoretically available as

  • 100 Mbit connection: = 12.5 Megabytes\second = 13107200 bytes\second

You have enough bandwidth left for 1 more player(If only running 1 A3 server on the box) (This has got to be wrong ?)

  • 7831200 Bytes\second
  • 7.3 Megabytes per second

What we need to know:

  1. What value if any, does it default too, if the entered value is unacceptable?
  2. Would this value vary dependant on the number Virtual A3 servers you are running
  3. Would this value vary for PVP and CooP servers
  4. Would this value vary depending on the number of players the server supports
  5. How would you stress test or test this in a Benchmark mission scenario?
  6. What else ?

Calculation Formulae

(Not yet defined)


MaxSizeGuaranteed

For now check this link All about MaxSizeGuaranteed


MaxSizeNonGuaranteed

For now check this link All about MaxSizeNonguaranteed


MaxBandwidth

For now check this link All about MaxBandwidth


MinBandwidth

For now check this link All about MinBandwidth


MinErrorToSend

For now check this link All about MinErrorToSend


MinErrorToSendNear

For now check this link All about MinErrorToSendNear


Edited by Terox

Share this post


Link to post
Share on other sites

well its not done yet and am getting little input on the related threads. This is a steep learning curve for me.

The following threads have new content in, which I found after searching around a lot and some useful links that were passed to me

http://forums.bistudio.com/showthread.php?156694-All-about-MinErrorToSendNear

http://forums.bistudio.com/showthread.php?156693-All-about-MinErrorToSend

Edited by Terox

Share this post


Link to post
Share on other sites

Sadly, while trying out many completely different settings on my new Rootserver (i7-3770 @ 3.4GHz, 16GB RAM, 1Gbit at 100Mbit Connection), which is only running 1 instance of Arma3 at the moment -i cannot see ANY difference in Server-FPS when reaching certain Playercounts.

I don't want to cry about things here - just see it as a Feedback after some Weeks of Scripting/Hosting.

I am aware:

- this is still alpha

- this problems seem to exist since OFP (as i've read in the dozens of "how to improve server-perfomance"-threads the past months...)

I am not sure:

- if this is "Missionbased" and relying to the Scripts etc. so much (even i've got CleanUps etc)

- if this is "only poor Netcodes or Settings fault"

But what i am completely sure about, is that the most important thing in my personal opinion - for the future of Arma3 - is:

the Serverperformace / CPU-Load NEEDs TO BE OPTIMIZED on BIS-side.

I mean, assuming, you have a big powerfull server, which isn't anyhow used ( i get a 17% average CPU usage at 64 Players...) but the Game goes to a "Server-FPS" below 5 ...

So there is something entirely wrong!

It is like, ...uhm, ...you have a big Hauling Truck with 900 Horsepower ... trying to pull a tiny pony trailer which has all brakes on and tires blocking all the way ...

I hope / i guess BIS is aware of that and will not forget, that Usercreated Contents, the people who buy / rent / run Servers are somehow some of the most important groups to focus for a succesfull Arma3.

Back to OP:

I can provide you with all the settings i've tried so far... but nothing had any remarkable effect.

And i guess, at the start it would make sense to make sure everybody is talking about same "Values" used in the *.cfg Files etc., as there are quite a lot confusions.

http://www.whatsabyte.com/

http://www.jhuyett.com/bandwidth.html

BIS-Wiki says, all Values are in "bps" = bits per second ... so - we have to guess, that is right :rolleyes: ....

(remember 8 bits are 1 Byte!)

A Server with a 100 Megabit/s (Mbit/s) Connection should have

MaxBandwidth=104857600; //(value in bits per second = 9 Digits!)

Setting the minimum Bandwith availabe to 75% should do it - i guess.

MinBandwidth=78643200; // (value in in bits per second = 8 Digits!)

So we defined what NETWORK-Bandwith the Game COULD use ...so far so good.

BIS-WIKI for Basic.cfg also says

The server never runs at more than 50 fps. When running slower, it always uses all available CPU processing power to maintain the smoothest possible gameplay. When running at less than 15 fps, you can consider the server overloaded – the mission currently played is probably too complex for given server. If you see the server is not using bandwidth that it could use, you can try increasing values MaxMsgSend and MinBandwidth.

And that is something i can not believe when i see CPU-Usage-Values ... but, whatever.

MaxSizeGuaranteed and MaxSizeNonguaranteed are defining the SIZEs, in Bytes, for the Packets of MaxMsgSend

MaxMsgSend defines the NUMBER of Packets per "Server-FPS" and Player.

So... i am not sure but, shouldn't this be the Formula then!?

104857600 bits are 13107200 Bytes

13107200 Bytes divided by 64 Players = 204800 Bytes

204800 Bytes divided by 50 Server FPS = 4096 MaxMsgSend

4096 MaxMessages with PackageSize of maximum 512 Bytes (MaxSizeGuaranteed=512) gives us a maximum 2097152 Bytes (or exactly 2 Megabyte) per Second.

So,..2 Megabyte per second? Not sure - but is that the final Value which is tending to give an i7-3770 @ 3.4GHz an average Load of 17 percent while the Game stutters at somewhat way below 10 Server-FPS?! :confused:

Not sure ... but maybe anyone can enlighten me more!?

----

CPU: i7-3770 @ 3.4GHz

RAM: 16 GB

HD's: SATA 6GB enterprise drives

Connectivity: 1 GBit on 100Mbit

Hosting Teetimes Warfare - some scripts ...also cleanups ... 17 Bases with +/- 100 AI and max 64 Players

....

******** CLEANUP FIRST ALPHA RESULTS AND ADDING BETA RESULTS FROM HERE ********

NEW CONCLUSION: it is a lot better now - but still trying different settings.

Alpha 30 Players -> 15 FPS

Alpha 60 Players -> 0.5 FPS

Beta 30 Players -> 25 FPS

Beta 60 Players -> around 7 FPS

And it looks like , the AI-count does NOT affect FPS very much !!! same settings, but around 50 or 100 AI more ore less, does NOT affect the Server FPS at 60 Players!

Beta Test 1

Parameters:

arma3server.exe -cpuCount=4 -exThreads=7 -world=empty -port=2302 -config=lalala.cfg -cfg=tralala.cfg -mod=@ASM -profiles=Profiles\2302 -netlog

around 150 AI at start

MinBandwidth=78643200;  //75Mbit
MaxBandwidth=104857600;	//100Mbit

MaxMsgSend =640;
MaxSizeGuaranteed = 896;
MaxSizeNonguaranteed = 512;

MinErrorToSend = 0.0025;
MinErrorToSendNear=0.0099999998;

beta1test.JPG

beta1test3.JPG

beta1test4.JPG

CPU Loads:

beta1testcpus60player.JPG

------ next Beta tests added soon with this parameters ----

arma3server.exe -cpuCount=2 -exThreads=1 -world=empty -port=2302 -config=lalala.cfg -cfg=tralala.cfg -mod=@ASM -profiles=Profiles\2302 -netlog

MaxMsgSend =512;

MaxSizeGuaranteed = 640;

MaxSizeNonguaranteed = 512;

//MinErrorToSend = 0.0025; // setting it to default

//MinErrorToSendNear=0.0099999998; // setting it to default

OLD ALPHATESTS:

---- OLD ALPHA TESTRUN 3 --- from here on i decided to use ASM (thx fred! good job!)

Config:

MinBandwidth=786432000; // added a "0" too see what happens ... nothing, to be exactly....)

MaxBandwidth=1048576000; // added a "0" too see what happens ... nothing, to be exactly....)

MaxMsgSend = 2096; //changed from 256

MaxSizeGuaranteed = 512; // changed to enabled

MaxSizeNonguaranteed = 384; // changed to enabled

MinErrorToSend = 0.0025; // changed from 0.001

MinErrorToSendNear=0.0099999998; // changed from 0.01

MaxCustomFileSize=1600000;

//1600000 is 160k

adapter=-1;

3D_Performance=93750;

Resolution_W=0;

Resolution_H=0;

Resolution_Bpp=32;

Windowed=0;

serverLongitude=12;

serverLatitude=48;

serverLongitudeAuto=12;

serverLatitudeAuto=48;

maxPacketSize=1412; // added

// EOF

well,..... i can't see / measure any differences - still no lags or desynch but...

49 Players -> 2.1 ServerFPS .....

Testrun3-1.JPG

---- OLD ALPHA TESTRUN 4 ----

Config: only changed MaxMsgSend to 64

Reduced AI-Numbers spawn at defending Bases in Mission

MinBandwidth=786432000;

MaxBandwidth=1048576000;

MaxMsgSend = 64; // changed from 2096

MaxSizeGuaranteed = 512;

MaxSizeNonguaranteed = 256;

MinErrorToSend = 0.0025;

MinErrorToSendNear=0.0099999998;

MaxCustomFileSize=1600000;

//1600000 is 160k

adapter=-1;

3D_Performance=93750;

Resolution_W=0;

Resolution_H=0;

Resolution_Bpp=32;

Windowed=0;

serverLongitude=12;

serverLatitude=48;

serverLongitudeAuto=12;

serverLatitudeAuto=48;

maxPacketSize=1412;

// EOF

27 Players - and around 100 AI less than in other tests before - still only 15,7 Server-FPS :butbut:

.......

I get some stuttering (short client-FPS drops) sometimes if many stuff blows up or many people around,...but... it is not "unplayable".

As visitors of my servers are telling me too

Edited by Blue1
cleaning up and ADDING BETA TESTRESULTS

Share this post


Link to post
Share on other sites

am updating the thread at the moment, have already defined bits/bytes and in the middle of Client FPS, Server simulation cycles

Share this post


Link to post
Share on other sites

Oh, what i forgot to say:

1) a BIG THANK YOU to you, Terox - for putting so much efforts to that - for everybody that likes to host servers and in the next step, the players!!!

--- and... 2)

One of the things i do not understand is, why people/players/customers have to put so much efforts in "Guesswork", "Try & Error" instead of getting provided with everything from the Guys at BIS.

I mean, at least in the Year 2013 it should be the minimum Standard, to easily set up a well performing 64 (or more!!) Playerserver ... especially on a game that is made for - and lives from ($) Multiplayerpurposes :j: ....

SCNR ;)

Share this post


Link to post
Share on other sites

Terox i have noticed the "MinErrorToSend" helps the server FPS,

I have mine set to .004 and i get around 20 fps with 30 people after like 2-3 hours of warfare.

I also cant get arma to use more than 10 mbit :(

With minbandwith set high i don't get desync, when i had minbandwith 10mbit every one had always desync from (10 to 200)

With maxmessage set high server still sends average 50-100 packets to each client per sec

So thats 100 packets / 45 FPS = 3 packets per frame to each client - im not sure any more if the maxmessage send is per client because it dont make any fucking sense.

Also i notice many clients are sending big packets to server from 900 bytes to 1200 bytes, while server is defaulted at 512 / 256

language="English";

adapter=-1;

3D_Performance=93750;

Resolution_Bpp=32;

MaxMsgSend=16384;

MinBandwidth=100428800;

MaxBandwidth=104857600;

MinErrorToSend=0.0040000002;

serverLongitude=2147483647;

serverLatitude=2147483647;

serverLongitudeAuto=2147483647;

serverLatitudeAuto=2147483647;

Windowed=0;

MaxCustomFileSize=0;

Edited by johnsm

Share this post


Link to post
Share on other sites
What I assume

(Something is wrong here)

So......

if MaxMsgSend=128 and the server FPS is at 30, the server will send out a maximum 30*128=3840 messages per second per client

Using the MaxPacketSize default of 1400 bytes, this will equate to a data transfer rate of 3840*1400=5376000 bytes\second or 5.126953125MBps (Per client ?)

This part here you might have wrong. I'm assuming that MaxPacketSize is basically the maximum size of a packet the engine will actually send, basically whatever your MTU is which in most cases with ethernet is 1500 and 1492 for PPPoE, but in this case it's limited to 1400, probably for compatibility purposes and to ensure that packets do not get fragmented during transit. MaxSizeGuaranteed and MaxSizeNonGuaranteed are defineing the actual size of your TCP and UDP packets respectively. So unless you set MaxSizeGuaranteed and MaxSizeNonGuaranteed to equal value's of MaxPacketSize, You would never actually be sending packets that are 1400 bytes.

If you wanted to do a rough calculation at default value's, I would think , 128 x 30 = 3840 total messages sent per second and assuming a 50/50 ratio of TCP(Guaranteed) and UDP (NonGuaranteed) packets, split 3840 in half which is 1920, (512 x 1920) + (256 x 1920) = 1,474,560 / 8 = 184.320 KB/sec per player. Then you would do 184,320 * 48, assumed player count of 48, and you would get 8.847 MB/sec or 70.776 mbps. Also you have to remember that this is the theoretical maximum bandwidth you would see being used assuming that the server was pumping out 128 x 30 x 48 = 184,320 packets per second consistently.

Using the same calculation above with regards to Blue1's test #2 I get, yes this is kind of pointless but I want to show the math, 2 * 256 = 512 / 2 = 256, (256 * 512) + (256 * 384) = 229,376 / 8 = 28,672 * 64 = 1,835,008 or 1.8 MB/sec or 14.68 mbps. So roughly around what he was seeing in terms of bandwidth usage, give or take. The ratio of TCP packets to UDP packets might have been closer to 75/25 or some arbitrary amount. It's all going to depend on the mission and what the server is calculating and sending out.

I would be more apt to raise the packet sizes of both guaranteed and nongauranteed packets, closer to MaxPacketSize, before I would raise MaxMsgSend. For example, it's better to send less but larger packets than it is to send a huge amount of smaller ones. The only case where that might not be true would be in a situation where you have very bad packet loss.

If you wanted to calculate a worst case scenario, just take the larger of the two packet sizes and use that. For example, 128 x 30 = 3840 * 512 = 1,966,080 / 8 = 245,760 kb/sec, 245,760 * 48 players = 11,796,480 or 11.8 MB/sec maximum total bandwidth. The key factors are going to be server simulation cycles or fps, maximum player count and maximum packet size.

Edited by Insanatrix

Share this post


Link to post
Share on other sites

big packets = more latency and lag, especially if u have people with 200 + ping.

i had set both "guaranteed and none guaranteed" to 1200 and max packet size i saw was 600 bytes, and it caused a bit log lag like people teleport etc not 100% confirmed.

Edited by johnsm

Share this post


Link to post
Share on other sites
big packets = more latency and lag, especially if u have people with 200 + ping.

i had set both "guaranteed and none guaranteed" to 1200 and max packet size i saw was 600 bytes, and it caused a bit log lag like people teleport etc not 100% confirmed.

I wouldn't set them that high anyways, UDP should normally be set to 512 and TCP can be set anywhere from 512-1380, though I wouldn't exceed 768. The higher the latency, the more hops the packet generally has to take to reach it's destination and the more destination headers are tacked on to it and the greater risk of fragmentation and dropped packets. You want the packets to be large enough to contain the required data without having to send multiple packets to accomplish the same thing, but you don't want them so large that a dropped packet causes desync and lag.

In fact, try setting NonGuaranteed to 512 and Guaranteed to 768 and see how it works for you with a 128 MaxMsgSend. Then start tuning it from there.

I would venture to assume that MaxPacketSize exists for compatibility purpose and is used mostly for handshaking and not for actual game data packets, hence why you can set TCP and UDP sizes separately.

Edited by Insanatrix

Share this post


Link to post
Share on other sites

I have read several tutorials/guides about server settings now and i'd like to show the values for my basic.cfg i had in mind.

Server:

i7 3930 (6x3.2)

16 Gb Ram

100 mbit

Usually i have three Arma3 servers (30 slots) and one DayZ server running on this root.

So my thoughts were:

startup:

-cpucount=2 -exthreads=1 -maxMem=2047 (-noCB ?)

A3 basic.cfg:

MinBandwidth=7680000; (30 slotsx256x1000)

MaxBandwidth=25000000; (three servers plus tolerance)

MaxMsgSend=1024; (not so sure about this one. Some people say 128 some 1024 works best ...)

MaxSizeGuaranteed=1024;

MaxSizeNonguaranteed=256;

MinErrorToSend=0.001;

MinErrorToSendNear=0.02;

class sockets{maxPacketSize =1400;};

Does viewDistance in the basic.cfg affects anything?

Share this post


Link to post
Share on other sites

Guys ...

I have this cfg for my server, I've rented one (46 players) and haven't changed anything:

language="English";

adapter=-1;

MinBandwidth=800000;

MaxBandwidth=25000000;

MaxMsgSend=384;

MaxSizeGuaranteed=512;

MaxSizeNonguaranteed=256;

MinErrorToSend=0.003;

MaxCustomFileSize=100000;

Windowed=0;

serverLongitude=0;

serverLatitude=52;

serverLongitudeAuto=0;

serverLatitudeAuto=52;

I was thinking about updating to this:

language="English";

adapter=-1;

MinBandwidth=11776000;

MaxBandwidth=25000000;

MaxMsgSend=1024;

MaxSizeGuaranteed=1024;

MaxSizeNonguaranteed=256;

MinErrorToSend=0.002;

MaxCustomFileSize=100000;

Windowed=0;

serverLongitude=0;

serverLatitude=52;

serverLongitudeAuto=0;

serverLatitudeAuto=52;

Any sugestions ?

Share this post


Link to post
Share on other sites

I havent forgot about this thread. I need to update it with the content of the following threads plus a little information on packets etc

Check the first post in these threads. I've updated most of em with content, which will eventually end up in this thread

Share this post


Link to post
Share on other sites

Well, this is the sv configuration:

E3-1270v2, 32GB Ram, SSD, 1GBPS port

Can anybody help with the bandwidth config ?

Thanks.

Share this post


Link to post
Share on other sites
Well, this is the sv configuration:

E3-1270v2, 32GB Ram, SSD, 1GBPS port

Can anybody help with the bandwidth config ?

Thanks.

Use my config and give me feedback, ( I do not use non/guaranteed at all)

MaxMsgSend=16384

MinBandwidth=100428800;

MaxBandwidth=104857600;

//MaxSizeGuaranteed=128;

//MaxSizeNonguaranteed=64;

MinErrorToSend=0.005;

MinErrorToSendNear=0.0099999998;

MaxCustomFileSize=2920000;

adapter=-1;

3D_Performance=93750;

Resolution_W=0;

Resolution_H=0;

Resolution_Bpp=32;

Windowed=0;

serverLongitude=20;

serverLatitude=52;

serverLongitudeAuto=20;

serverLatitudeAuto=52;

Share this post


Link to post
Share on other sites
Use my config and give me feedback, ( I do not use non/guaranteed at all)

//MaxSizeGuaranteed=128;

//MaxSizeNonguaranteed=64;

;

Commenting them out like this does not mean you do not use them, it means you use the default values 512, 256 respectively

and at the moment posting configs is just going to confuse everyone and create more complications than i am trying to achieve

If configs are posted then, at least state the

  • connection you have (which you did)
  • number of maximum clients the server runs
  • pvp or coop mission types

without this information, it means nothing

Edited by Terox

Share this post


Link to post
Share on other sites

Hi Terox,

today i will cleanup my very long Post a little bit and add some new Infos.

What i can say by now, is that since Beta-Release i have "a lot" more Server-FPS at 60+ Players (around 10-12 FPS and still little to no Desync).

Details coming soon!

I hope to finally get that goddamn HC running soon anyhow ...and then going to find out what will happen with 96 Players in the next step...

PS:

related to the Terminology: it doesn't matter if you Guys are on a 1GBPS port - i assume, your Serverprovider only grants you a 100MBit/s Bandwith at maximum (except if you spent a lot of extramoney)?

Share this post


Link to post
Share on other sites

I still lol when I see people with "-cpucount=2 -exthreads=1 -maxMem=2047" in their server modlines.

Share this post


Link to post
Share on other sites

and why exactly Lokyi?

just trolling or want to add something constructive to the thread?

Share this post


Link to post
Share on other sites

*BUMP*

I am curious, since A3 was released, if server admins have made any further changes to the server config. Our community is struggling a bit with the (brand new) dedicated server. 27 players 5-9 FPS.

I head a MP update is due to come out soon, but no word when BI plans to release it. Feels like the Arma2 launch all over again.

Anyway, was wondering if anyone has more/further tips/ideas re optimizing a dedi server.

Share this post


Link to post
Share on other sites

This is a heavily edited extract from a discussion on the Skype channel between B.I and server admins.

This is basically a methodology to optimise a server

Set The following bandwidth as follows

For a 1 Gbps connection:

Maxbandwidth: 1073741824

Minbandwidth: 107374182

For a 100 Mbps connection:

Maxbandwidth: 104857600

Minbandwidth: 10485760

Then:

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

Additional notes:

  • If there are more instances of a ArmA3 server on the same box, to play safe you would split the Min and Max bandwidth appriopriately, although because the RV engine does not use all the bandwidth available on such connections anyway, it shouldn't really matter
  • MinerrorX settings are often ignored if there are special events triggering the update on object
  • The RV engine autodetects and adjusts unknown elements using it's internal optimisation system
  • Settings will vary from server to server depending on but not inclusive of the following
    • Type of mission, eg Coop/PvP
    • Number of players and quality of their connection to the server
    • Hardware capabilities of clients and server
    • Quality of connection of clients and server

It would be good to get some feedback on this methodology if anyone trys it

To maintain some form of comparison, I've uploaded a modified patrol ops pack, which doesnt require any addons.

Use this to get a comparison, its fairly popular so you should get a decent player base for it.

Benchmark_pack.zip

Edited by Terox

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