mirror of
https://github.com/ldmud/ldmud
synced 2026-08-12 14:26:05 -04:00
This is a second review pass on concepts; while it includes some formatting edits, this review was much more closely focused on the text itself and consists mostly of typo/grammar edits.
55 lines
2.8 KiB
Text
55 lines
2.8 KiB
Text
CONCEPT
|
|
memory / swapping
|
|
|
|
DESCRIPTION
|
|
TODO: This is out of date. Also document the relation with reset
|
|
|
|
(Collected from the Changelogs of the driver source)
|
|
|
|
The swapping algorithm has been changed. A test is done for
|
|
every object, comparing to a time stamp. If the object hasn't
|
|
been touched for a while, it could be subject for swapping.
|
|
Here comes the new thing: the function 'clean_up()' will be
|
|
called in the object. If the object still remains, the old
|
|
swapping algorithm will continue. That means that objects that
|
|
would never be subject to swapping (cloned objects) now have a
|
|
chance to self-destruct. It also means that rooms that
|
|
contains no important data can self-destruct. Self-destruction
|
|
saves more memory than swapping, as swapping only frees the
|
|
program code, while self-destruction also frees the internal
|
|
object representation.
|
|
|
|
The call of clean_up() has been modified. There is a constant
|
|
in config.h that defines how long time until clean_up is
|
|
called in an object. This call is independent of reset() and
|
|
swapping. It is recommended that the swapping time is
|
|
something short, like 10 minutes to 30 minutes, while the time
|
|
to clean_up is longer.
|
|
|
|
Fixed several bugs in the swap/reset/clean_up logic.
|
|
Recommended values are that the swap time is short (less than
|
|
30 minutes), and that reset time is medium (aprox 60 minutes),
|
|
and that time to clean_up is long (greater than 1.5h hours).
|
|
Any feedback of how to best tune these values are welcome. The
|
|
call of reset will be done once, and not yet again until the
|
|
object has been touched. This enables reset'ed objects to stay
|
|
swapped out. If you have a mudlib that has no objects that
|
|
define 'clean_up', then you may better define this time as 0,
|
|
which means never call clean_up (and thus never swap the
|
|
object in needlessly). A well implemented usage of clean_up is
|
|
better than the swap algorithm, as even cloned objects can be
|
|
cleaned up and a self destruction is more efficient than
|
|
swapping (memory wise).
|
|
|
|
Changed mechanism of calling clean_up() slightly. Only objects
|
|
that define the function will be called. And, only clean_up()
|
|
that returns non-zero will be called again. This will minimize
|
|
calls of clean_up(), while still costing little to maintain.
|
|
|
|
clean_up() now gets a flag as argument, which will be non-zero
|
|
if the the program of this object is used for inheritance by
|
|
other objects.
|
|
|
|
SEE ALSO
|
|
clean_up(A), slow_shut_down(M), quota_demon(M), low_memory(M)
|
|
malloc(D), garbage_collection(E)
|