[DGD] the kernel library & callout resources

Felix A. Croes felix at dworkin.nl
Wed May 7 23:51:47 CEST 2003


As you may have noticed, I removed callouts as a resource from the
kernel library.

My reason for doing this is that I designed the kernel library before
I had worked out how I was going to support MP.  As it turns out,
keeping track of callouts in this way would almost completely undo
the MP benefit, since that depends on not counting the addition of
a new callout to an object as a modification of that object.
Keeping track of callouts as a resource definitely involves data
modifications, which means that two threads simultaneously adding
a callout to the same object are now in competition, and only one
can complete.

In DGD/MP, breaking up a thread which modifies two objects into two
smaller threads which each modify only one object is actually a
significant optimization.  There is no good solution for keeping
track of callouts as an LPC resource in this environment.

Since keeping track of callouts can still be very useful, I made their
inclusion dependant on the value of a configuration parameter.  By
default, the value of CALLOUTRSRC in /include/config.h is FALSE,
indicating that the callouts resource is not used.  This can be turned
into TRUE to keep using it.  For a mud started from a statedump created
with an earlier kernel library version, the default is to continue using
the resource regardless of the value of CALLOUTRSRC.  Finally,
remove_callouts_rsrc() can be called in /kernel/sys/rsrcd to remove the
callouts resource from a running mud.

Regards,
Dworkin
_________________________________________________________________
List config page:  http://list.imaginary.com/mailman/listinfo/dgd



More information about the DGD mailing list