<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">


<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 10">
<meta name=Originator content="Microsoft Word 10">
<link rel=File-List href="cid:filelist.xml@01C4A575.BB6D5DC0">
<!--[if gte mso 9]><xml>
 <o:OfficeDocumentSettings>
  <o:DoNotRelyOnCSS/>
 </o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:SpellingState>Clean</w:SpellingState>
  <w:GrammarState>Clean</w:GrammarState>
  <w:DocumentKind>DocumentEmail</w:DocumentKind>
  <w:EnvelopeVis/>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;
        mso-font-charset:0;
        mso-generic-font-family:swiss;
        mso-font-pitch:variable;
        mso-font-signature:553679495 -2147483648 8 0 66047 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {mso-style-parent:"";
        margin:0cm;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:12.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;
        text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;
        text-underline:single;}
p
        {mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        mso-pagination:widow-orphan;
        font-size:12.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:"Times New Roman";}
span.EmailStyle17
        {mso-style-type:personal-reply;
        mso-style-noshow:yes;
        mso-ansi-font-size:10.0pt;
        mso-bidi-font-size:10.0pt;
        font-family:Arial;
        mso-ascii-font-family:Arial;
        mso-hansi-font-family:Arial;
        mso-bidi-font-family:Arial;
        color:navy;}
span.SpellE
        {mso-style-name:"";
        mso-spl-e:yes;}
span.GramE
        {mso-style-name:"";
        mso-gram-e:yes;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;
        mso-header-margin:35.4pt;
        mso-footer-margin:35.4pt;
        mso-paper-source:0;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 10]>
