Author |
Version 1.42 |
Faustus Marshal Palestar
Joined: May 29, 2001 Posts: 2748 From: Austin, Texas
| Posted: 2002-03-22 08:26  
- Found the cause of servers chewing 50% or more of the CPU when a system is fully built up and infantry and structures. This is a MAJOR fix guys, all the lag you've been complaining about was caused by this pretty much.
The problem was with the updateIntelligence() routine in the server code, which collects all the contact information from ships, defense bases, and ground units, and hashes this information to produce a tree to determine if an object can be detected. This is how missiles know if they can hit a target or not, looking up the information has always been fast and will continue to be so, however collecting and building this information hash was SLOW. I've optimized the routine, however have not profiled it yet, but I think it will be around 10 times faster.
_________________
|
Bumblebee Cadet Mercenaries of Andosia
Joined: May 31, 2001 Posts: 2256 From: Switzerland
| Posted: 2002-03-22 09:21  
oh, what a gooooood promise
thanks a lot
_________________
|
Faustus Marshal Palestar
Joined: May 29, 2001 Posts: 2748 From: Austin, Texas
| Posted: 2002-03-22 09:50  
- Added code to reset the lock rank when a planet is captured.
- Added code to check once per minute that atleast one ship is equal or higher than the current lock rank of a planet. If not found, then the rank is dropped to the highest rank found of the same faction. Note.. the players must be in a ship... as to prevent the planet staying locked while the player is in observe mode or in the bathroom.
_________________
|
Faustus Marshal Palestar
Joined: May 29, 2001 Posts: 2748 From: Austin, Texas
| Posted: 2002-03-22 10:17  
- Fixed the bug which allowed gas and inferno planets to be captured. Added code to remove all structures and units from those planets on the next update.
_________________
|
Faustus Marshal Palestar
Joined: May 29, 2001 Posts: 2748 From: Austin, Texas
| Posted: 2002-03-22 10:47  
- Fixed code which was preventing the servers from automatically being restarted by the SuperServer when a crash occurs. Before they would just hang, until an admin got on the machine and restarted the server manually. They will now exit correctly, and log all error information. If they are being managed by a SuperServer, then they will get restarted.
[ This Message was edited by: Faustus on 2002-03-22 10:48 ]
_________________
|
Faustus Marshal Palestar
Joined: May 29, 2001 Posts: 2748 From: Austin, Texas
| Posted: 2002-03-22 10:57  
- Changed the code so updateIntelligence() is only called 1 per second, instead of 20 times per second. This will create a small amount of lag in intelligence information, but it should make very little difference.
_________________
|
Faustus Marshal Palestar
Joined: May 29, 2001 Posts: 2748 From: Austin, Texas
| Posted: 2002-03-22 11:02  
Following up on the updateIntelligence routine...
Before optimization, using Epsilon Eri as the test case from the real MV, with all planets built up, lots of AI transports, etc..
~12,000,000 CPU Cycles
After Optimizations...
~1,200,000 CPU Cycles
Additionally, this is only called once per second now, instead of 20 times per second.
-Richard
[ This Message was edited by: Faustus on 2002-03-22 11:03 ]
_________________
|
Dead-Eye Cadet eXcellent Strategists
Joined: May 29, 2001 Posts: 133 From: Spaichingen / Germany
| Posted: 2002-03-22 11:44  
WOW!!!
I think the same, 1 update per second is enough.
Greetings,
[eXS]Dead-Eye
_________________ Visit our german fanpage
www.dsportal.de
|
Gideon Cadet
Joined: September 14, 2001 Posts: 4604 From: Oregon, USA
| Posted: 2002-03-22 14:09  
I think I speak for every one when I say:
Dayang, you go boyeee!
_________________ ...and lo, He looked upon His creation, and said, "Fo shizzle."
|
Faustus Marshal Palestar
Joined: May 29, 2001 Posts: 2748 From: Austin, Texas
| Posted: 2002-03-22 16:07  
This optimzation turned out better than I expected... the servers were running at almost 100% CPU usage before, now there runing at 8% with around >100 people connected to the server.
-Richard
_________________
|