Re: Circlemud design issues

From: George (greerga@CIRCLEMUD.ORG)
Date: 04/24/98


On Fri, 24 Apr 1998, James Turner wrote:

>Yes, but until a player logs in, their data isn't cached, nor is their
>directory entry, so there is overhead in this.  Unless you cache them
>all, you can only be guaranteed of having a particular file cached
>after the player has logged on.

Once they've logged in, it will remain cached if they lose link or save.

>As for your server keeping 40 meg cached -- how many muds are running
>on it?  Is there a webserver on it?  How many hits?  I can point to
>any number of particular, high-end machines that will support a point
>-- it still isn't proof.

One MUD, two Quake servers, Apache, and GDB.

Mem:   79652K av,  78188K used,   1464K free,  19568K shrd,  10480K buff
Swap:  66492K av,     32K used,  66460K free             29992K cached
    USER   PID %CPU %MEM   VSZ   RSS  SHRD STA  TIM COMMAND
ds       10445  0.0 12.1 10336  9676   856 S   0:04 /home/ds/ds/bin/circle5 -q
ds       10444  0.0  9.6  8280  7652   680 S   0:01 gdb bin/circle5 -d src
quake      129  0.0  8.9 10264  7112   568 S   0:00 ./squake -dedicated 16
quake      134  0.0  7.1 25100  5732   448 S   0:00 ./qwsv +gamedir qwring

   Server uptime: 1 day 12 hours 25 minutes 5 seconds
   Total accesses: 14574 - Total Traffic: 302.7 MB
   CPU Usage: u1.05 s1.46 cu0.1 cs0.05 - 0.00203% CPU load
   0.111 requests/sec - 2420 B/second - 21.3 kB/request
   1 requests currently being processed, 8 idle servers

The one-time not-in-cache will only happen when they first log in.  Every
subsequent access such as losing link or saving will remain cached by the
OS unless you don't have much memory, in which case you can expect
everything to be slow anyway without cache.

>> There's a difference here.  Putting all your headers into one file gives
>> virtuall no benefit with quite a few disadvantages.  Here, we're getting
>> all the advantages of ASCII player files and lose very little.  It's a ffar
>> better tradeoff to have ASCII pfiles than a unified header.
>
>"All the advantages" -- a slight change to binary organization can
>gain those advantages as well.  Further, your arguments clutter the

Once you do that you have increased the binary complexity so much that it
would be better with ASCII pfiles anyway.
* Separate binary pfiles so you can compress people not online
* An offline/online player editor.
* vi is your friend (or pico in my case)
* No more complex than loading/saving the world.
* No slower than loading/saving the world and trivial in comparison.

There's probably more against but I have yet to hear something new from
your arguments.

>> So we extend build_player_index() to scan for gold also, since it already
>> scans for all the player names.  Trivial.
>
>You're saying run build_player_index() every boot, and have it scan in
>each of the text files?  Even the inactive ones?

Yes, you'd be scanning the inactive players in a binary file too.

>A hundred or so ascii files in the world file is one thing.  But
>thousands of players, each maybe 3k (which I doubt, taking into
>account descriptions, equipment, aliases... unless these are separate
>files).  You're saying this won't bring normal servers to a crawl

Sammy has said they will be.

>during boot?  It'll thrash the disk like mad, particularly in a
>heavily used environment.  Worse, the OS's cache won't be able to

No it won't, because when you're done with a file, it can dump the memory
for the next one.

>predict the next file to read, so readahead won't help (unlike binary,
>where it can readahead in the binary file itself).

Sure, but when you're done, _all_ of those files will remain cached until
something else tosses them out.

>Again, you're running on a devoted system, with no other muds loaded,
>on a highend system.  Not all muds in the real world are so lucky.

The Pentium 233MMX did it in .9 seconds, my 486/50 did it in 6.7 seconds.
That's not a horribly long time considering the 2.5 megabytes to parse and
that it compiles the entire MUD in 8 minutes, 20 seconds.

>That is why I said the numbers weren't very relevant -- not just
>because of the file sizes, but also because of the server type.

They're relevant because at least one person does have my setup.  Many
people will have better also.  Those that have worse, will not slow down
dramatically.

>We can argue this on any level you want; file system, disk cache,
>physical disk, whatever.  A big issue is fragmentation resulting from
>their being a large number of ascii files.  Since you untarred the
>circle source at one time, there will be a fair amount of physical
>nearness on the disk of the files.  That will reduce disk time a fair
>bit because seek times won't be an issue.

Big, awful 9 ms hard drive seek times?  100 random seeks at worst would be
900 ms.  Not much when you consider that the worst case.  Or if you like
the extremes, 1000 players would be 9000 ms at absolute worst (ping ponging
hard drive head).  If you have that many players, the rest of your MUD
takes much longer boot anyway, such as the world. (And you should probably
run 'defrag' on your hard drive too.)

>Try this.  Run updatedb at the same time as booting the mud.  Do it on
>a freshly rebooted system.  Maybe have netscape loading at the same
>time, and circle compiling.  That will give you an environment more
>representative of the real world.

Actually, if you noticed earlier, Chris Powell (I believe), has a Pentium
(dual?) II with 384 MB of RAM.  Quite a bit larger than mine, and most of
the MUD hosting services give AMD K6/200MHz or better.

>Now, as for using spares -- are you saying the ascii pfiles should
>have tags like "Spare01: " and such?

If people (or patches) don't rename them, yes they will. Realistically,
every spare should be renamed to something more descriptive but if the
person or patch doesn't put anything more descriptive, we fall back to the
default.  This way they save the information and can rename the field later
(including code to recognize both of course)

>That way they end up uneditable.  There will have to be something lower
>that char_data dealing with all new char_file_u entries.  They will need
>entries somewhere in the interface between the ascii pfiles and the
>char_file_u translation.

Or so you think, at the moment, I doubt it.

--
George Greer  -  Me@Null.net   | Genius may have its limitations, but stupidity
http://www.van.ml.org/~greerga | is not thus handicapped. -- Elbert Hubbard


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST