Just a bit of musing
Jon A. Lambert
jlsysinc at ix.netcom.com
Tue Mar 11 14:45:52 CET 1997
> From: coder at ibm.net
> Every event executes asynchronously in its own thread using a lockless
> model.
>
> The server core consists of the following base units:
> -- DB
> -- Dispatchor
> -- Executor
> -- Connection
<snip>
>
> User IO arrives thru the Connector. The connector is essentially a
pool of
> threads which asynchronously manage the general pool of outside
connections.
> A seperate monitor is responsible for keeping the IO network tree
happy.
>
> User commands arrive at the Connector and are immediately sent to the
> Dispatchor as Execute-In-Zero-Time (ie no delay) events. The event
logged
> is acutally to parse the command as entered. The dispatchor then
routes
> the event to the Executor, it runs the event and the resultant parse
creates
> a new event which is logged with the Dispatchor to actually execute the
> intended action.
I am particularly interested in how your pool of threads manages socket
connections.
Are these threads dynamically created to manage connections? That is, do
you
n+1 threads managing your connections, where n is active connections plus
one
to handle connection requests on the master socket? Are sockets blocked or
do
you use some other method of activating threads?
<snip>
>
> Well, given an SMP machine, with an OS that will intelligently
distributes
> threads -- that all semi happens for free with me (its not quite so good
> as I try to minimise thread creations, as few to no current OS'es will
> migrate a thread across processors for load sharing). On the other side,
> a definite design goal of my server is for it so support running in
> clustered enviroments where the entire cluster presents a single
> representation of a game.
It is my understanding that many OSs that implement multi-processing will
allocate one CPU for the OS and the rest of the available units to
application
threads. NT 3.51 does this as well as many Unixes. I thought OS2 used
this
model also. (please correct me if I'm wrong)
It is also my understanding that NT 4.0 uses a different model and
implements
"load sharing" as you define it above. I have heard rumors that Digital's
64-bit Unix
uses the "load sharing" model. Does anyone have any info on this?
More information about the mud-dev-archive
mailing list