Server Performance
causticsoda
Join Date: 2012-04-30 Member: 151327Members
<div class="IPBDescription">Server Requirements, tips and tricks</div>Hi all,
I have a couple of questions related to server performance:
1) Currently, what would be the recommended specs to run a well performing Natural Selection 2 Server? Can any server admins share what hardware they are running their server on, what what kind of performance levels (tickrate etc) they are seeing.
2) I recently set up a 16 player server on a Dual CPU Xeon E5645 (12x 2.4GHz Cores) server with 48GB RAM, and have seen very poor performance, with tickrate between 3 and 6 during a game with 16 Players. Is there any tweaks I can make to the OS or NS2 configuration to improve performance? Should I be expecting better performance with my hardware?
Thanks all for your help.
I have a couple of questions related to server performance:
1) Currently, what would be the recommended specs to run a well performing Natural Selection 2 Server? Can any server admins share what hardware they are running their server on, what what kind of performance levels (tickrate etc) they are seeing.
2) I recently set up a 16 player server on a Dual CPU Xeon E5645 (12x 2.4GHz Cores) server with 48GB RAM, and have seen very poor performance, with tickrate between 3 and 6 during a game with 16 Players. Is there any tweaks I can make to the OS or NS2 configuration to improve performance? Should I be expecting better performance with my hardware?
Thanks all for your help.
Comments
All you can do to get a better performance, is to lower the maximum slots to 8-12.
Thanks player, I am interpreting from those requirements that NS2 Server currently runs on a single core?
I'll have to look into if I can get a CPU with a higher clockrate, do Intel even sell 4-5GHz SB Xeons?
Cheers.
That 4-5GHz I quoted were a reference to the current top-servers for NS2, which are all running desktop overclocked Sandybridges, the fastest most similar server-based hardware you might find is a 3.8GHz (or thereabouts) Xeon. I believe invTempest suggested the slot\performance-curve was an exponential one, so dropping from 16 to 12 should already yield a significant tickrate-increase.
This game does multithread. It just doesn't/can't do it well. The bottleneck is game logic and game logic is next to impossible to multithread, as things happen in succession.
E.g. you can't process movement before you check whether the player is actually already dead. You can't check whether he's dead before applying damage to him. You can't apply damage before checking whether he was hit. And so on.
You will always get better FPS by overclocking your CPU, in any game. It's just that NS2 is severely bottlenecked on the CPU side, which is quite the opposite of almost all other games out there, which are mostly GPU bound. That is why you see much greater benefits in NS2.
The server is multi-threaded, however I believe that only physx calculations are done on a different thread. There are only very slight gains to server performance (3-5% tops) when running a server with more than 1 core.
The preferred CPU that I use for all my servers is the i5 2500k due to the fact that it can be overclocked to 4.4+ Ghz while staying below 70 degrees C (1u chassis) while running 3 NS2 servers 24/7. Your hardware would be able to power through any normal game with ease but NS2 is still very much unoptimized and as such it currently requires a very high single core clock speed to run it effectively.
Going the route I posted above would mean that you would need to custom build your own server as no GSP or dedicated server provider (other than ns2servers.com) offers overclocked hardware for rent.
It currently runs in 2 threads. One of these threads does the majority of work (about 5 times as much as the other one), so basically you are most of the time waiting on that singel thread which is why better clock speeds help.
I seriously doubt it's only 2 threads. I'd say at least one for physics, sound, rendering tasks, animations, networking and game logic each, most likely more.
Thread 1: Almost verything, taking up majority up cpu time (this is what most lilky keeps one core at 100%)
Thread 2: "Finish rendering" (this is what keeps one core at something like 30% :P)
Thread 3: Colliisions
some extra threads that occasionnaly do something memory related appear as well
Thread 1: Almost verything, taking up majority up cpu time (this is what most lilky keeps one core at 100%)
Thread 2: "Finish rendering" (this is what keeps one core at something like 30% :P)
Thread 3: Colliisions
some extra threads that occasionnaly do something memory related appear as well<!--QuoteEnd--></div><!--QuoteEEnd-->
CPU usage does not indicate how many threads are being used. The only limit is that you can't have more than (Threads/Corecount) usage. Yes, it is true that one of the threads does the most work (or the slowest work, depending on how you look at it). That's why clock speed matters so much. It's a matter of wording. If you state that it only uses two threads because it can't saturate two cores, it's simply wrong.