Server Performance:
Windows 2008 R2 Only
- This is a big one. In the power settings there are two options "Balanced" and "High Performance". I believe 2008 defaults to "Balanced", but the server will run poorly like this. You must set this to "High Performance". A server admin reported changing this decreased his CPU usage 50% on one core (the main game core). In other words, his server was performing terrible before, and setting this gave him great performance.
- Windows Firewall: We've seen on some machines that for some reason Windows Firewall will throttle the bandwidth (and sometimes even stop the net traffic for a few seconds). If you experiencing strange times where the server stops sending network traffic altogether for a few seconds, this is probably the culprit. Try turning it off, and see if the problem goes away. It did on our servers. Other server admins have reported they never saw this issue.
Processor Affinity
- I don't know how many server admins I've seen complaining about server performance, and one of the first things they mention is "well I didn't set the affinity". Unless you are running virtualization (which I don't suggest) and the virtualization or some other software that is setting the affinity for you, you MUST set the affinity to get the best performance out of the game. The game thread needs exclusive access to a single core. Otherwise the OS will have it thrashing between cores which will cause the CPU load to go up, as well as pings and lag. I'm really serious on this one, it is a huge benefit to the way the server runs when it is near or at peak load.
- Don't set the affinity for more than one server to the same core: this one should go without saying, but if you do set your affinity, don't set multiple 64 player servers to the same core
Havoc ensues. Give each server process it's own exclusive core for the game thread.
- Give the server its own physical core. If a server has hyperthreading on, then you should use all even or all odd cores for your affinity. You want to do 0,2,4,6 or 1,3,5,7, as that will be separate physical cores. If you do 0 and 1 with hyperthreading on, that will be the same physical core and will overload the CPU
Here is the commandline switch:
-PREFERPROCESSOR=x (where x=0,1,2, ...)
So for example:
-PREFERPROCESSOR=0
Would set the game thread's affinity to the first core.
Virtualization
- Most poeple have not had good results with virtualization and the RO2 game server. I would suggest at this point to avoid running with virtualization. I have had reports of servers that would peak thier CPU at 20 players when using virtualization, when the same machine would run 64 player easily without virtualization. With that said, I have also heard some server hosts/admins have had good results with virtualization, and I would be very interested to hear what software and configuration you are using.
Running Over Recommended Specs
- Please try and keep reasonably close to the Recommended Specs. We've seen a lot of poeple pushing thier machines WAY past the recommended specs. Doing so will only result in a laggy experience for your players, who will in turn leave your server, or our game. And more often than not, they will blame Tripwire and not the server admin. Here are the recommended specs we determined during the beta. Note: we actually got some decent optimization between beta and retail which gained us 10-15% better performance over the beta on the server. Still, I wouldn't suggest going TOO far over these:
32 Players: CPU usage - 1 Core of a 2.6 GHZ Core I7 or equivalent (i.e. the server process will take most of 1 core, with a few smaller threads on other cores). We also tested on an Intel Core2 Quad Q8400 @ 2.66GHz and that could handle 32 players but I wouldn't try and do 32 players with a machine much slower than that.
64 Players: Goal CPU usage - 1 Core of a Intel Xeon E3-1270 3.4 GHZ (3.8 GHZ actually with Turbo enabled) or equivalent (i.e. the server process will take most of 1 core, with a few smaller threads on other cores).
Strange Lag/Ping Anomalies
- There have been reports of strange ping/lag anomalies not related to CPU usage (i.e. servers running fine, then pings climb really high for everyone for an extended period of time, then go back to normal). I've finally been able to reproduce this on our test servers (by reproduce I mean see it happen first hand). It is very rare on my test servers (in 5 days of the servers running 64 players 24/7 this is the first time I've seen it). I'm probably going to need to build in some logging into the next update to give me more data on why/when this is happening so that I can track down the cause. I'll be looking for volunteers to turn on this logging and give me thier data. I've got some ideas what it might be, but I need to know for sure.