Jump to content
CHB68

What limits the server?

Recommended Posts

bottleneck3kkt9.png

Don't get me wrong; 508 AIL is awesome for an A3 Server, but however this makes no sense at all. All cores are more or less working now, the overall CPU load is at 27%, lots of RAM available, but FPS and CPS are down around 20. There is so much computing power left, but unused!

Too bad.... :icon_frown:

Share this post


Link to post
Share on other sites
Reboot your computer once in a while

:don 13:

oh yeah.... because this will solve all problems... :p

if you dont know what to say... shut it

fact is arma3 isnt optimized very well... arma2 wasnt either...

and then all these half-wise guys come up with solutions like.... reboot... or upgrade your pc/server...

there are options for startparameters etc which are useless... the threads/cpus etc for example...

and then the max limit of the ram usage at 2047mb...

and why should we reboot a server? its a SERVER... not an effing client pc...

there are servers running for months without any problems... iuts exactly what a server should do... running... and serving ^^

so think about all that first before you answer something like REBOOT...

Edited by Gagi2

Share this post


Link to post
Share on other sites

First of all : my comment isn't a solution, and why ? Because the post isn't looking for any solution. In fact, the OP isn't asking any question ; he's just pointing out a well known and established fact, which has been quite precisely monitored etc... in many forum posts. Fyi, the consensus points out that in order to increase the fps, you may upgrade CPU, HDD/SSD, RAM and on the other part many say BIS should step up to the standard (performance-wise) set by other games. I don't want to debate here, but the subject is dense and doesn't really have "a" solution anyway.

Second : y so sirius ? I even put a smiley to make it clear that my post isn't serious at all (but hey, nearly 10 days of uptime for a computer ... well, nvm :D Edit : okay it's a server, but this fact didn't really come to my knowledge immediately ; my joke could be categorized as a bad joke if you want) ... Chill out, try not to be so provocative/insulting.

Edited by Artisanal

Share this post


Link to post
Share on other sites

Server does have to wait for packets to sort & sync. All mp games have to deal with how packets are sorted.

Too 'loose' the packets, unsynced; Too 'tight', cpu thrashes waiting for all packets to sort via timestamp.

Corrupt packets need to be resent, or timedout....

..., And then the server has still got to have the power to run the game.

So, netcode is a series of tradeoffs. Try Dwarden's betas.

Oh, and busy servers are restarted often, some every 2 hours.

Share this post


Link to post
Share on other sites

Oh, and busy servers are restarted often, some every 2 hours.

maybe gameservers... but not a whole root ^^

Chill out, try not to be so provocative/insulting.

im not mad at you bro... so just take it easy ^^

but this just needed to be said once :cool:

Share this post


Link to post
Share on other sites
First of all : my comment isn't a solution, and why ? Because the post isn't looking for any solution. In fact, the OP isn't asking any question ; he's just pointing out a well known and established fact, which has been quite precisely monitored etc... in many forum posts. Fyi, the consensus points out that in order to increase the fps, you may upgrade CPU, HDD/SSD, RAM and on the other part many say BIS should step up to the standard (performance-wise) set by other games. I don't want to debate here, but the subject is dense and doesn't really have "a" solution anyway.

Second : y so sirius ? I even put a smiley to make it clear that my post isn't serious at all (but hey, nearly 10 days of uptime for a computer ... well, nvm :D Edit : okay it's a server, but this fact didn't really come to my knowledge immediately ; my joke could be categorized as a bad joke if you want) ... Chill out, try not to be so provocative/insulting.

First of all; you know where you can put your unqualified jokes ArtisANAL? And second; if you have no clue, please be so kind and STFU.

For all others, and especially BI actually working on performance server executables; I forgot to post the server hardware specifications. Sorry for that.

Share this post


Link to post
Share on other sites
http://abload.de/img/bottleneck3kkt9.png

Don't get me wrong; 508 AIL is awesome for an A3 Server, but however this makes no sense at all. All cores are more or less working now, the overall CPU load is at 27%, lots of RAM available, but FPS and CPS are down around 20. There is so much computing power left, but unused!

Too bad.... :icon_frown:

The game and server is is mainly single threaded. You probably have hyper threading on, so 0.27 * 8 logical cores = 1 physical core maxed out.

So, to answer your question on "what limits the server?": It is limited by the single thread performance of your CPU.

Share this post


Link to post
Share on other sites
im not mad at you bro... so just take it easy ^^

but this just needed to be said once :cool:

