<!-- MHonArc v2.4.4 --> <!--X-Subject: Re: [MUD-Dev] Text Parsing --> <!--X-From-R13: X Q Znjerapr <pynjNinerfrnepu.pbz> --> <!--X-Date: Wed, 9 Jun 1999 19:56:42 -0700 --> <!--X-Message-Id: E10rv0w-0005hB-00#under,su.varesearch.com --> <!--X-Content-Type: text/plain --> <!--X-Reference: Pine.BSF.4.10.9906091603130.22693-100000#shell9,ba.best.com --> <!--X-Head-End--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MUD-Dev message, Re: [MUD-Dev] Text Parsing</title> <!-- meta name="robots" content="noindex,nofollow" --> <link rev="made" href="mailto:claw#varesearch,com"> </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="msg00658.html">Previous</a> | <a href="msg00660.html">Next</a> ] Thread: [ <a href="msg00652.html">Previous</a> | <a href="msg00682.html">Next</a> ] Index: [ <A HREF="author.html#00659">Author</A> | <A HREF="#00659">Date</A> | <A HREF="thread.html#00659">Thread</A> ] <!--X-TopPNI-End--> <!--X-MsgBody--> <!--X-Subject-Header-Begin--> <H1>Re: [MUD-Dev] Text Parsing</H1> <HR> <!--X-Subject-Header-End--> <!--X-Head-of-Message--> <UL> <LI><em>To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI> <LI><em>Subject</em>: Re: [MUD-Dev] Text Parsing </LI> <LI><em>From</em>: J C Lawrence <<A HREF="mailto:claw#varesearch,com">claw#varesearch,com</A>></LI> <LI><em>Date</em>: Wed, 09 Jun 1999 19:56:21 -0700</LI> <LI><em>Reply-To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI> <LI><em>Sender</em>: <A HREF="mailto:mud-dev-admin#kanga,nu">mud-dev-admin#kanga,nu</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 Wed, 9 Jun 1999 16:21:28 -0700 (PDT) Matthew Mihaly <diablo#best,com> wrote: > Actually, on that note generally, I have read some talk on here, > in the past, about how some of your servers can handle a LOT of > users online at once without having speed problems. I've scaled using simulated users under very artificial conditions and a rather minimal world to just over 700 simultaneous players on a fairly mid-range box. Performance at that point really became a kernel function due to poor MT work on IO under Linux (single lock). > How the heck do you manage that? Careful design mostly. I know what things cost, how much they cost, and how often I absolutely have to do them. This is one of the few areas where all that CS math you (should have) done in grad school comes in *really* handy, but is still not really necessary. > We use an interpreted engine (which I realize is inherently > slower)... That's a dangerous and often massively misleading assumption. Interpreted languages need not be either slow or performance bottlenecks. LP and BatMUD demonstrate this rather clearly. LambdaMOO demonstrates rather clearly that this _can_ be a problem given poor design and implementation. BatMUD shows part of the other side: that given good and careful work, the performance hit is a strawman. > I suspect that our player routines (mainly movement) tend to be > significantly more complicated than most muds (again, mainly > movement, due to the enormous number of database searches that > need doing to check for all sorts of stuff everytime someone > moves)... I smell sloppy thinking here. Yes, there is good reason for having motions trigger cascading state checks. I do it myself, and I suspect do it to a far greater degree than you do (I've counted over 2,000 state checks resulting from a single most-pessimal move). No, there is no reason for those state checks not to short circuit extremely cheaply in the common cases. A heck of a lot of the time you can determine far more cheaply whether or not you need to make a variety of checks, than you can do the checks themselves. > ... but I don't think our mobile ai is particularly complicated, > although currently mobiles do things regardless of whether players > are in the room (such as wander about, sleep to heal if wounded, > gather items they find, etc). Conversely this is a point where I currently spend massive numbers of cycles. Its rather ugly. > We think we're going to have to convert to a UO-style system where > we split upt he land geographically and run the different areas on > different servers. That SEEMS, to my not-very-knowledgeable-self, > to be something that we shouldn't have to do just to get past 100 > players online (i figure I can squeeze out another 33% performance > from careful optimization). The above simultaneous simulated user load was on a low end AlphaStation with 192Meg of RAM (forget CPU # and clock) whose performance is roughly equivalent to a P300 with 64Meg RAM (Alpha code and data density is very low). That box got me up to 700 users, at which point it essentially cratered. Given a decent PC base, I see little reason you shouldn't be able to pass the 1,500 point modulus Linux kernel issues (such as the single IO lock). Aside: When in performance doubt, don't use normal SCSI or IDE storage devices under Linux. Go for one of the DAC960 based hardware RAID cards. Linux'es SCSI stack is rather poor and the DAC960 drivers bypass the SCSI stack and implement their own (much faster) layer. Given RAID 0/1 you can run at nominal SCSI buss speed with very very little effort. > Can anyone tell me if this seems normal to you? Get a profiler. Get some performance statistics. Find out where you are spending your time. Determine if that is actually necessary, or whether implementation or architectural changes can remove the requirement. Repeat this process several times until there are no obvious bottlenecks, or any remaining bottlenecks are either fundamental and uneconomical to remove, or implicit in systems you don't control (eg kernel, device drivers, external latency etc). -- J C Lawrence Home: claw#kanga,nu ---------(*) Linux/IA64 - Work: claw#varesearch,com ... Beware of cromagnons wearing chewing gum and palm pilots ... _______________________________________________ MUD-Dev maillist - MUD-Dev#kanga,nu <A HREF="http://www.kanga.nu/lists/listinfo/mud-dev">http://www.kanga.nu/lists/listinfo/mud-dev</A> </PRE> <!--X-Body-of-Message-End--> <!--X-MsgBody-End--> <!--X-Follow-Ups--> <HR> <ul compact><li><strong>Follow-Ups</strong>: <ul> <li><strong><A NAME="00683" HREF="msg00683.html">Re: [MUD-Dev] Text Parsing</A></strong> <ul compact><li><em>From:</em> Joey Hess <joey#kitenet,net></li></ul> <li><strong><A NAME="00682" HREF="msg00682.html">Re: [MUD-Dev] Text Parsing</A></strong> <ul compact><li><em>From:</em> Matthew Mihaly <diablo#best,com></li></ul> </UL></LI></UL> <!--X-Follow-Ups-End--> <!--X-References--> <UL><LI><STRONG>References</STRONG>: <UL> <LI><STRONG><A NAME="00652" HREF="msg00652.html">Re: [MUD-Dev] Text Parsing</A></STRONG> <UL><LI><EM>From:</EM> Matthew Mihaly <diablo#best,com></LI></UL></LI> </UL></LI></UL> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg00658.html">Re: [MUD-Dev] Gender and Mud Development (back on topic, some)</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg00660.html">Re: [MUD-Dev] Gender and Mud Development (back on topic, some)</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg00652.html">Re: [MUD-Dev] Text Parsing</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg00682.html">Re: [MUD-Dev] Text Parsing</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#00659"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#00659"><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: [MUD-Dev] Text Parsing</STRONG>, <EM>(continued)</EM> <ul compact> <ul compact> <ul compact> <ul compact> <ul compact> <ul compact> <ul compact> <LI><strong><A NAME="00599" HREF="msg00599.html">Re: [MUD-Dev] Text Parsing</A></strong>, Greg Miller <a href="mailto:gmiller#classic-games,com">gmiller#classic-games,com</a>, Tue 08 Jun 1999, 14:53 GMT <UL> <LI><strong><A NAME="00612" HREF="msg00612.html">Re: [MUD-Dev] Text Parsing</A></strong>, Matthew Mihaly <a href="mailto:diablo#best,com">diablo#best,com</a>, Tue 08 Jun 1999, 22:17 GMT <UL> <LI><strong><A NAME="00642" HREF="msg00642.html">Re: [MUD-Dev] Text Parsing</A></strong>, Greg Miller <a href="mailto:gmiller#classic-games,com">gmiller#classic-games,com</a>, Wed 09 Jun 1999, 22:35 GMT <LI><strong><A NAME="00652" HREF="msg00652.html">Re: [MUD-Dev] Text Parsing</A></strong>, Matthew Mihaly <a href="mailto:diablo#best,com">diablo#best,com</a>, Thu 10 Jun 1999, 00:14 GMT <LI><strong><A NAME="00659" HREF="msg00659.html">Re: [MUD-Dev] Text Parsing</A></strong>, J C Lawrence <a href="mailto:claw#varesearch,com">claw#varesearch,com</a>, Thu 10 Jun 1999, 02:56 GMT <LI><strong><A NAME="00682" HREF="msg00682.html">Re: [MUD-Dev] Text Parsing</A></strong>, Matthew Mihaly <a href="mailto:diablo#best,com">diablo#best,com</a>, Thu 10 Jun 1999, 06:14 GMT <LI><strong><A NAME="00706" HREF="msg00706.html">Re: [MUD-Dev] Text Parsing</A></strong>, Petri Virkkula <a href="mailto:pvirkkul#iki,fi">pvirkkul#iki,fi</a>, Thu 10 Jun 1999, 17:31 GMT <LI><strong><A NAME="00716" HREF="msg00716.html">Re: [MUD-Dev] Text Parsing</A></strong>, Matthew Mihaly <a href="mailto:diablo#best,com">diablo#best,com</a>, Thu 10 Jun 1999, 21:58 GMT <LI><strong><A NAME="00739" HREF="msg00739.html">Re: [MUD-Dev] Text Parsing</A></strong>, Petri Virkkula <a href="mailto:pvirkkul#iki,fi">pvirkkul#iki,fi</a>, Fri 11 Jun 1999, 03:46 GMT </LI> </LI> </LI> </LI> </LI> </LI> </LI> </UL> </LI> </UL> </LI> </ul> </ul> </ul> </ul> </ul> </ul> </ul> </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>