Zeex / samp-plugin-crashdetect

Crash/error reporting plugin for SA-MP server
http://forum.sa-mp.com/showthread.php?t=262796
BSD 2-Clause "Simplified" License
116 stars 23 forks source link

Possibly unintended performance issues #43

Open JernejL opened 9 years ago

JernejL commented 9 years ago

I have been a long-time user of crashdetect on live server until recently when i have - with experiments figured out that crashdetect causes much instability in server fps.

When server can run amx (that contains all debug symbols) at 600fps with 100 players if i load it with crashdetect server fps drops to 300fps with only 33 players.

I am not sure how much of this slowdown is acceptable - it isn't mentioned in manual, i understand that some slowdown is expected however the amout of slowdown shocked me a little.

It is practically counter-productive to run crashdetect live on anything above 50 players, ofcourse my script is very complex so that could be a related factor in all this.

No crashdetect - whole day of data: http://i.imgur.com/cGQ0fxg.png

Average day looked like this with crashdetect: http://i.imgur.com/h1EPZOQ.png

Loading crashdetect shows an instant change in fps drop even during low player count: http://i.imgur.com/dkSJySE.png

Crashdetect version is: [04:04:49] CrashDetect v4.15.1 is OK.

JernejL commented 9 years ago

Adding to this.. maybe is there a option to use crashdetect just to generate stack traces without it checking for crashes? - Since the performance penalty for full crashdetection is too big i would sometimes only like to use GetAmxBacktrace (for example.. i have to track down deletion of a textdraw and i cannot find it without checking for stack trace) - could that be possibly implemented in some future release via configuration option?

JernejL commented 8 years ago

I hate bumping, but i hope something is done about this, especially with possibility of getting just the GetAmxBacktrace without the rest of crashdetect features that are causing the slowdown.

oscar-broman commented 8 years ago

You can already get a stack trace without using crashdetect: https://github.com/Zeex/amx_assembly/blob/master/stack_trace.inc

If you mix this together with https://github.com/oscar-broman/samp-introspect/blob/master/introspect-debug-info.inc then you've got pretty much all you need.

BTW I'm assuming you modified sleep and I have to ask: is there really a benefit to doing that? I've done that but it caused some plugins to misbehave, and lagging players seemed to lag more.

JernejL commented 8 years ago

That looks useful, i guess i can use it as alternative, i'll give it a try.

Sleep is modified yes, set to 1ms. there is not much benefit except when player count rises, processing networking thread is a little faster, and for us it doesn't cause issues for us atm.

tappzy commented 7 years ago

What is server fps? And is this fixed? 😲

tappzy commented 7 years ago

Anyone? 😞

wearLy commented 6 years ago

Is the plugin located with problems on FPS / server server with lots of players online?

Zeex commented 6 years ago

I would not recommend using crashdetect on a live server, there is a certain overhead associated with tracking errors, therefore your code will run slower. The plugin uses a modified AMX VM that disables stuff like SYSREQ.D (which is used to call native functions faster) and it also has to keep track of CIP (current instruction pointer) after each instruction for more accurate error reporting - line numbers, address of bad intruction, etc.