Roger that :) this clears the situation

Share this post


Link to post
Share on other sites
For all others, and especially BI actually working on performance server executables; I forgot to post the server hardware specifications. Sorry for that.

LOOOOOL A NEWBY WITH HOPE :D SWEET ^^

sry but we speak us in years ;)

Share this post


Link to post
Share on other sites

Okay, so lets forget about it. Obviously it's not possible to start a discussion about a topic that should concern all of us w/o getting trolled and provoked.

So return back to Altis life everybody and have fun...

Share this post


Link to post
Share on other sites

hey OP - sometimes the way the mission is written is the cause of the bottleneck. I'm not saying that is true in this case, but it is one of the things that has a huge impact (esp. in multiplayer) on performance that you can really get under the hood to adjust.

Engine issues we can't really do anything about except analyze and identify. I think the negative response isn't because people disagree, I think we are all just frustrated about it and sick of seeing the threads.

Share this post


Link to post
Share on other sites

Does anybody know if/when arma 3 will receive the garunteed message send fix that DayZ just received on experimental?

It stops client and server spamming msgs to each other in the hope some get through. It reduces server load and bandwidth in one fell swoop

Share this post


Link to post
Share on other sites
http://abload.de/img/bottleneck3kkt9.png

Don't get me wrong; 508 AIL is awesome for an A3 Server, but however this makes no sense at all. All cores are more or less working now, the overall CPU load is at 27%, lots of RAM available, but FPS and CPS are down around 20. There is so much computing power left, but unused!

Too bad.... :icon_frown:

I have a strong feeling that the "0.3ms delay" for scheduled scripts. If some "core" scripts suffer from it too - that'd explain everything...

Be warned, I'll launch ArmA under VS2013 profiler one day and will find the truth...:sly:

Edited by DarkWanderer

Share this post


Link to post
Share on other sites
I have a strong feeling that the "0.3ms delay" for scheduled scripts. If some "core" scripts suffer from it too .

Be warned, I'll launch ArmA under VS2013 profiler one day and will find the truth...:sly:

The "delay" is a cap on the execution time of a script, if the engine thinks it's taking too long. Scheduler will then pause the execution of your script in the current frame, and continue it in one of the next frames, when there is room for it so it can't horribly affect performance.

The intention of this is to increase the FPS when there's no time to execute those scripts, not to reduce it. I see no reason why that would be the FPS bottleneck.

Share this post


Link to post
Share on other sites
The "delay" is a cap on the execution time of a script, if the engine thinks it's taking too long. Scheduler will then pause the execution of your script in the current frame, and continue it in one of the next frames, when there is room for it so it can't horribly affect performance.

The intention of this is to increase the FPS when there's no time to execute those scripts, not to reduce it. I see no reason why that would be the FPS bottleneck.

Well, previously there was info on this page about a 0.3 ms "sleep" after each command in scheduled env to prevent thread lock-up. That matches the pattern - the more scripts on the server, the less would be the actual CPU load.

EDIT: I won't say that the reason is exactly that, but there is definitely something. It is either some Sleep(...) in the code, or lock contention, which causes this behavior. Ideally the main "game loop" should take 100% of single core CPU time, if there's no FPS restriction.

Edited by DarkWanderer

Share this post


Link to post
Share on other sites

Hello,

it´s quite easy. ARMA3 Server can use 2 Cores. you have 8 logical cores on your maschine. 25% usage will say that 2of8 are under 100% load (the 2 Cores what ARMA3 Server will support). So your Server run under full load. Or let us Say, Arma3 Server uses all Ressources it can.

Share this post


Link to post
Share on other sites
Hello,

it´s quite easy. ARMA3 Server can use 2 Cores. you have 8 logical cores on your maschine. 25% usage will say that 2of8 are under 100% load (the 2 Cores what ARMA3 Server will support). So your Server run under full load. Or let us Say, Arma3 Server uses all Ressources it can.

Bad guess - see the first screenshot. Individual cores are loaded less than by 100%.

Share this post


Link to post
Share on other sites

Sorry, but you are wrong. internal Core management of current operating systems can spread the load over all cores, But in summary it will never use more then 2 Cores for arma3server.exe

Share this post


Link to post
Share on other sites
Sorry, but you are wrong. internal Core management of current operating systems can spread the load over all cores, But in summary it will never use more then 2 Cores for arma3server.exe

Please tell us how single thread can be spread to load all cores, looks like we have a breakthrough in OS design :)

Share this post


