<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/styles/XMLStylesDoc_xhtml11_en.xsl"?><!DOCTYPE document SYSTEM "/schemas/XMLStyles10.dtd">
<document xmlns="http://XMLStyles.com/namespaces/styles" xmlns:xst="http://XMLStyles.com/namespaces/styles" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:date="http://exslt.org/dates-and-times">
   <noxml>
      <p xmlns="http://www.w3.org/1999/xhtml"/>
      <!-- You are viewing the source.  The following message should be ignored if you did "View Source" in your browser. -->
      <p xmlns="http://www.w3.org/1999/xhtml">
ATTENTION: XML WEB PAGES NOT SUPPORTED
   If you see this message, your current browser does not support the
   1999 XSLT 1.0 (or later) standard for XML web pages such as this one.
   Please upgrade your browser to a newer version
   that supports 1999 or later standards such as:
      Mozilla Firefox version 1.0.2 or later (GetFirefox -&gt; http://www.GetFirefox.com/)
      Netscape version 8 or later
      Safari version 1.3 or later
      Opera version 9 or later
      Microsoft Internet Explorer (MSIE) version 5 or later
   For further assistance, contact the software vendor for your browser.
   To go to the X<!-- extended HTML -->HTML version of this page click the following link:
<a href="index.html">index.html</a>
      </p>
      <p xmlns="http://www.w3.org/1999/xhtml">&#160;</p>
   </noxml>
   <path>/computers/</path>
   <site>How To Guides</site>
   <logo xlink:type="simple" xlink:href="/images/howtohome.jpg" media="screen" width="240" height="34">How To Guides</logo>
   <logo xlink:type="simple" xlink:href="/images/howtoguides.jpg" media="print" width="240" height="34">How To Guides</logo>
   <logo xlink:type="simple" xlink:href="/images/howtoguidesmobile.jpg" media="handheld" width="150" height="17">How To Guides</logo>
   <navigation where="sections">
      <label>How To Guides</label>
      <link xlink:type="simple" xlink:href="/business/index.xml">Business</link>
      <link xlink:type="simple" xlink:href="/computers/index.xml">Computers</link>
      <link xlink:type="simple" xlink:href="/computers/databases/index.xml">Databases</link>
      <link xlink:type="simple" xlink:href="/internet/index.xml">Internet</link>
      <link xlink:type="simple" xlink:href="/mobile/index.xml">Mobile</link>
      <link xlink:type="simple" xlink:href="/money/index.xml">Money</link>
      <link xlink:type="simple" xlink:href="/movies/index.xml">Movies</link>
      <link xlink:type="simple" xlink:href="/computers/os/index.xml">Operating Systems</link>
   </navigation>
   <section id="body" type="body">
      <pages name="index">
         <title>How To Guides for Computers</title>
         <label>Computers</label>
         <navigation where="pages">
            <label>Computers</label>
            <link xlink:type="simple" xlink:href="index.xml">Summary</link>
            <link xlink:type="simple" xlink:href="config.xml">Configuration</link>
         </navigation>
         <h1>"How To" Guides for Computers</h1>
         <page id="N10078" name="config">
            <title>How To Configure Servers or Other Computer Systems</title>
            <label>Configuration</label>
            <description>How to determine the number of servers or processors needed.
            </description>
            <navigation where="up">
               <link xlink:type="simple" xlink:href="index.xml">Computers</link>
            </navigation>
            <h1>Horizontal scalability (more processors) vs. vertical scalability (faster processors)</h1>
            <subpage id="N10088" name="scalability">
               <label>Scalability</label>
               <h1>Scalability</h1>
               <p>There are a number of advantages of vertical scalability (faster processors)
                  over horizontal scalability (more processors):
               </p>
               <ul>
                  <li>For a lot of software, license costs and maintenance fees depend
                     on the number of processors where the software is running,
                     and, in some cases, the size of the processors.
                     In the cases where the size of the processors is a factor, the
                     cost for a 2x processor is seldom twice that of a 1x processor.
                     Where the sofware costs depend only on the number of processors regardless of size, it's a
                     no-brainer; the cost increases when adding more processors, but not when adding faster ones.
                  </li>
                  <li>Upgrading to faster processors provides as much improvement in
                     <link xlink:type="simple" xlink:href="#calc">throughput (see calculations below)</link>
                     as adding enough
                     <link xlink:type="simple" xlink:href="#throughput">additional processors</link>
                     to reach the same total
                     <acronym term="Millions Of Instructions Per Second">MIPs</acronym>.
                     Even if the original processors must be removed and the one-time purchase
                     price of the new ones is more than adding more processors of the same speed,
                     the reduction in ongoing software costs can easily offset that expense.
                  </li>
                  <li>Faster processors can improve response time and reduce transaction queue
                     wait times, while additional processors can only do so if transactions
                     can be split across processors so that they can run in parallel.
                     As a result, scaling vertically is more likely to provide noticeable
                     improvements, such as making web pages load faster.
                  </li>
               </ul>
            </subpage>
            <subpage id="calc" name="calculations">
               <label>Calculations</label>
               <h1>Throughput Calculations</h1>
               <p>My first college computer course was long enough ago that some of the
                  exercises included the calculations for throughput and disk seek times.
                  With RAID and caching nowadays, disk seek times aren't very relevant
                  for end consumers, but the throughput calculations taught us
                  something about CPUs that was quite counterintuitive, that is:
               </p>
               <p class="indent">
                  <b>All else being equal, the <i>fewer</i>
                  processors you have, the better.</b> Put another way,
                  vertical scalability is better than horizontal scalability.
                  The reason is that vertical scalability not only gives you the same increases in
                  throughput as horizontal scalability, but also provides increases in performance,
                  regardless of whether or not the workload can be executed in parallel.
               </p>
            </subpage>
            <subpage id="N100B6" name="example">
               <label>Example</label>
               <h1>Example</h1>
               <p>Consider this example.  Say you are sizing a system for
                  an average load of three transactions-per-second and a
                  maximum of five transactions-per-second at 80% utilization
                  and that typical transactions take around 500 megacycles.
                  You have a choice between two 1 GHz processors at $100 each
                  or one 2 GHz processor at $200 ($100 per GHz in both cases).
               </p>
               <p>If the transactions arrive at regular intervals, the response
                  time for the two 1 GHz processors will be .5 second,
                  and the response time for the 2 GHz processor will be .25 second.
               </p>
               <p>Now consider the case where, during a given two-second interval,
                  the six transactions arrive at two-tenths of a second intervals.
                  What are the response times?  If needed, draw three two-second
                  long timelines, one above another, and start the transactions
                  at the .1, .3, .5, .7, .9 and 1.1 second marks.
               </p>
               <p>With two 1 GHz processors, the response time of the first two
                  500 megacycle transactions,
                  which are running on separate processors, will be .5 second.
                  The next four transactions will have a .1 second wait time and
                  .5 second processing time, for a total of .6 second response.
                  Therefore, the average response time will be .57 second.
               </p>
               <p>With one 2 GHz processor, the six transactions will have
                  wait times of 0, .05, .1, .15, .2 and .25 and reponse
                  times of .25, .3, .35, .4, .45 and .5 respectively
                  for an average response time of .37 second.
                  So even under a varying load, the single-processor configuration
                  is able to maintain much faster response times.
               </p>
            </subpage>
            <subpage id="throughput" name="throughput">
               <label>Throughput</label>
               <h1>Throughput vs. Actual Bottleneck</h1>
               <p>So the moral is that, scaling horizontally by adding more processors
                  to your system configuration or more computers to your network
                  will only improve throughput.  If the bottleneck in the system
                  isn't throughput, you are likely to see no improvement at all.
               </p>
            </subpage>
            <subpage id="N100CF" name="responsetime">
               <label>Response or Load Time</label>
               <h1>Response Time / Page Load Time</h1>
               <p>If instead you need to improve transaction response time or
                  web page delivery times, you need to scale the system vertically,
                  by upgrading the system with larger, faster processors.
               </p>
            </subpage>
            <subpage id="N100D7" name="dualprocessors">
               <label>Dual Processors</label>
               <p>There's just one caveat.  In systems with fairly rigid process priorities,
                  there may be an advantage to having two processors in a single box,
                  so that a second processor is available if one processor
                  is tied up with a high priority task.  Having a second processor
                  available may be useful if it becomes necessary to terminate a runaway
                  high priority task and someone needs to get through the lower priority
                  login process because no high priority users are already logged in.
                  So a good rule of thumb is:
               </p>
               <p class="indent">
                  <b>Buy a single, dual-processor system with the fastest
                  processors available, or at least fast enough to handle the expeced load.
                  Upgrade the speed of the processors as needed and available.</b>
                  Consider adding additional processors or servers <i>only</i> if you
                  are absolutely sure that your bottleneck is with throughput,
                  not I/O
                  or some other resource, and either no faster processors
                  are currently available or else there is no advantage to
                  improving response time or speed of web page delivery.
               </p>
            </subpage>
            <updated local="2007-01-28">Sunday January 28, 2007</updated>
         </page>
      </pages>
   </section>
   <copyright>Copyright © 2007 How To Guides .com. Alteration of content, including addition of any function such as hypertext links or pop-up advertising, or interference with the hypertext links or other functions of this site is expressly prohibited.</copyright>
   <disclaimer>All information, links, forms, applications and other items on this site or obtained from it are provided <b>AS IS</b>, WITHOUT WARRANTY OF ANY KIND EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</disclaimer>
   <ids urchin="UA-779578-2"/>
</document>

