FAQ: Ultra-Acceleration

Post Reply
User avatar
Edge100x
Founder
Founder
Posts: 12219
Joined: Thu Apr 18, 2002 11:04 pm
Location: Seattle
Contact:

FAQ: Ultra-Acceleration

Post by Edge100x » Mon Mar 19, 2007 9:27 pm

We've been getting some questions on our ultraaccelerator and have been seeing some disinformation in other forums, so I've created this FAQ to address them.

If you have a question about our ultraaccelerated servers, or about anything else, please don't hesitate to contact us. If we hear your question more than a couple of times, I'll add it to this list.

Is there any real, noticeable difference between 500, 1000, and 2000+ FPS?

Higher sustained FPS unquestionably gives a faster server, but it is difficult to say how noticeable it will be in-game. Some people see a difference and some don't.

With a HL1 server, such as CS 1.6, the server FPS is tied to the tickrate. At 500 FPS, the server checks for new data and performs world calculations every 2ms, effectively adding up to 2ms to everyone's latencies. With 1000 FPS, the server goes down to 1ms between frames and ticks. Can the human brain notice the difference between a 1ms and 2ms delay? There aren't any studies showing that it can or can't, but it's theoretically possible. Does the game's netcode improve along with the 1ms improvement? It will give more accurate registry because it performs less prediction, yes, but it's up for debate whether it's noticable or not.

With a HL2 server, such as CS:S, things are a little bit different. The game only processes network input and output with every frame, saving the heavy lifting of world calculations for the next tick. The highest tickrate the game supports is 100, regardless of the acceleration level and server FPS rate. So, with a 500 FPS server, it will accept your data every 2ms, but won't fully process it (and see who you shot, etc) for up to 10ms. With a 2000 FPS server, it will check for new data every 0.5ms, but still won't fully process it for up to 10ms. Does that mean 500 FPS perform the same as 2000 FPS servers? Not necessarily. A higher FPS may still have a small benefit in three ways: One, by possibly giving higher accuracy to internal timestamps and allowing the server to keep better track of what order events happened in; two, by possibly allowing the server to do less work during frames that also require a "tick" and thus giving a more predictable delay; and three, by reducing the minimum time that a server can sleep, which allows it to more accurately compensate for frames that take longer to process than expected.

The bottom line answer is that you should try different acceleration levels, and see which one feels better to you. You may also see some difference in the behavior of hyperaccelerated and ultraaccelerated servers due to their being hosted on different OS' -- we use Win32 for hyperaccelerated servers and Linux for ultraaccelerated servers. Our free trial period works great for testing different configurations, since you can make as many server adjustments as you like during it without being charged extra.

I read on a different forum that 2000 FPS CS:S servers perform worse than 1000 FPS servers, and are functionally equivalent to 500 FPS servers. Is this true?

No. 2000 FPS servers process network events during frames that are 0.5ms apart and 1000 FPS servers process network events during frames that are 1ms apart. The game understands the difference (and reports the realized FPS through the "rcon stats" command) and it handles everything else in the same way, including ticks every 10ms.

On the CPU performance front, 2000 FPS servers do require more CPU power, but they still don't bump into the current limits of our hardware. We've done extensive testing and we see similarly stable FPS rates for 2000 FPS and 1000 FPS servers, as measured by the game's "rcon stats" command.

I was told that CS:S really only supports 1000 FPS. Is this true?

No. HL2 compensates for whatever FPS it is run at, just as the game client compensates for whatever FPS it is run at. A properly patched Linux kernel has very accurate timekeeping, and the game takes advantage of it; the server calls the gettimeofday() function to see exactly how many nanoseconds elapsed between its last calculated frame, then uses that to properly advance its internal timers and correctly simulate the game physics. A game server like HL2's can be run on fast hardware, slow hardware, at high FPS rates, and at low rates, and it will do the best it can in each scenario.

How do you get such high FPS rates? I never see my FPS dip below 999, or 1996 on my CS:S server. Are you hacking something?

We use a recent version of Linux with custom kernel code modifications to achieve very stable and high FPS rates. We also have per-machine load-balancing systems that work to tweak affinities and priorities to keep every server that has players in it running at peak performance.

Why do you use Linux? Some other companies use FreeBSD or DragonFlyBSD, and they say those are better.

Linux runs fastest and has the highest level of stability. We know this because we've tried just about everything. ;)

We started experimenting with ultraaccelerated servers in December 2006 with Linux, but at the time we didn't have the proper tweaks in place, so its performance was disappointing. As a result, we switched to FreeBSD, after trying NetBSD and DragonFlyBSD, because it offered the best Linux compatibility and highest performance, and was being more actively developed than the other BSD variants. I personally spent hundreds of hours tweaking and recompiling our FreeBSD systems; we got to the point where we had very stable 950 FPS servers. We rolled out FreeBSD machines to several locations and were relatively satisfied, but I continued to tweak them towards perfection.

The problem was, FreeBSD had some unresolvable issues. Specifically, the game servers occasionally crashed, the machines occasionally crashed, and there were some other miscellaneous bugs such as the OS randomly blocking TCP connections until a reboot. These problems occurred with every version of FreeBSD we tried, and with whatever we options we used (frustratingly, they were also uncommon and unpredictable).

In addition, we longed for even higher performance.

So, we switched back to Linux, and I wrote extra kernel code and external software to stably maintain high FPS. We found that server FPS was so stable on our new ultraaccelerated servers that we could even run the CS:S servers at 2000 FPS without bumping into performance limitations.

Will you offer CS 1.6 servers at 2000 FPS?

No. Unfortunately, the HL1 dedicated server program does not work correctly with FPS rates higher than 1000. The game begins to run too fast; for instance, the bomb timer is proportionately shorter than it should be.

Will you offer CS:S servers at higher than 2000 FPS? How about 10000 FPS?

We have now come out with a beta 10,000 FPS option. We could officially offer even higher than this, but fluctuations become more common with larger numbers due to the increased CPU usage, and we only want to offer what we know can be delivered smoothly. (If you'd like to try out 20,000 or 25,000 FPS, though, extreme accelerated servers currently have a beta knob in the control panel for it.)

Are you insane?

Maybe a little.

User avatar
Edge100x
Founder
Founder
Posts: 12219
Joined: Thu Apr 18, 2002 11:04 pm
Location: Seattle
Contact:

Addendum: Extreme acceleration

Post by Edge100x » Mon Jun 08, 2009 11:51 am

We have now added a beta option called "Extreme acceleration" that further allows Source and Orangebox-based servers to run at up to 10,000 FPS. This setting is made possible by exclusive code changes that we have made to the Linux kernel.

For the same reasons that 2000 FPS servers are theoretically better than 500 FPS servers (more accurate timestamps, less work to do in each frame, and smaller sleep quantums), 10k FPS servers are theoretically better than 2000 FPS ones. We initially did not think that the human mind could see a difference, but in our testing, some players did say they saw an improvement.

This feature is said to be in beta because we are still evaluating whether it meets expectations and is worth the extra cost to both us and our customers. If you rent an extreme accelerated server, we would greatly appreciate any feedback you can provide us on it.

Post Reply