<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@01C4A341.61225C20">
<!--[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:blue;
        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";}
tt
        {font-family:"Courier New";
        mso-ascii-font-family:"Courier New";
        mso-fareast-font-family:"Times New Roman";
        mso-hansi-font-family:"Courier New";
        mso-bidi-font-family:"Courier New";}
span.EmailStyle19
        {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=blue 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'>But we execute the same binary in the same
path for each server&#8230;? Why the <span class=SpellE>symlink</span>?<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'>------------------------------------<o:p></o:p></span></font></p>

<div>

<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'>Chris Adams</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'>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=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy;mso-no-proof:yes'>&nbsp;<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> Mark J. DeFilippis
[mailto:defilm@acm.org<span class=GramE>] <br>
<b><span style='font-weight:bold'>Sent</span></b></span><b><span
style='font-weight:bold'>:</span></b> 25 September 2004 20:33<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>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><br>
You are thinking application level.&nbsp; This is Kernel level.<br>
I spent lots of time in my career developing real time embedded coding<br>
in Unix/Linux kernels.<br>
<br>
Look at two linuxded files that are not sym linked. But use this:<br>
<br>
ls -li<br>
<br>
Note the left side has a value called an inode.&nbsp; An inode is a unique<br>
identifier for that file.&nbsp; Notice that your two files have different
inodes?<br>
<br>
When the loader goes to load code for your two servers using those<br>
files, each is copied in to swap (so your swap space is n servers * sizeof
executable)<br>
The same is true of code segments. <br>
<br>
If you sym link the two executables (Note they must be on the same<br>
filesystem to do so. If you symlink two files on different file systems,<br>
obviously Linux will have to copy the file to the new file system, and it<br>
will have a new inode number.&nbsp; (This is because each filesystem has<br>
it's own superblock, which maps Inodes to file blocks, and file names.<br>
<br>
The filename if only for human consumption.&nbsp; All Linux cares about is that<br>
inode number.<br>
<br>
anyway... If you symlink the two server files, and now do a &quot;ls -li&quot;,<br>
notice the inode numbers are the same!<br>
<br>
When you execute the server (with sticky bit on) it is copied to swap, <br>
then pages copied in to ram and executed.&nbsp; When the second server<br>
is executed, even though the file has a different path, it has the same<br>
Inode.&nbsp; The linux kernel looks up the inode, and notes this inode has<br>
the sticky bit set, and in fact that it already exists in Swap. It copies<br>
the pointers to the code segments as I previously mentioned, and<br>
begins execution.<br>
<br>
You ask why?<br>
<br>
Because 10 servers your way will load 10 copies in to swap, 10<br>
copies in to memory, etc.&nbsp; Using the method of symlinks, which<br>
is really nothing more than a link in the super block.&nbsp; The super block<br>
maintains all information about which disk blocks belong tio which<br>
files.&nbsp; For your simlink the new file entry simply gets the same<br>
inode id copied to the table.&nbsp; Same inode, same code... With<br>
shared libraries in memory,&nbsp; for the 10 servers only 1 copy<br>
exists in swap. Only 1 copy exists in memory.<br>
<br>
I hope this is more clear.<br>
<br>
Dr. D<br>
<br>
<br>
<br>
At 02:18 AM 9/25/2004, you wrote:<br style='mso-special-character:line-break'>
<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
<![endif]><o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Guess im a little
confuused here, why would you symlink when cod (all quake3 base games) support
multiple users. using fs_basepath and fs_homepath accomplishes the same thing
as symlinking doesnt it?<br>
Jase<br>
NateDog wrote:<br>
<br style='mso-special-character:line-break'>
<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
<![endif]><o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Woah......now there's a
guy who knows his stuff!&nbsp; Awesome tips man!&nbsp; You<br>
really explain things well.&nbsp; Much appreciated.<br>
<br>
--<br>
NateDog<br>
<br>
----- Original Message ----- From: Mark J. DeFilippis<br>
To: cod@icculus.org<br>
Sent: Friday, September 24, 2004 9:59 PM<br>
Subject: RE: [cod] Semi off topic: COD rentals<br>
<br>
<br>
<br>
I had written much about this a while back. I will repeat a bit of<br>
it here for the sake of those who wish to do this. Want to know why<br>
you should do this, why it works and a bit on how it works...<br>
<br>
Linking the binaries allows the CPU to share the same Code segment pages.<br>
Servers<br>
will be allocated their own data segments for both Heap and Stack<br>
(Which grow towards one another)... One of the reasons Ryan was able<br>
to so quickly find that original prob back in 1.1.)<br>
<br>
If there is a write attempt to the code segment, that server/user is given<br>
their own copy. In the case of most of the shared libs in Linux, the code<br>
is reentrant, and hence these writes don't happen.<br>
<br>
One other recommendation, I am not certain if I made...<br>
<br>
You can reduce the spikes you get when a server is restarted by<br>
setting the &quot;Sticky&quot; bit on the executable.&nbsp; (Do a man on
&quot;mode&quot; command)<br>
What this does is the first time the executable is loaded, the entire<br>
executable is copies to SWAP space. Once copied to swap, executable<br>
pages are copied in to ram to be executed.<br>
<br>
The best way to keep a server at optimum is to never have to page.<br>
However, under certain conditions, this does happen.&nbsp; It the executable<br>
is sticky, it remains in swap, and the page segment need only be<br>
brought back in to memory from swap.<br>
<br>
Also note, when a second and subsequent&nbsp; user of the Sym Linked executable<br>
starts his/her server, the executable IS NOT copied in to swap again, it<br>
uses<br>
the one already in swap (hence the concept &quot;sticky&quot;)... it sticks
there.<br>
<br>
Thus on new startup, A call is made to load the executable, however the<br>
Kernel immediately updates the CS and ES code pointers to the shared<br>
memory mbufs where the executable code exists, allocates a DS data<br>
segment, and moves your process back to the scheduler for CPU as<br>
your I/O is complete.<br>
<br>
You skip the copy of the executable to SWAP.<br>
You skip the copy of pages to Real RAM.<br>
You execute off shared pages in memory already with your own set of<br>
executable<br>
&nbsp; registers CS, ES.&nbsp; Get your data segment, and your server starts
up.<br>
<br>
Not only do you save ram, but start impact on the other servers due to I/O<br>
DMA transfer setup, and context switching between system and user space,<br>
but you spare the CPU spike as well.<br>
<br>
Regards<br>
<br>
Dr. D<br>
<br>
<br>
At 05:08 PM 9/24/2004, you wrote:<br>
<br>
I just had that question recently also.&nbsp; I did some research on the
internet<br>
and a lot of peeps are doing symlinks.&nbsp; I tried it with MOH:AA and it
works<br>
beautifully, not sure if that's the &quot;right&quot; way to do it but it's
pretty<br>
cool cause' you have one base install and symlinks in the other client<br>
folders.<br>
<br>
--<br>
NateDog<br>
<br>
<br>
&nbsp;<br>
<br style='mso-special-character:line-break'>
<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
<![endif]><o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>-----Original
Message-----<br>
From: John Kennington [<a href="mailto:john.kennington@buzzcard.gatech.edu"
eudora=autourl>mailto:john.kennington@buzzcard.gatech.edu</a>]<br>
Sent: Friday, September 24, 2004 3:04 PM<br>
To: cod@icculus.org<br>
Subject: RE: [cod] Semi off topic: COD rentals<br>
<br>
Depending on the number of cpus in the box, you can run 10 to 15 CoD<br>
servers per<br>
box.&nbsp; So it is quite cost effective.<br>
<br>
John Kennington<br>
<br>
-----Original Message-----<br>
From: Jafo [<a href="mailto:jafo@nowhere.ca" eudora=autourl>mailto:jafo@nowhere.ca</a>]<br>
Sent: Friday, September 24, 2004 3:58 PM<br>
To: cod@icculus.org<br>
Subject: [cod] Semi off topic: COD rentals<br>
<br>
Hello,<br>
<br>
If this isn't the forum for this question, please forgive me for asking<br>
here.<br>
<br>
There seems like a lot of people on this list that run &quot;server
rental&quot;<br>
operations. Just curious how people are doing that cost effectively?<br>
Obviously one can't run each customer's game server on seperate hardware.<br>
Are people using some sort of &quot;virtual linux&quot; installs to run
multiple<br>
servers on one box with seperate IP addresses? If that is the case how<br>
many servers would one dual 2.4 Xeon w/2gig RAM run?<br>
<br>
Thanks,<br>
Jafo<br>
<br>
&nbsp;&nbsp; <o:p></o:p></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></o:p></span></font></p>

<p style='mso-margin-top-alt:5.0pt;margin-right:0cm;margin-bottom:12.0pt;
margin-left:36.0pt'></x-sigsep><tt><font size=2 face="Courier New"><span
style='font-size:10.0pt'><x-sigsep>S2-------------------------------------------------------------------------------</span></font></tt><font
size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><br>
<tt><font face="Courier New">Mark J. DeFilippis, Ph. D
EE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; defilm@acm.org</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
defilm@ieee.org</font></tt><br style='mso-special-character:line-break'>
<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
<![endif]></span></font><o:p></o:p></p>

</div>

</body>

</html>