Link to post
Share on other sites
Please tell us how single thread can be spread to load all cores, looks like we have a breakthrough in OS design :)

...and that's the point. The screenshot shows our root running one A3 server + one TS3 server only! (Benny's BECTI 0.97 slightly tweaked / no HC)

We all know that 508 AI usually kill core 0 even running @3,8GHZ, but as you see the load was spreaded more or less over all available cores. So what is it? Real multicore? If so, why the A3 server did not take advantage in using the all CPU power? The root CPU workload is at 27% only. This is waste of resources and the A3 server suffers at 20 FPS/CPS. No need to mention that all client FPS suffer too, once the A3 server is down at 20FPS or below.

That's why this thread is called "What limits the server?" ;)

P.S.: Thank you very much for getting seriously...

Share this post


Link to post
Share on other sites
...and that's the point. The screenshot shows our root running one A3 server + one TS3 server only! (Benny's BECTI 0.97 slightly tweaked / no HC)

We all know that 508 AI usually kill core 0 even running @3,8GHZ, but as you see the load was spreaded more or less over all available cores. So what is it? Real multicore? If so, why the A3 server did not take advantage in using the all CPU power? The root CPU workload is at 27% only. This is waste of resources and the A3 server suffers at 20 FPS/CPS. No need to mention that all client FPS suffer too, once the A3 server is down at 20FPS or below.

That's why this thread is called "What limits the server?" ;)

P.S.: Thank you very much for getting seriously...

YW ;) I am a C++ Dev myself, and the topic is very interesting from professional viewpoint.

There is a free profiler around called AMD CodeAnalyst. We don't have pdb symbols for the server code itself, but we can see the system API calls - like Sleep or WaitForSingleObject (mutex lock stuff). That may give us some onsight on what causes the code to idle the CPU so much.

If you or other server owner can run a server with this profiler attached, that may give us some intel on what's happening.

Edited by DarkWanderer

Share this post


Link to post
Share on other sites

The sleep within the SQF environment isn't what's causing the FPS drops. This "sleep" is designed to delay execution in a scheduled environment after 0.3 ms. And I say "sleep" because, due to SQF's single-threaded environment, it actually just yields to the back of the execution stack and waits it turns patiently for the other scheduled SQF scripts to run. This means that after a script takes longer than 0.3 ms to run, it's latest next run time can be calculated by simply multiplying the number of scheduled scripts by 0.3 ms. And since these scheduled scripts aren't actual OS threads, the switching between them can be much more efficient due to the shared memory and execution environments, depending on how they were implemented.

DarkWanderer, in response to your latest post, I believe that the only usages for the OS-level sleep command would be in the netcode, and that any other under-utilization would derive from generic memory contention scenarios. Also, if it were to be a mutex-related issue, either the CPU usage would increase due to the busy-wait, or they would've implemented a yield-type pattern into a custom mutex wrapper; but the latter would be a cancer for any knowledgeable game developer, since it relinquishes power that can be used for something else within the game engine itself.

To the OP, if you want to test whether the slowdowns are caused by either internal netcode or memory contentions, simply start the server with 500+ AI without any connected clients and then monitor the FPS. The engine should not need to send/wait for packets, so if the netcode were the issue, the system will either run at at least 90% usage on at least one core (shouldn't be a prolonged 100% due to internal switching mechanisms) or will dramatically increase the FPS.

Also, there's no need for what was said in this thread, and some of the comments are just completely immature. Keep it on topic, or ignore it.

Share this post


Link to post
Share on other sites
YW ;) I am a C++ Dev myself, and the topic is very interesting from professional viewpoint.

There is a free profiler around called AMD CodeAnalyst. We don't have pdb symbols for the server code itself, but we can see the system API calls - like Sleep or WaitForSingleObject (mutex lock stuff). That may give us some onsight on what causes the code to idle the CPU so much.

If you or other server owner can run a server with this profiler attached, that may give us some intel on what's happening.

inb4 1,000,000,000 GetTimeOfDays on the stack

Share this post


Link to post
Share on other sites

@DarkWanderer

Do a test by yourself. try prime95. use 2 logical Cores with os Windows 8. You will see a random core utilisation over all cores. in summary 25-30% on a cpu with 8 logical cores. I don´t know i can it better explain to you. but just looking on the taskmanager and waiting that the cores will load 100% and say, this core is under full load is on current OS not possible. Windows will spread the load on all cores (maybe it will just display) but that is what i can measure with programs.

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

×