* Raises the base gc queue time from 2 minutes to 5 (#60174)
This queue allows things that hold refs to objects intermitently to free them on their own, without causing
harddels. A big part of this is byond, who will occasionally hold refs to an object for up to I think? 5
minutes. The old timer was lower for fear of memory leaks, but that's not as big a concern anymore
* Raises the base gc queue time from 2 minutes to 5
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Makes all laggy garbage failures log to admins as well as postpone further garbage ticks (#59791)
1 second was too long in the current lag market.
(postpone doesn't work here because of a bug i'll fix in another webedit in another pr since its actually a mc bug)
* Makes all laggy garbage failures log to admins as well as postpone further garbage ticks
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Adds a : to garbage logging (#58672)
Every other stat has a : attached to it, and not having this makes parsing these files into workable data fucking suffering
* Adds a : to garbage logging
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Ref Tracking: Revengance (#57728)
* Ref Tracking: Revengance
Fixes reference tracking ignoring self references due to a poorly thought out tick checking system.
Fixes reference tracking ignoring the contents of assoc lists
Makes the reference tracking printouts actually describe what list the ref is in, rather then just saying "list"
Adds REFERENCE_TRACKING_DEBUG, a define which toggles tracking info for the ref tracking procs, which allows for
oversight on how the proc is working
Allows for direct calls of qdel_and_find_ref_if_fail(), makes it use ref rather then REF(), fixing it breaking
for mobs. (Ditto for the qdel hint which does the same thing)
Moves REAGENTS_TESTING out of the reftracking define block
Makes unit tests define REFERENCE_TRACKING, REFERENCE_TRACKING_DEBUG, and FIND_REF_NO_CHECK_TICK
Adds a unit test that sanity checks the reference finder proc
* Ref Tracking: Revengance
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Enables 514 testing on master, Removes all reliance on extools outside of maptick (#56724)
* Uses 514's map_cpu var when it's available
* Uses auxtools for the debugger, to supply cross verison compatibility
* Nukes extools reference tracking, reinstates the old ref tracking system
* Enables 514 testing on master, Removes all reliance on extools outside of maptick
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Add better weakref support to qdel (#56206)
* Add better weakref support to qdel
* change request
* Add better weakref support to qdel
Co-authored-by: spookydonut <github@spooksoftware.com>
* Add weakref support to qdel (#56171)
qdel() should allow usage of weakrefs to avoid harddels on long duration qdel_in usage
* Add weakref support to qdel
Co-authored-by: spookydonut <github@spooksoftware.com>
* Merge pull request #55268 from AutomaticFrenzy/patch/docs-from-github-wiki
Migrate some docs from the GitHub wiki into the repository
* Migrate some docs from the GitHub wiki into the repository
Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com>
Noticed this tonight.
There was once 3 collection timeouts when there was the pre-queue; now there's only 2, but there's still 3 timeout levels.
The unintended impacts of this are...well, a LOT of false positives.
Needless to say, unless something garbage collected INSTANTANEOUSLY, it would be marked as a failure.
Likewise, it meant queued hard deletes had to wait a full 2 minutes before they were actually hard deleted instead of just 10 seconds (Oh dear, who knows what problems that's been causing!)
This should all be fixed now.
Less time wasted on false positive GC failures and more time spent on hunting down actual failures.
* Fixes the 50% time dilation on every server by removing demos, an admin only tool that is the laggiest thing on the planet for incredibly little gain.
* appeases the linter
* demos (ported from yogstation)
rustg update + write with no format
use external hook for logging
use proper log vars
fix + clarifying comment
don't start the log
release build of rust-g
fix something caught by the lint
Update code/__DEFINES/subsystems.dm
Co-Authored-By: Jordan Brown <Cyberboss@users.noreply.github.com>
Update code/controllers/subsystem/demo.dm
Co-Authored-By: JJRcop <jrubcop@gmail.com>
Update code/controllers/subsystem/demo.dm
Co-Authored-By: JJRcop <jrubcop@gmail.com>
moves hooks out of a dedicated file
len = 0 to Cut(), remove semicolons
untyped loop
* updated rust_g
* 513 updates
If you came here thinking this was some game feature then you are in the wrong place. Here is where I ramble about code.
This adds /datum/element as a sort of sibling to components. Only one of each type gets instanced and they do not get tied directly to any particular thing like a component does. Basically they're a very lightweight component for doing simple functionality that doesn't have much state.
Originally this concept came about as a kind of component that could be shared between many parents to reduce some resource costs. Doing this would allow us to componentize more behaviors that are a part of too many things to be viable to have a whole component for every single one. For example a component on every space turf would be entirely unviable. With elements it's much more reasonable.
This implements a prety bare framework and a couple components are migrated to it. It's ready to be used but I fully expect I'm going to need to refine how it works for all the usecases we'll want it for.
Also: this fixes the qdeleted signal. This signal isn't even possible because after qdel is done there's nothing to receive a signal anyway. I've changed it to a qdeling signal instead. I need it to work for some elements to know when to clean themselves up.
Unlike normal subsystems, if the garbage collector is tick_checked into pausing, rather than run next game tick to resume, it waits the full 2 seconds again.
I added that change because hard deletes can sometimes cause a large amount of lag, and so doing one again the next game tick is a stupid idea when 1 hard delete can cause a tick overrun on its own.
Now it only applies this when doing hard deletes, running again next tick otherwise.
* station lovin' happened so fast
* Update stationloving.dm
* less qdel memes
* imbue soul signal
* rename imbue soul signal
* dupemode
* henk
* Update atoms_movable.dm
* Update nuclearbomb.dm
* Update nuclearbomb.dm
* Find references fix.
Made it go from taking years to hours
Removed Datum based recursion, this was unneeded.
Fixed it calling a proc for what ended up being a costly noop millions of times (this was a moderate speed up as it would call DoSearchVar on every fucking number or string or null in a things vars list.)
Fixed it calling itself on the vars list. luckily it only checked keys, so this didn't stack overflow.
I'm intentionally leaving the debugging stuff in right now so that its on the record somewhere. I'll remove that when I pr line by line profiling as its own separate thing
* Remove debugging stuff
* i forgot
* Garbage collection queuing rewriting
* Some Tweaks
* Fixes some queue tracking oddities
* More tweaks
* Remove the middle two queue steps. tis was a silly idea
* New logging.
We store logging datums for use in tracking the stats of shit qdeleted
Added logging for destroy time as well as hard delete time, per type. As well as a few others
* Fix compile for testing
* Does the cyberboss
* does the antur
This was moved down to 5ds back when subsystems had to complete their entire workload each fire in the old mc system.
The idea was that less would have gotten in the queue to be hard deleted in 5ds compared to 20ds, and a tiny amount of lag more often would be more preferred to alot of lag less often.
That is no longer the case now.