<style>
 /* Style Definitions */ 
 table.MsoNormalTable
        {mso-style-name:"Table Normal";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-parent:"";
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin:0cm;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Times New Roman";}
</style>
<![endif]-->
</head>

<body lang=EN-GB link=blue vlink=purple style='tab-interval:36.0pt'>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Hi Richard,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>For us we have a control panel on a
central server, although the control panel can easily be put on any box with
Apache etc. The panel then interfaces with the main database for some of its
information, and it issues instructions out to the slave boxes by means of an
in-house TCP/IP server / client. The slave boxes then connect back into the DB
for more information, for example to fetch out configuration information or to
get the scripts for server setups.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>For changes, if it&#8217;s a <span
class=SpellE>filesystem</span> change (modified files with a new release for
example)<span class=GramE>,</span> it&#8217;s picked up by our daily update
scripts as a module which needs to be updated. The files are transferred
through our TCP/IP server. If we need to manually deploy a change we can select
specific modules in our staff control panel to be queued for transfer on each
relevant slave box. These slave boxes then request the data to be transferred.
If it&#8217;s a change to server setup routines then these are just modified in
the central database, or stored with the new module if we keep the old one for
backwards compatibility, and will be used whenever a configuration is made or
applied thereafter.<o:p></o:p></span></font></p>

<div>

<p><font size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:navy;mso-no-proof:yes'>---------------------------------------<br>
Chris Adams<br>
Fragzzhost</span></font><font color=navy><span style='color:navy;mso-no-proof:
yes'><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy;mso-no-proof:yes'>T (07005) 964 855</span></font><font
color=navy><span style='color:navy;mso-no-proof:yes'><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy;mso-no-proof:yes'>F (07005) 964 857</span></font><font
color=navy><span style='color:navy;mso-no-proof:yes'><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy;mso-no-proof:yes'><a
href="http://www.fragzzhost.com">www.fragzzhost.com</a></span></font><font
color=navy><span style='color:navy;mso-no-proof:yes'><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy;mso-no-proof:yes'>&nbsp;</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 face=Tahoma><span
lang=EN-US style='font-size:10.0pt;font-family:Tahoma;mso-ansi-language:EN-US'>-----Original
Message-----<br>
<b><span style='font-weight:bold'>From:</span></b> Richard Harrison [mailto:richardnharrison@btinternet.com<span
class=GramE>] <br>
<b><span style='font-weight:bold'>Sent</span></b></span><b><span
style='font-weight:bold'>:</span></b> 28 September 2004 10:16<br>
<b><span style='font-weight:bold'>To:</span></b> cod@icculus.org<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [cod] Semi off topic:
COD rentals</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Hi Jay and Chris,<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Can i ask a couple of
questions about your control panels?<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Do you host your control
panel on&nbsp;a central server or is it a web server thats on the game server?<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>If its the first (and i
am presuming it is the first) how do you push the changes out to the game
servers?<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>I am not asking for trade
secrets but if you could explain things in general terms it would be
appreciated.<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Ta,<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Richard.<br>
<br>
<b><i><span style='font-weight:bold;font-style:italic'>Jay Vasallo
&lt;haze@clanwarz.net&gt;</span></i></b> wrote:<o:p></o:p></span></font></p>

</div>

<blockquote style='border:none;border-left:solid #1010FF 1.5pt;padding:0cm 0cm 0cm 4.0pt;
margin-left:3.75pt;margin-top:5.0pt;margin-bottom:5.0pt'>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>I keep on knocking but I can't get in....<br>
<br>
<br>
----- Original Message ----- <br>
From: &quot;Chris Adams&quot; <br>
<CHRIS@FRAGZZHOST.COM>To: <br>
<COD@ICCULUS.ORG>Sent: Monday, September 27, 2004 9:53 AM<br>
Subject: RE: [cod] Semi off topic: COD rentals<br>
<br>
<br>
&gt; <br>
&gt; Technically you shouldn't have to be logged in, but that tour is a bit<br>
&gt; out-dated.<br>
&gt; <br>
&gt; http://cp.fragzz.com/fragzzPanel<br>
&gt; u: trial<br>
&gt; p: sparrow<br>
&gt; <br>
&gt; That should give you a slightly better view of things :-)<br>
&gt; Let me know when you're done looking and I'll change the pass again... I<br>
&gt; got bored of turning the server off every so often last time someone<br>
&gt; asked for the trial details :-)<br>
&gt; <br>
&gt; ----------------------------------------------<br>
&gt; Chris Adams<br>
&gt; Fragzzhost<br>
&gt; <br>
&gt; T (07005) 964 855<br>
&gt; F (07005) 964 857<br>
&gt; www.fragzzhost.com<br>
&gt; <br>
&gt; <br>
&gt; -----Original Message-----<br>
&gt; From: Jay Vasallo [mailto:haze@clanwarz.net] <br>
&gt; Sent: 27 September 2004 19:05<br>
&gt; To: cod@icculus.org<br>
&gt; Subject: Re: [cod] Semi off topic: COD rentals<br>
&gt; <br>
&gt; Hi Chris,<br>
&gt; <br>
&gt; http://cp.fragzz.com/tour<br>
&gt; <br>
&gt; Do I have to be logged in to see this? I would like to see it. We have<br>
&gt; one <br>
&gt; almost done. Even thou it says sof2, it will work for any gamne with a <br>
&gt; config. But then this is the old one and not the updated one.<br>
&gt; http://www.clanwarzgamingservers.com/sof2/index.php<br>
&gt; <br>
&gt; Anyone familar with kkron?<br>
&gt; <br>
&gt; <br>
&gt; ----- Original Message ----- <br>
&gt; From: &quot;Chris Adams&quot; <br>
<CHRIS@FRAGZZHOST.COM>&gt; To: <br>
<COD@ICCULUS.ORG>&gt; Sent: Monday, September 27, 2004 8:55 AM<br>
&gt; Subject: RE: [cod] Semi off topic: COD rentals<br>
&gt; <br>
&gt; <br>
&gt;&gt; Yeah we used to do things like that but since I've written the<br>
&gt;&gt; all-powerful multi-gaming control system ;-) it handles all that for<br>
&gt; us<br>
&gt;&gt; (thank god) so we don't really do anything with IPs and ports these<br>
&gt; days<br>
&gt;&gt; since we have our master lists imported into a query / join program<br>
&gt;&gt; luckily. Also it's a bit impractical on the larger boxes that can hold<br>
&gt;&gt; up to say 20 customers since most ISPs will only give up to 5 or 8<br>
&gt; free<br>
&gt;&gt; IPs, if any at all and often less for dedicated servers.<br>
&gt;&gt;<br>
&gt;&gt; -------------------------------------------<br>
&gt;&gt; Chris Adams<br>
&gt;&gt; Fragzzhost<br>
&gt;&gt;<br>
&gt;&gt; T (07005) 964 855<br>
&gt;&gt; F (07005) 964 857<br>
&gt;&gt; www.fragzzhost.com<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; -----Original Message-----<br>
&gt;&gt; From: Nathan P. [mailto:natedog550@hotmail.com]<br>
&gt;&gt; Sent: 27 September 2004 16:27<br>
&gt;&gt; To: cod@icculus.org<br>
&gt;&gt; Subject: RE: [cod] Semi off topic: COD rentals<br>
&gt;&gt;<br>
&gt;&gt; The main reason in my opinion for doing virtual interfaces is so that<br>
&gt;&gt; you<br>
&gt;&gt; can give each client their own IP - it still hits the same physical<br>
&gt;&gt; adapter<br>
&gt;&gt; but it's nice having separate IPs per server. The only thing<br>
&gt; hindering<br>
&gt;&gt; some<br>
&gt;&gt; people from that is having to buy the IPs. Most sell for like<br>
&gt; $10/month<br>
&gt;&gt; an<br>
&gt;&gt; IP. But if you were short on cash you could do the port thing but I<br>
&gt;&gt; like<br>
&gt;&gt; having my own IP personally. Easier to keep up with client servers in<br>
&gt;&gt; my<br>
&gt;&gt; opinion :)<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; NateDog<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt; -----Original Message-----<br>
&gt;&gt;&gt; From: Chris Adams [mailto:chris@fragzzhost.com]<br>
&gt;&gt;&gt; Sent: Monday, September 27, 2004 10:05 AM<br>
&gt;&gt;&gt; To: cod@icculus.org<br>
&gt;&gt;&gt; Subject: RE: [cod] Semi off topic: COD rentals<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; No problem - good luck! :-)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; You don't even need virtual interfaces actually if you just change<br>
&gt; the<br>
&gt;&gt;&gt; port number with the net_port cvar :-). I can't remember exactly
how<br>
&gt;&gt; CoD<br>
&gt;&gt;&gt; deals with it, but if you put it on your command line and also in<br>
&gt;&gt;&gt; autoexec.cfg followed by a net_restart, you'll definitely be safe<br>
&gt; :-).<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Does anyone know exactly how CoD deals with it? It seems to vary<br>
&gt;&gt; between<br>
&gt;&gt;&gt; the Q3-based games so I have our control engine just do it in
every<br>
&gt;&gt;&gt; possible way usually to make sure it works. Would be nice to know
:-)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; ----------------------------------------<br>
&gt;&gt;&gt; Chris Adams<br>
&gt;&gt;&gt; Fragzzhost<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; T (07005) 964 855<br>
&gt;&gt;&gt; F (07005) 964 857<br>
&gt;&gt;&gt; www.fragzzhost.com<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; -----Original Message-----<br>
&gt;&gt;&gt; From: Jafo [mailto:jafo@nowhere.ca]<br>
&gt;&gt;&gt; Sent: 27 September 2004 14:42<br>
&gt;&gt;&gt; To: cod@icculus.org<br>
&gt;&gt;&gt; Subject: RE: [cod] Semi off topic: COD rentals<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Hello everyone,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Thanks to everyone who responded to this thread! I was really<br>
&gt;&gt; expecting<br>
&gt;&gt;&gt; hosting companies to be pretty closed lipped about this! Picked up<br>
&gt;&gt; some<br>
&gt;&gt;&gt; REALLY good information from people's posts thank you very much!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I'm going to purchase a box, co-lo it and get things started!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I never even thought about running one set of binaries with
virtual<br>
&gt;&gt;&gt; interfaces, that really beats virtual OS installs! Not to mention
the<br>
&gt;&gt;&gt; gains by running one set of binaries with sticky bit set!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Mark, you provided some really good in depth feedback, I really<br>
&gt;&gt;&gt; appreciate<br>
&gt;&gt;&gt; it!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Thanks all,<br>
&gt;&gt;&gt; Keith.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Sat, 25 Sep 2004, Mark J. DeFilippis wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; If you are executing the same executable and can use
parameters on<br>
&gt;&gt; the<br>
&gt;&gt;&gt; &gt; command line that is<br>
&gt;&gt;&gt; &gt; fine. It is the same inode. The question I was answering was
for<br>
&gt; a<br>
&gt;&gt;&gt; person<br>
&gt;&gt;&gt; &gt; who appeared to<br>
&gt;&gt;&gt; &gt; not understand why, if Linux is in fact a
multiuser/multi-tasking<br>
&gt;&gt; OS,<br>
&gt;&gt;&gt; what<br>
&gt;&gt;&gt; &gt; difference does<br>
&gt;&gt;&gt; &gt; it make if I load from one file or many copies of the file.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; In the scenario you present... if you are executing the same
file,<br>
&gt;&gt; it<br>
&gt;&gt;&gt; is<br>
&gt;&gt;&gt; &gt; the same<br>
&gt;&gt;&gt; &gt; inode. Make it sticky... and you have the same as the symlink<br>
&gt;&gt;&gt; scenario.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; For those admins that wish to have a separate executable in
the<br>
&gt; user<br>
&gt;&gt;&gt; &gt; space (on perhaps a server where the admin choose to have the<br>
&gt;&gt;&gt; executable<br>
&gt;&gt;&gt; &gt; in the users space with his other files and configs) the
symlink<br>
&gt;&gt;&gt; method works<br>
&gt;&gt;&gt; &gt; very well.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; If your servers are being spawned by calling the same
executable,<br>
&gt;&gt; you<br>
&gt;&gt;&gt; in fact<br>
&gt;&gt;&gt; &gt; are correct, you get the same benefits. For added savings on
load,<br>
&gt;&gt;&gt; make the<br>
&gt;&gt;&gt; &gt; executable<br>
&gt;&gt;&gt; &gt; sticky, and your golden.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Dr. D<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; At 03:51 PM 9/25/2004, you wrote:<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;But we execute the same binary in the same path for each
server&amp;?<br>
&gt;&gt; Why<br>
&gt;&gt;&gt; the<br>
&gt;&gt;&gt; &gt; &gt;symlink?<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;------------------------------------<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Chris Adams<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Fragzzhost<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;T (07005) 964 855<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;F (07005) 964 857<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<HTTP: www.fragzzhost.com>www.fragzzhost.com<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;-----Original Message-----<br>
&gt;&gt;&gt; &gt; &gt;From: Mark J. DeFilippis [mailto:defilm@acm.org]<br>
&gt;&gt;&gt; &gt; &gt;Sent: 25 September 2004 20:33<br>
&gt;&gt;&gt; &gt; &gt;To: cod@icculus.org<br>
&gt;&gt;&gt; &gt; &gt;Subject: Re: [cod] Semi off topic: COD rentals<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;You are thinking application level. This is Kernel level.<br>
&gt;&gt;&gt; &gt; &gt;I spent lots of time in my career developing real time
embedded<br>
&gt;&gt;&gt; coding<br>
&gt;&gt;&gt; &gt; &gt;in Unix/Linux kernels.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Look at two linuxded files that are not sym linked. But
use this:<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;ls -li<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Note the left side has a value called an inode. An inode
is a<br>
&gt;&gt; unique<br>
&gt;&gt;&gt; &gt; &gt;identifier for that file. Notice that your two files have<br>
&gt;&gt; different<br>
&gt;&gt;&gt; inodes?<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;When the loader goes to load code for your two servers
using those<br>
&gt;&gt;&gt; &gt; &gt;files, each is copied in to swap (so your swap space is n
servers<br>
&gt; *<br>
&gt;&gt;&gt; sizeof<br>
&gt;&gt;&gt; &gt; &gt;executable)<br>
&gt;&gt;&gt; &gt; &gt;The same is true of code segments.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;If you sym link the two executables (Note they must be on
the same<br>
&gt;&gt;&gt; &gt; &gt;filesystem to do so. If you symlink two files on
different file<br>
&gt;&gt;&gt; systems,<br>
&gt;&gt;&gt; &gt; &gt;obviously Linux will have to copy the file to the new
file system,<br>
&gt;&gt;&gt; and it<br>
&gt;&gt;&gt; &gt; &gt;will have a new inode number. (This is because each
filesystem<br>
&gt; has<br>
&gt;&gt;&gt; &gt; &gt;it's own superblock, which maps Inodes to file blocks,
and file<br>
&gt;&gt;&gt; names.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;The filename if only for human consumption. All Linux
cares about<br>
&gt;&gt; is<br>
&gt;&gt;&gt; that<br>
&gt;&gt;&gt; &gt; &gt;inode number.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;anyway... If you symlink the two server files, and now do
a &quot;ls<br>
&gt;&gt; -li&quot;,<br>
&gt;&gt;&gt; &gt; &gt;notice the inode numbers are the same!<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;When you execute the server (with sticky bit on) it is
copied to<br>
&gt;&gt;&gt; swap,<br>
&gt;&gt;&gt; &gt; &gt;then pages copied in to ram and executed. When the second
server<br>
&gt;&gt;&gt; &gt; &gt;is executed, even though the file has a different path,
it has the<br>
&gt;&gt;&gt; same<br>
&gt;&gt;&gt; &gt; &gt;Inode. The linux kernel looks up the inode, and notes
this inode<br>
&gt;&gt; has<br>
&gt;&gt;&gt; &gt; &gt;the sticky bit set, and in fact that it already exists in
Swap. It<br>
&gt;&gt;&gt; copies<br>
&gt;&gt;&gt; &gt; &gt;the pointers to the code segments as I previously
mentioned, and<br>
&gt;&gt;&gt; &gt; &gt;begins execution.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;You ask why?<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Because 10 servers your way will load 10 copies in to
swap, 10<br>
&gt;&gt;&gt; &gt; &gt;copies in to memory, etc. Using the method of symlinks,
which<br>
&gt;&gt;&gt; &gt; &gt;is really nothing more than a link in the super block.
The super<br>
&gt;&gt;&gt; block<br>
&gt;&gt;&gt; &gt; &gt;maintains all information about which disk blocks belong
tio which<br>
&gt;&gt;&gt; &gt; &gt;files. For your simlink the new file entry simply gets
the same<br>
&gt;&gt;&gt; &gt; &gt;inode id copied to the table. Same inode, same code...
With<br>
&gt;&gt;&gt; &gt; &gt;shared libraries in memory, for the 10 servers only 1 copy<br>
&gt;&gt;&gt; &gt; &gt;exists in swap. Only 1 copy exists in memory.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;I hope this is more clear.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Dr. D<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;At 02:18 AM 9/25/2004, you wrote:<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Guess im a little confuused here, why would you symlink
when cod<br>
&gt;&gt; (all<br>
&gt;&gt;&gt; &gt; &gt;quake3 base games) support multiple users. using
fs_basepath and<br>
&gt;&gt;&gt; &gt; &gt;fs_homepath accomplishes the same thing as symlinking
doesnt it?<br>
&gt;&gt;&gt; &gt; &gt;Jase<br>
&gt;&gt;&gt; &gt; &gt;NateDog wrote:<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Woah......now there's a guy who knows his stuff! Awesome
tips<br>
&gt; man!<br>
&gt;&gt;&gt; You<br>
&gt;&gt;&gt; &gt; &gt;really explain things well. Much appreciated.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;--<br>
&gt;&gt;&gt; &gt; &gt;NateDog<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;----- Original Message ----- From: Mark J. DeFilippis<br>
&gt;&gt;&gt; &gt; &gt;To: cod@icculus.org<br>
&gt;&gt;&gt; &gt; &gt;Sent: Friday, September 24, 2004 9:59 PM<br>
&gt;&gt;&gt; &gt; &gt;Subject: RE: [cod] Semi off topic: COD rentals<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;I had written much about this a while back. I will repeat
a bit of<br>
&gt;&gt;&gt; &gt; &gt;it here for the sake of those who wish to do this. Want
to know<br>
&gt; why<br>
&gt;&gt;&gt; &gt; &gt;you should do this, why it works and a bit on how it
works...<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Linking the binaries allows the CPU to share the same
Code segment<br>
&gt;&gt;&gt; pages.<br>
&gt;&gt;&gt; &gt; &gt;Servers<br>
&gt;&gt;&gt; &gt; &gt;will be allocated their own data segments for both Heap
and Stack<br>
&gt;&gt;&gt; &gt; &gt;(Which grow towards one another)... One of the reasons
Ryan was<br>
&gt;&gt; able<br>
&gt;&gt;&gt; &gt; &gt;to so quickly find that original prob back in 1.1.)<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;If there is a write attempt to the code segment, that
server/user<br>
&gt;&gt; is<br>
&gt;&gt;&gt; given<br>
&gt;&gt;&gt; &gt; &gt;their own copy. In the case of most of the shared libs in
Linux,<br>
&gt;&gt; the<br>
&gt;&gt;&gt; code<br>
&gt;&gt;&gt; &gt; &gt;is reentrant, and hence these writes don't happen.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;One other recommendation, I am not certain if I made...<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;You can reduce the spikes you get when a server is
restarted by<br>
&gt;&gt;&gt; &gt; &gt;setting the &quot;Sticky&quot; bit on the executable. (Do
a man on &quot;mode&quot;<br>
&gt;&gt;&gt; command)<br>
&gt;&gt;&gt; &gt; &gt;What this does is the first time the executable is
loaded, the<br>
&gt;&gt; entire<br>
&gt;&gt;&gt; &gt; &gt;executable is copies to SWAP space. Once copied to swap,<br>
&gt; executable<br>
&gt;&gt;&gt; &gt; &gt;pages are copied in to ram to be executed.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;The best way to keep a server at optimum is to never have
to page.<br>
&gt;&gt;&gt; &gt; &gt;However, under certain conditions, this does happen. It
the<br>
&gt;&gt;&gt; executable<br>
&gt;&gt;&gt; &gt; &gt;is sticky, it remains in swap, and the page segment need
only be<br>
&gt;&gt;&gt; &gt; &gt;brought back in to memory from swap.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Also note, when a second and subsequent user of the Sym
Linked<br>
&gt;&gt;&gt; executable<br>
&gt;&gt;&gt; &gt; &gt;starts his/her server, the executable IS NOT copied in to
swap<br>
&gt;&gt; again,<br>
&gt;&gt;&gt; it<br>
&gt;&gt;&gt; &gt; &gt;uses<br>
&gt;&gt;&gt; &gt; &gt;the one already in swap (hence the concept
&quot;sticky&quot;)... it sticks<br>
&gt;&gt;&gt; there.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Thus on new startup, A call is made to load the
executable,<br>
&gt; however<br>
&gt;&gt;&gt; the<br>
&gt;&gt;&gt; &gt; &gt;Kernel immediately updates the CS and ES code pointers to
the<br>
&gt;&gt; shared<br>
&gt;&gt;&gt; &gt; &gt;memory mbufs where the executable code exists, allocates
a DS data<br>
&gt;&gt;&gt; &gt; &gt;segment, and moves your process back to the scheduler for
CPU as<br>
&gt;&gt;&gt; &gt; &gt;your I/O is complete.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;You skip the copy of the executable to SWAP.<br>
&gt;&gt;&gt; &gt; &gt;You skip the copy of pages to Real RAM.<br>
&gt;&gt;&gt; &gt; &gt;You execute off shared pages in memory already with your
own set<br>
&gt; of<br>
&gt;&gt;&gt; &gt; &gt;executable<br>
&gt;&gt;&gt; &gt; &gt; registers CS, ES. Get your data segment, and your server<br>
&gt; starts<br>
&gt;&gt;&gt; up.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Not only do you save ram, but start impact on the other
servers<br>
&gt; due<br>
&gt;&gt;&gt; to I/O<br>
&gt;&gt;&gt; &gt; &gt;DMA transfer setup, and context switching between system
and user<br>
&gt;&gt;&gt; space,<br>
&gt;&gt;&gt; &gt; &gt;but you spare the CPU spike as well.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Regards<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Dr. D<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;At 05:08 PM 9/24/2004, you wrote:<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;I just had that question recently also. I did some
research on<br>
&gt; the<br>
&gt;&gt;&gt; internet<br>
&gt;&gt;&gt; &gt; &gt;and a lot of peeps are doing symlinks. I tried it with
MOH:AA and<br>
&gt;&gt; it<br>
&gt;&gt;&gt; works<br>
&gt;&gt;&gt; &gt; &gt;beautifully, not sure if that's the &quot;right&quot; way
to do it but it's<br>
&gt;&gt;&gt; pretty<br>
&gt;&gt;&gt; &gt; &gt;cool cause' you have one base install and symlinks in the
other<br>
&gt;&gt;&gt; client<br>
&gt;&gt;&gt; &gt; &gt;folders.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;--<br>
&gt;&gt;&gt; &gt; &gt;NateDog<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;-----Original Message-----<br>
&gt;&gt;&gt; &gt; &gt;From: John Kennington [mailto:john.kennington@buzzcard.gatech.edu]<br>
&gt;&gt;&gt; &gt; &gt;Sent: Friday, September 24, 2004 3:04 PM<br>
&gt;&gt;&gt; &gt; &gt;To: cod@icculus.org<br>
&gt;&gt;&gt; &gt; &gt;Subject: RE: [cod] Semi off topic: COD rentals<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Depending on the number of cpus in the box, you can run
10 to 15<br>
&gt;&gt; CoD<br>
&gt;&gt;&gt; &gt; &gt;servers per<br>
&gt;&gt;&gt; &gt; &gt;box. So it is quite cost effective.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;John Kennington<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;-----Original Message-----<br>
&gt;&gt;&gt; &gt; &gt;From: Jafo [mailto:jafo@nowhere.ca]<br>
&gt;&gt;&gt; &gt; &gt;Sent: Friday, September 24, 2004 3:58 PM<br>
&gt;&gt;&gt; &gt; &gt;To: cod@icculus.org<br>
&gt;&gt;&gt; &gt; &gt;Subject: [cod] Semi off topic: COD rentals<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Hello,<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;If this isn't the forum for this question, please forgive
me for<br>
&gt;&gt;&gt; asking<br>
&gt;&gt;&gt; &gt; &gt;here.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;There seems like a lot of people on this list that run
&quot;server<br>
&gt;&gt;&gt; rental&quot;<br>
&gt;&gt;&gt; &gt; &gt;operations. Just curious how people are doing that cost<br>
&gt;&gt; effectively?<br>
&gt;&gt;&gt; &gt; &gt;Obviously one can't run each customer's game server on
seperate<br>
&gt;&gt;&gt; hardware.<br>
&gt;&gt;&gt; &gt; &gt;Are people using some sort of &quot;virtual linux&quot;
installs to run<br>
&gt;&gt;&gt; multiple<br>
&gt;&gt;&gt; &gt; &gt;servers on one box with seperate IP addresses? If that is
the case<br>
&gt;&gt;&gt; how<br>
&gt;&gt;&gt; &gt; &gt;many servers would one dual 2.4 Xeon w/2gig RAM run?<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;Thanks,<br>
&gt;&gt;&gt; &gt; &gt;Jafo<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;----------------------------------------------------------------------<br>
&gt; -<br>
&gt;&gt;&gt; -----<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;S2--------------------------------------------------------------------<br>
&gt; -<br>
&gt;&gt;&gt; ----------<br>
&gt;&gt;&gt; &gt; &gt;Mark J. DeFilippis, Ph. D EE defilm@acm.org<br>
&gt;&gt;&gt; &gt; &gt; defilm@ieee.org<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt; S2----------------------------------------------------------------------<br>
&gt;&gt;&gt; ---------<br>
&gt;&gt;&gt; &gt; Mark J. DeFilippis, Ph. D EE defilm@acm.org<br>
&gt;&gt;&gt; &gt; defilm@ieee.org<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; <br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt;<o:p></o:p></span></font></p>

</blockquote>

</div>

</body>

</html>