Oct 152011

Things in the server code room over the past year (but really, the past month more than anything else) have been hectic, but I suppose that the changes should also be listed here as well, for posterity.

Overall, on Star Conquest, this pretty much meant a 66% reduction in CPU utilization, though before all of the performance improvement changes were put in we were running over 120 simultaneous AI pilots in a sector without the server missing a beat.

Still, we could probably use an upgrade some time in the future.

Detailed changes after the break.

  • In order to be more ‘hip‘ and ‘web 2.0‘ and ‘responsible‘ we actually started using a version control system, which probably would have been vastly useful before but that’s just how the sloth goes sometimes.
  • Some time since the post in August of last year we added scattered_isa() which is sort of a bulk/multi-target isa operation. It’s actually a lot more useful than it probably sounds at first.
  • Updated the autoconf scripts to work with modern versions of autoconf.
  • Removed pgperf and changed the build environment to work with modern versions of gperf, which now has case insensitive operation — pgperf hasn’t compiled properly in some time, as far as I know.
  • The server was rebased to the experimental LambdaMOO 1.8.4, which had some pretty significant fixes overall — primarily in memory leaks and increased performance.
  • The RNG engine was switched from libc’s built-in random() to SFMT, and now it operates in pool generation mode, which makes random number generation overall DRAMATICALLY faster. Also included is the generation of a ‘true’ floating point random number function. Overall, this is more of an improvement in performance than it sounds — even in the first version without pooling there was a 5% increase in random() speed, but the pooled mode is where stuff really shines.
  • Improved the floating point suspend stack over previous builds; it’s now accurate (in theory) to the microsecond, whereas before the MOO couldn’t handle much more beyond a tenth of a second in accuracy, and as server load increased, it became increasingly inaccurate. We feel that in a game like Star Conquest, these sorts of problems are unacceptable.
  • Several other new builtins, including a noise generation function.
  • By default, the server now sends TCP keepalive packets on all connections.
  • Improved the speed of isa(), scattered_isa(), and noise().
  • memory_usage() now works on any Linux machine (though it might not work quite properly on a FreeBSD machine)
 Posted by at 11:24 pm

Sorry, the comment form is closed at this time.