<!-- MHonArc v2.4.4 --> <!--X-Subject: Re: Just a bit of musing --> <!--X-From-R13: pynjNahyy.arg --> <!--X-Date: from babe.globecomm.net [207.51.48.8] by mx4.ibm.net id 858620160.83794-1 Mon Mar 17 17:36:00 1997 --> <!--X-Message-Id: 332d7c6137d7002#msgSFO01,schwab.com --> <!--X-Content-Type: text/plain --> <!--X-Reference: 199703120255.CAA91421#out1,ibm.net --> <!--X-Head-End--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MUD-Dev message, Re: Just a bit of musing</title> <!-- meta name="robots" content="noindex,nofollow" --> <link rev="made" href="mailto:claw#null,net"> </head> <body background="/backgrounds/paperback.gif" bgcolor="#ffffff" text="#000000" link="#0000FF" alink="#FF0000" vlink="#006000"> <font size="+4" color="#804040"> <strong><em>MUD-Dev<br>mailing list archive</em></strong> </font> <br> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] <br clear=all><hr> <!--X-Body-Begin--> <!--X-User-Header--> <!--X-User-Header-End--> <!--X-TopPNI--> Date: [ <a href="msg00124.html">Previous</a> | <a href="msg00128.html">Next</a> ] Thread: [ <a href="msg00120.html">Previous</a> | <a href="msg00007.html">Next</a> ] Index: [ <A HREF="author.html#00131">Author</A> | <A HREF="#00131">Date</A> | <A HREF="thread.html#00131">Thread</A> ] <!--X-TopPNI-End--> <!--X-MsgBody--> <!--X-Subject-Header-Begin--> <H1>Re: Just a bit of musing</H1> <HR> <!--X-Subject-Header-End--> <!--X-Head-of-Message--> <UL> <LI><em>To</em>: <<A HREF="mailto:mud-dev#null,net">mud-dev#null,net</A>></LI> <LI><em>Subject</em>: Re: Just a bit of musing</LI> <LI><em>From</em>: <A HREF="mailto:claw#null,net">claw#null,net</A></LI> <LI><em>Date</em>: Fri, 14 Mar 97 15:40:42 -0800</LI> <LI><em>Reply-to</em>: <A HREF="mailto:claw#null,net">claw#null,net</A></LI> </UL> <!--X-Head-of-Message-End--> <!--X-Head-Body-Sep-Begin--> <HR> <!--X-Head-Body-Sep-End--> <!--X-Body-of-Message--> <PRE> On 11/03/97 at 02:45 PM, "Jon A. Lambert" <jlsysinc#ix,netcom.com> said: >> From: coder#ibm,net >> 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. ... > 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? This is really really crude, as its very long time since I looked at this code: One thread watches the master socket and spawns connection sockets from there as they come in. The child sockets then go into a pool (actually I think its a bag?) with a monitoring thread. Any IO to or from a socket is then assigned on a first available basis to a thread from a waiting pool of IO threads. Should an IO request come in which does not have a waiting thread ready to execute it, a new thread is created to process the IO. Should the number of IO threads significantly exceed the number of open sockets, then IO threads are killed down to a base minimum. As such the total number of IO threads is proportional to the current maximum rate of IO transactions thru the system. I could be way off here, but I think the above is fairly accurate, well sorta, maybe. >> 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) AFAIK not even NT is quite this dumb (much tho I'd like to believe it). The process NT and OS/2 both follow, as well as most other MT SMP OS'es is to allocate new threads to the least busy CPU. I suspect that the source of your confusion is that NT and OS/2 both (largely) have a monolithic kernal (ie, a single thread). As such, yes, that primary thread will get allocated to one CPU at IPL. However, even OS/2 doesn't have a purely monolithic kernal any more, and so it will straddle multiple CPUs at IPL quite nicely. >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? None here. -- J C Lawrence Internet: coder#null,net ----------(*) Internet: coder#ibm,net ...Honourary Member of Clan McFud -- Teamer's Avenging Monolith... </PRE> <!--X-Body-of-Message-End--> <!--X-MsgBody-End--> <!--X-Follow-Ups--> <HR> <!--X-Follow-Ups-End--> <!--X-References--> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg00124.html">Re: mud grammar</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg00128.html">Re: Just a bit of musing (VRML)</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg00120.html">Re: Just a bit of musing</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg00007.html">Wout's mailing list and old digests</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#00131"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#00131"><STRONG>Thread</STRONG></A></LI> </UL> </LI> </UL> <!--X-BotPNI-End--> <!--X-User-Footer--> <!--X-User-Footer-End--> <ul><li>Thread context: <BLOCKQUOTE><UL> <LI><STRONG>Re: Just a bit of musing</STRONG>, <EM>(continued)</EM> <ul compact> <LI><strong><A NAME="00116" HREF="msg00116.html">Re: Just a bit of musing</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Sat 15 Mar 1997, 10:54 GMT </LI> <LI><strong><A NAME="00117" HREF="msg00117.html">Re: Just a bit of musing</A></strong>, Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Sat 15 Mar 1997, 14:29 GMT </LI> <LI><strong><A NAME="00118" HREF="msg00118.html">Re: Just a bit of musing</A></strong>, Travis Casey <a href="mailto:casey#NU,cs.fsu.edu">casey#NU,cs.fsu.edu</a>, Sat 15 Mar 1997, 21:20 GMT </LI> <LI><strong><A NAME="00120" HREF="msg00120.html">Re: Just a bit of musing</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Sun 16 Mar 1997, 04:20 GMT </LI> <LI><strong><A NAME="00131" HREF="msg00131.html">Re: Just a bit of musing</A></strong>, claw <a href="mailto:claw#null,net">claw#null,net</a>, Tue 18 Mar 1997, 01:36 GMT </LI> </ul> </LI> <LI><strong><A NAME="00007" HREF="msg00007.html">Wout's mailing list and old digests</A></strong>, coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Thu 20 Feb 1997, 12:13 GMT <UL> <li><Possible follow-up(s)><br> <LI><strong><A NAME="00008" HREF="msg00008.html">Re: Wout's mailing list and old digests</A></strong>, Wout Mertens <a href="mailto:Wout.Mertens#rug,ac.be">Wout.Mertens#rug,ac.be</a>, Wed 26 Feb 1997, 07:55 GMT </LI> <LI><strong><A NAME="00011" HREF="msg00011.html">Re: Wout's mailing list and old digests</A></strong>, coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Thu 27 Feb 1997, 14:10 GMT </LI> </UL> </LI> <LI><strong><A NAME="00002" HREF="msg00002.html">Re: Invitation to MUD Design Mailing List</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Thu 13 Feb 1997, 16:56 GMT </LI> </UL></BLOCKQUOTE> </ul> <hr> <center> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] </center> <hr> </body> </html>