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