<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>irama.org</title>
	<atom:link href="http://irama.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://irama.org</link>
	<description>the web and I</description>
	<lastBuildDate>Fri, 05 Feb 2010 00:47:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WordPress performance revisited</title>
		<link>http://irama.org/news/2009/12/06/wordpress-performance-revisited/</link>
		<comments>http://irama.org/news/2009/12/06/wordpress-performance-revisited/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 01:54:26 +0000</pubDate>
		<dc:creator>Andrew Ramsden</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://irama.org/?p=360</guid>
		<description><![CDATA[
Stefano asked if I had numbers to back up my previous performance claims regarding WordPress performance plugins. Today I ran some tests to be able to provide those numbers.
All tests were performed:

on my new shared hosting environment
with define('WP_CACHE', true); set in wp-config.php
with WP Minify plugin active.



Results
The &#8220;baseline&#8221; results represent tests without DB Cache Reloaded, Hyper [...]]]></description>
			<content:encoded><![CDATA[<div class="section" id="introduction">
<p><a href="/news/2009/12/04/wordpress-performance/#comment-9241">Stefano asked</a> if I had numbers to back up my previous performance claims regarding <a href="/news/2009/12/04/wordpress-performance/">WordPress performance plugins</a>. Today I ran some tests to be able to provide those numbers.</p>
<p>All tests were performed:</p>
<ul>
<li>on my <a href="/news/2009/12/04/so-long-mt-gday-dh/">new shared hosting environment</a></li>
<li>with <code class="php">define('WP_CACHE', true);</code> set in wp-config.php</li>
<li>with <a href="http://omninoggin.com/projects/wordpress-plugins/wp-minify-wordpress-plugin/">WP Minify</a> plugin active.</li>
</ul>
</div>
<div class="section" id="results">
<h2>Results</h2>
<p>The &#8220;baseline&#8221; results represent tests without <a href="http://www.poradnik-webmastera.com/projekty/db_cache_reloaded/">DB Cache Reloaded</a>, <a href="http://www.satollo.net/plugins/hyper-cache">Hyper Cache</a>, or <a href="http://www.ilfilosofo.com/blog/2008/02/22/wordpress-gzip-plugin/">GZIP Output</a> plugins installed. Different combinations of these plugins were then tested. Each combination was tested 10 times and the results have been averaged.</p>
<table class="numeric-data">
<caption>This site (irama.org) &mdash; number of seconds to render HTML of the homepage</caption>
<thead>
<tr>
<th scope="col">test</th>
<th scope="col">baseline</th>
<th scope="col">DB Cache Reloaded</th>
<th scope="col">Hyper Cache</th>
<th scope="col">DB Cache Reloaded + Hyper Cache</th>
<th scope="col">DB Cache Reloaded + GZIP Output</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>0.325</td>
<td>0.294</td>
<td>0.299</td>
<td>0.409</td>
<td>0.292</td>
</tr>
<tr>
<th scope="row">2</th>
<td>0.458</td>
<td>0.447</td>
<td>0.322</td>
<td>0.318</td>
<td>0.335</td>
</tr>
<tr>
<th scope="row">3</th>
<td>0.366</td>
<td>0.267</td>
<td>0.493</td>
<td>0.290</td>
<td>0.313</td>
</tr>
<tr>
<th scope="row">4</th>
<td>0.287</td>
<td>0.299</td>
<td>0.765</td>
<td>0.331</td>
<td>0.269</td>
</tr>
<tr>
<th scope="row">5</th>
<td>0.740</td>
<td>0.319</td>
<td>0.393</td>
<td>0.311</td>
<td>0.512</td>
</tr>
<tr>
<th scope="row">6</th>
<td>0.807</td>
<td>0.276</td>
<td>0.315</td>
<td>0.435</td>
<td>0.354</td>
</tr>
<tr>
<th scope="row">7</th>
<td>0.351</td>
<td>0.270</td>
<td>0.348</td>
<td>0.280</td>
<td>0.343</td>
</tr>
<tr>
<th scope="row">8</th>
<td>0.347</td>
<td>0.403</td>
<td>0.361</td>
<td>0.292</td>
<td>0.290</td>
</tr>
<tr>
<th scope="row">9</th>
<td>0.412</td>
<td> 0.298</td>
<td>0.321</td>
<td>0.336</td>
<td>0.263</td>
</tr>
<tr>
<th scope="row">10</th>
<td>0.418</td>
<td>0.263</td>
<td>0.286</td>
<td>0.364</td>
<td>0.267</td>
</tr>
<tr class="averages">
<th scope="row"><abbr title="Average">Avg.</abbr></th>
<td>0.451</td>
<td>0.314</td>
<td>0.390</td>
<td>0.337</td>
<td>0.324</td>
</tr>
</tbody>
</table>
<table class="numeric-data">
<caption>A more complex client site &mdash; number of seconds to render HTML of the homepage</caption>
<thead>
<tr>
<th scope="col">test</th>
<th scope="col">baseline</th>
<th scope="col">DB Cache Reloaded</th>
<th scope="col">Hyper Cache</th>
<th scope="col">DB Cache Reloaded + Hyper Cache</th>
<th scope="col">DB Cache Reloaded + GZIP Output</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>3.116</td>
<td>2.477</td>
<td>2.198</td>
<td>2.287</td>
<td>2.693</td>
</tr>
<tr>
<th scope="row">2</th>
<td>2.663</td>
<td>0.749</td>
<td>2.542</td>
<td>0.712</td>
<td>0.895</td>
</tr>
<tr>
<th scope="row">3</th>
<td>2.820</td>
<td>1.008</td>
<td>2.382</td>
<td>1.143</td>
<td>1.221</td>
</tr>
<tr>
<th scope="row">4</th>
<td>2.390</td>
<td>0.799</td>
<td>2.501</td>
<td>0.827</td>
<td>0.880</td>
</tr>
<tr>
<th scope="row">5</th>
<td>2.304</td>
<td>0.758</td>
<td>2.581</td>
<td>0.939</td>
<td>0.939</td>
</tr>
<tr>
<th scope="row">6</th>
<td>3.348</td>
<td>0.795</td>
<td>2.364</td>
<td>1.068</td>
<td>1.109</td>
</tr>
<tr>
<th scope="row">7</th>
<td>3.150</td>
<td>0.866</td>
<td>2.248</td>
<td>2.483</td>
<td>1.172</td>
</tr>
<tr>
<th scope="row">8</th>
<td>3.139</td>
<td>0.989</td>
<td>2.512</td>
<td>1.125</td>
<td>0.912</td>
</tr>
<tr>
<th scope="row">9</th>
<td>3.115</td>
<td>0.789</td>
<td>2.667</td>
<td>0.939</td>
<td>1.092</td>
</tr>
<tr>
<th scope="row">10</th>
<td>2.525</td>
<td>0.776</td>
<td>2.306</td>
<td>2.613</td>
<td>0.910</td>
</tr>
<tr class="averages">
<th scope="row"><abbr title="Average">Avg.</abbr></th>
<td>2.857</td>
<td>1.001</td>
<td>2.430</td>
<td>1.414</td>
<td>1.182</td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="analysis">
<h2>Analysis</h2>
<p>My previous recommendation of Hyper Cache was primarily because it provides GZIP compressed HTML. Since the results for DB Cache Reloaded + Hyper Cache were not as strong as DB Cache Reloaded alone, I looked for an alternative plugin that might provide GZIP compression without as much of a page render performance cost.</p>
<p>I tested the GZIP Output plugin, and while it still seems to negatively impact on page render time, I believe the addition of GZIP compression &mdash; which will lower the size of the transmitted HTML file &mdash; is worth the small hit on render performance.</p>
<p>Note: If your web server compresses HTML output from PHP files automatically (or it can be <a href="http://articles.sitepoint.com/article/web-output-mod_gzip-apache">configured to do so</a>) then use that approach instead of using the GZIP Output plugin as it is likely to perform slightly better. The other benefit of this approach is that compression will also be applied to the HTML output of PHP files that are not part of WordPress (if you have any).
</div>
<div class="section" id="conclusion">
<h2>Conclusion</h2>
<p>In terms of performance (on a shared hosting environment) disk <abbr title="Input and Output">IO</abbr> is expensive, but <abbr title="Database">DB</abbr> access is more expensive. So while Hyper Cache alone makes a difference, DB Cache Reloaded makes a greater difference. <abbr title="Your Mileage May Vary">YMMV</abbr>, but in light of this data, I would update my recommendation&#8230;</p>
<p>For best WordPress performance, use the following plugins:</p>
<ol>
<li><a href="http://www.poradnik-webmastera.com/projekty/db_cache_reloaded/">DB Cache Reloaded</a></li>
<li><a href="http://omninoggin.com/projects/wordpress-plugins/wp-minify-wordpress-plugin/">WP Minify</a></li>
<li><a href="http://www.ilfilosofo.com/blog/2008/02/22/wordpress-gzip-plugin/">GZIP Output</a> (only if your web server doesn&#8217;t GZIP HTML output from PHP automatically).</li>
</ol>
<p>Note: If DB Cache Reloaded is not an option with your hosting provider, or you aren&#8217;t able to get it working, Hyper Cache is still a good option (remember: you won&#8217;t need GZIP Output if you have Hyper Cache installed).
</p></div>
<div class="section" id="finally">
<h2>Finally&#8230;</h2>
<p>I hope this helps. Let me know if you have feedback about my methods/results, or if you have other WordPress performance tips.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://irama.org/news/2009/12/06/wordpress-performance-revisited/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress performance</title>
		<link>http://irama.org/news/2009/12/04/wordpress-performance/</link>
		<comments>http://irama.org/news/2009/12/04/wordpress-performance/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 10:26:10 +0000</pubDate>
		<dc:creator>Andrew Ramsden</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://irama.org/?p=352</guid>
		<description><![CDATA[

Update 5 December 2009: Recommendation revised based on new data.


As promised, here&#8217;s a quick rundown of the WordPress performance plugins I&#8217;ve been using.

DB Cache Reloaded = Big performance wins. Especially on shared hosting.
Hyper Cache = Less noticeable improvement than DB Cache, but still noticeable.
WP Minify = Essential. Every website should combine, minify then cache static [...]]]></description>
			<content:encoded><![CDATA[<p><ins datetime="2009-12-06T11:55:00+10:00">
<div class="warning">
<p>Update 5 December 2009: <a href="/news/2009/12/06/wordpress-performance-revisted/#conclusion">Recommendation revised based on new data</a>.</p>
</div>
<p></ins></p>
<p><a href="/news/2009/12/04/so-long-mt-gday-dh/">As promised</a>, here&#8217;s a quick rundown of the WordPress performance plugins I&#8217;ve been using.</p>
<ul>
<li><a href="http://www.poradnik-webmastera.com/projekty/db_cache_reloaded/">DB Cache Reloaded</a> = Big performance wins. Especially on shared hosting.</li>
<li><a href="http://www.satollo.net/plugins/hyper-cache">Hyper Cache</a> = Less noticeable improvement than DB Cache, but still noticeable.</li>
<li><a href="http://omninoggin.com/projects/wordpress-plugins/wp-minify-wordpress-plugin/">WP Minify</a> = Essential. Every website should combine, minify then cache static text assets (like CSS and JavaScript) for production.</li>
</ul>
<p>Note: I have used <a href="http://wordpress.org/extend/plugins/wp-super-cache/" rel="nofollow">WP Super Cache</a> in the past and have run into problems. Apparently it doesn&#8217;t perform too well on shared hosting setups. Also, in my experience, DB Cache outperforms Super Cache every time.</p>
<p>I have other thoughts about web performance that I&#8217;d like to share, but not today. Let me gather my thoughts some more and get back to you.</p>
<p>Know of any other good WordPress performance tricks? Leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://irama.org/news/2009/12/04/wordpress-performance/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>So long MT, G&#8217;Day DH</title>
		<link>http://irama.org/news/2009/12/04/so-long-mt-gday-dh/</link>
		<comments>http://irama.org/news/2009/12/04/so-long-mt-gday-dh/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 09:59:30 +0000</pubDate>
		<dc:creator>Andrew Ramsden</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://irama.org/?p=343</guid>
		<description><![CDATA[Well, it wasn&#8217;t easy, but I&#8217;ve done it: I have migrated my sites away from MediaTemple (MT) to DreamHost (DH).
Why the change? Performance mainly.
MediaTemple has given me decent stability and good support over the last few years. And most of all I&#8217;ll miss that gorgeous, minimal admin control panel.

But the performance has been poor at [...]]]></description>
			<content:encoded><![CDATA[<p>Well, it wasn&#8217;t easy, but I&#8217;ve done it: I have migrated my sites away from <a href="http://mediatemple.net/" rel="nofollow">MediaTemple</a> (MT) to <a href="http://www.dreamhost.com/">DreamHost</a> (DH).</p>
<p>Why the change? Performance mainly.</p>
<p>MediaTemple has given me decent stability and good support over the last few years. And most of all I&#8217;ll miss that gorgeous, minimal admin control panel.<br />
<a href="/wp/assets/uploaded/2009/12/mt-cpanel.png"><img src="/wp/assets/uploaded/2009/12/mt-cpanel-preview.png" alt="" /></a></p>
<p>But the performance has been poor at best. Even with WordPress caching plugins installed, page renders averaged 3 seconds, not including the fairly frequent spikes (of up to 30 seconds) which would occur every 5 attempts or so.</p>
<p>And while they seem to have <a href="http://www.dreamhoststatus.com/2009/11/">more constant outages</a> (two of which have affected me already), the overall page render performance at DreamHost has been at least twice as good (< 1 second for page render on average) as MediaTemple and far more consistent (i.e: no spikes). For those who are interested, without caching plugins installed, the difference was far more pronounced (averages of 13 seconds for MT and 2 seconds for DH).</p>
<p>The DreamHost control panel isn't quite as minimal or as gorgeous, but it is much better organised than <a href="http://asmallorange.com/" rel="nofollow">others I tried</a>, and has all the functionality I require.<br />
<a href="/wp/assets/uploaded/2009/12/dh-cpanel.png"><img src="/wp/assets/uploaded/2009/12/dh-cpanel-preview.png" alt="" /></a></p>
<p>I should note here that these performance results (especially the DreamHost results) are based on a limited period of testing. So I&#8217;ll keep you posted as to the service and performance longer term. But it is safe to say that the performance of my previous provider has been less-than-ideal for a long time, hence the move.</p>
<p>For those interested in <a href="/news/2009/12/04/wordpress-performance/">WordPress performance, I&#8217;ll post a follow up</a> about the plugins I&#8217;m using.</p>
]]></content:encoded>
			<wfw:commentRss>http://irama.org/news/2009/12/04/so-long-mt-gday-dh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slightly nicer URLs</title>
		<link>http://irama.org/news/2009/10/17/slightly-nicer-urls/</link>
		<comments>http://irama.org/news/2009/10/17/slightly-nicer-urls/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 05:32:23 +0000</pubDate>
		<dc:creator>Andrew Ramsden</dc:creator>
				<category><![CDATA[Identifiers]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://irama.org/?p=328</guid>
		<description><![CDATA[As we know, all unique online resources should be addressable with a unique URL.
However, not all URLs were created equal. Some URLs are &#8220;nicer&#8221; than others. For example, URLs with query string parameters are often considered to belong to the &#8220;not so nice&#8221; URL category: http://example.com/?p=1234&#038;vH=10&#038;Session_ID=er5DKJn838JK2dfs
In general, what I consider to be &#8220;nice&#8221; or &#8220;not [...]]]></description>
			<content:encoded><![CDATA[<p>As we know, all unique online resources should be addressable with a unique URL.</p>
<p>However, not all URLs were created equal. Some URLs are &#8220;nicer&#8221; than others. For example, URLs with query string parameters are often considered to belong to the &#8220;not so nice&#8221; URL category: <samp>http://example.com/?p=1234&#038;vH=10&#038;Session_ID=er5DKJn838JK2dfs</samp></p>
<p>In general, what I consider to be &#8220;nice&#8221; or &#8220;not so nice&#8221; URLs is a lengthy topic, and I&#8217;ll only touch on part of it today. Suffice to say, that for some purposes, I believe using query string parameters is not the worst crime you can commit. In fact, in some cases, I believe they are perfectly acceptable. </p>
<p>Take the following URL for instance: <samp>http://example.com/books/?format=html&#038;order=alphabetical&#038;page=2</samp>. Although query string parameters mean this URL is a little tricky to read, at least it uses human-readable parameter keys and values. And because slashes <samp>/</samp> in URLs imply heirarchy, the only good alternative for this type of URL would be a <a href="http://www.w3.org/DesignIssues/MatrixURIs.html">Matrix URL</a>, like this: <samp>http://example.com/books/;format=html;order=alphabetical;page=2</samp>.</p>
<p>Implementing Matrix URLs within web applications can be difficult, requiring extra server-side redirects or client-side trickery because by default, a HTML form won&#8217;t submit data formatted as a Matrix URL.</p>
<p>That&#8217;s why I believe query strings aren&#8217;t so bad, sometimes they really come in handy.</p>
<h2>Repeated parameters</h2>
<p>That said, when using checkboxes (or heaven-forbid) multi-select controls to submit data using the GET method, some server-side languages (like PHP) require that you add <code class="xhtml">[]</code> to the end of the name attribute of each control, for example: <code class="xhtml">&lt;input type="checkbox" name="items[]" value="item1" />&lt;input type="checkbox" name="items[]" value="item2" /></code></p>
<p>For my money, this results in &#8220;not so nice&#8221; URLs, for example: <samp>http://example.com/books/?items[]=item1&#038;items[]=item2</samp></p>
<p>I know it&#8217;s a subtle difference, but I much prefer: <samp>http://example.com/books/?items=item1&#038;items=item2</samp></p>
<p>The other benefit is that your HTML wouldn&#8217;t need to contain the <code class="xhtml">[]</code> either: <code class="xhtml">&lt;input type="checkbox" name="items" value="item1" />&lt;input type="checkbox" name="items" value="item2" /></code></p>
<h2>A problem</h2>
<p>The problem is, by default, if <code class="xhtml">[]</code> doesn&#8217;t appear in your URLs, only the last &#8216;items&#8217; parameter will be accessible to PHP in the <code class="php">$_GET</code> array.</p>
<h2>A solution</h2>
<p> I spent some time thinking about this, and decided the best thing to do would be to parse the URL myself.</p>
<pre><code class="php">/**
 * Returns query string parameters more intelligently from the URL than by using the $_GET array.
 *
 * When multiple parameters are encountered with the same name, they are stacked into an
 * array. This means all URL data can be accessed without using brackets in name attributes
 * For example, typically you would use: &lt;input name="items[]" /> resulting in &#038;items[]=id1&#038;items[]=id2
 * However, using this method you can use: &lt;input name="items" /> resulting in &#038;items=id1&#038;items=id2
 *
 * @author Andrew Ramsden
 * @see: http://irama.org/news/2009/10/17/slightly-nicer-urls/
 * @license GNU GENERAL PUBLIC LICENSE (GPL) &lt;http://www.gnu.org/licenses/gpl.html>
 *
 * @param String $url (optional) A URL to parse for query string variables. If not set, the
 *        current requested URI will be parsed.
 * @return Array An associative array with all query string variables. Multiple parameters
 *         are stacked into a nested array.
 */
function getURLVariables ($url='') {

	$url = !empty($url) ? parse_url($url) : parse_url($_SERVER['REQUEST_URI']);
	$result = array();
	$queryStrParams = explode('&#038;',$url['query']);

	foreach ($queryStrParams as $param) {
		$paramKeyVals = explode('=',$param, 2);

		if (!isset($paramKeyVals[0])) continue;

		$key = $paramKeyVals[0];
		$val = isset($paramKeyVals[1])?$paramKeyVals[1]:'';

		if (substr($key,-6) == '%5B%5D') { // support ugly urls too
			$result[substr($key,0,-6)][] = $val;
		} else if (!isset($result[$key])) { // add new param to the results array
			$result[$key] = $val;
		} else { // this param already exists, stack into an array
				if (is_array($result[$key])) {
					$result[$key][] = $val; // add to existing array
				} else {
					$result[$key] = array($result[$key], $val); // create new array
				}
		}
	}
	return $result;
}</code></pre>
<p>Now instead of using: <code class="php">$items = $_GET['items'];</code> you can use <code class="php">$items = getURLVariables()['items'];</code> and access all the data from your <em>slightly nicer URLs</em>.</p>
<p>Feedback appreciated, let me know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://irama.org/news/2009/10/17/slightly-nicer-urls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vista, Windows 7, memory use and performance</title>
		<link>http://irama.org/news/2009/07/20/vista-windows-7-memory-use-and-performance/</link>
		<comments>http://irama.org/news/2009/07/20/vista-windows-7-memory-use-and-performance/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 12:08:48 +0000</pubDate>
		<dc:creator>Andrew Ramsden</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://irama.org/?p=304</guid>
		<description><![CDATA[As hinted previously, I&#8217;ve been experimenting with Windows operating systems and hardware for a few years and trying to get the best performance for day to day multitasking and a little gaming.
As promised, this article contains the answers to questions such as:

Which Operating System (OS) do I need to use more than 3GB of RAM?
32 [...]]]></description>
			<content:encoded><![CDATA[<p>As <a href="/news/2009/07/05/strangelove/">hinted previously</a>, I&#8217;ve been experimenting with Windows operating systems and hardware for a few years and trying to get the best performance for day to day multitasking and a little gaming.</p>
<p>As promised, this article contains the answers to questions such as:</p>
<ul>
<li>Which <dfn>Operating System (<abbr>OS</abbr>)</dfn> do I need to use more than 3GB of RAM?</li>
<li>32 bit OS vs 64 bit OS?</li>
<li>Which performance tweaks actually work?</li>
<li>Which tweaks can reduce performance?</li>
</ul>
<div class="section" id="disclaimer">
<h2>Disclaimer</h2>
<p>I&#8217;m not a &#8220;systems guy&#8221;, I&#8217;m closer to a <em>systems n00b</em>. If you are a <em>systems person</em>, then I&#8217;m sure none of  this will be news to you, and you&#8217;re probably thinking <em>why is he explaining all this basic stuff?</em> If that&#8217;s what you&#8217;re  thinking, I&#8217;ll answer your question with some of my own questions, like <em>where were you when I was looking for simple answers?</em> And <em>where are your articles explaining all this stuff in plain-ish English?</em> And <em>won&#8217;t somebody think of the n00bs?  (n00bs are people too).</em><br />
If you consider yourself a <em>systems person</em> and you notice any inaccuracies below, please leave  a comment and I&#8217;ll update the post, thank you.</p>
</div>
<div class="section" id="background">
<h2>Background</h2>
<ol>
<li id="background-1">There&#8217;s no point trying to use more than 4GB of  RAM with a 32 bit operating system. Basically, 32 bit Windows systems can only  address 4GB, even with PAE (Physical Address Extension) due to driver  compatibility issues. And often different internal devices (like your video  card) require some of that <em>address space</em> bringing the total addressable RAM that the OS can access down closer to 3GB.<br />
    <small>(sources for this information are inconsistent, but  this is the conclusion I reached after much reading, sweating and cursing)</small>.</li>
<li id="background-2">Using a 64 bit OS will allow up to 128GB or RAM available  to the OS (as much as you have installed). But a 64 bit OS will cost you RAM  also, as all variables are now 64 bits long (instead of 32) this can result in  20-40% more RAM used. So if you are using only 4GB of RAM it&#8217;s really not worth  switching to a 64 bit OS.<br />
    <small>(see <a href="http://www.tomshardware.com/reviews/vista-workshop,1775-5.html">http://www.tomshardware.com/reviews/vista-workshop,1775-5.html</a>)</small></li>
<li id="background-3">Some sources will warn against moving to a 64  bit OS because of the unavailability of 64 bit compatible drivers for old  hardware. I will say this, 12 months ago 64 bit Vista gave me no end of trouble, but recently, 64 bit Windows 7 has been running very reliably. If you use old hardware or Vista, potential driver issues may be a concern. Otherwise, I think it&#8217;s safe to say that 64 bit system users are now first class citizens too and drivers are generally available from all major hardware vendors. It would pay to check first though (especially for any older hardware/peripherals you may be using).</li>
<li id="background-4">With only 4GB, Vista / Windows 7 fills <em>almost</em> all un-reserved RAM with cached  files, but &#8220;Physical Memory usage&#8221; only reports the amount of RAM actively reserved by applications. This means <em>Windows is putting all the RAM to good use</em> even if it doesn&#8217;t appear to be.<br />
    This is visible in Task Manager in the &#8220;Physical Memory&#8221; area under the  &#8220;Performance&#8221; tab. It displays a high value for &#8220;Cached&#8221; and low value for  &#8220;Free&#8221; (even though the overall reported &#8220;Physical Memory usage&#8221; may not be  high).<br />
    <small>(see <a href="http://www.codinghorror.com/blog/archives/000688.html">http://www.codinghorror.com/blog/archives/000688.html</a>)</small></li>
<li id="background-5">The page file use may seem large (as reported in  Task Manager), but it&#8217;s not always using that space, that space is only  allocated <em>in case</em> active memory needs  to be paged. So the page file will always be at least as large as active RAM  used, even though data is not being sent to and from the page file.<br />
    This means a high page file value is not necessarily an indication of a  performance bottleneck (unless it is much higher than the amount of actively  used RAM aka &#8220;Physical Memory Usage&#8221;).<br />
    <small>(see <a href="http://forums.whirlpool.net.au/forum-replies-archive.cfm/929467.html">http://forums.whirlpool.net.au/forum-replies-archive.cfm/929467.html</a>)</small></li>
</ol>
</div>
<div class="section" id="things-to-do">
<h2>Things to do:</h2>
<ul>
<li>
<h3>Lots of RAM is a good thing  (4GB is good, 8GB is better)</h3>
<p>
    RAM is not too expensive these days, so it&#8217;s worth shelling out for.<br />
    <small>(see <a href="http://www.tomshardware.com/reviews/vista-workshop,1775-12.html">http://www.tomshardware.com/reviews/vista-workshop,1775-12.html</a>)</small>
  </li>
<li>
<h3>Assign a page file  to a different physical hard drive to the system drive</h3>
<p>
    <small>(see <a href="http://www.msfn.org/board/lofiversion/index.php/t12014.html">http://www.msfn.org/board/lofiversion/index.php/t12014.html</a> and <a href="http://www.tweakxp.com/article37023.aspx">http://www.tweakxp.com/article37023.aspx</a>)</small><br />
Notes:
<ul>
<li>You can use more than one disk for added  performance.</li>
<li>Don&#8217;t use a second drive alone if it is slower  than the system drive.</li>
<li>Don&#8217;t move the page file to a partition of the  system drive (very bad for performance).</li>
<li>Don&#8217;t assign your page file to a RAMDisk  as this just reduces the available RAM and creates references back to RAM  anyway. Instead, just add more RAM to reduce the necessity to page.
  </li>
</ul>
</li>
<li>
<h3>Set a static  size for the page file (but give it room to grow)</h3>
<p>
    Whenever Windows dynamically adjusts the size of the page file, the  application that requires the extra swap space has to wait. Set a static file  size for the page file (initial size = 1.5 times your amount of RAM and maximum  size = 2 or 2.5 times your amount of RAM). This way, most of the time the page  file will not need to be resized, but can if necessary. Allowing it to resize for  situations of abnormally large memory usage may avoid crashing applications  (and losing unsaved work).<br />
    <small>(see <a href="http://www.extremetech.com/article2/0,2845,2156185,00.asp">http://www.extremetech.com/article2/0,2845,2156185,00.asp</a>)</small>
  </li>
<li>
<h3>Defragment  drives that contain page files</h3>
<p>
    After performing step 3, it&#8217;s worth defragmenting the drives being used with  system tools, then run <a href="http://technet.microsoft.com/en-au/sysinternals/bb897426.aspx">PageDefrag</a> because normal defragmentation can&#8217;t operate on active page files.<br />
    <small>(see <a href="http://technet.microsoft.com/en-au/sysinternals/bb897426.aspx">http://technet.microsoft.com/en-au/sysinternals/bb897426.aspx</a>)</small>
  </li>
<li>
<h3>Trust Vista / Windows 7 to do the  job properly</h3>
<p>
    Task Manager may report only 40% &#8211; 60% RAM used yet report a large page  file, which can seem counter-intuitive at first. It&#8217;s easy to assume that Windows is not managing memory well, that it&#8217;s paging memory too soon and must be  needlessly thrashing disk I/O when you switch between applications.<br />
    This is not the case, the rest of your RAM is being used for file caching and  the large page file usually only represents reserved space (see points <a href="#background-4">4.</a> and  <a href="#background-5">5.</a> in the <a href="#background">Background</a> section).<br />
    <small>(see <a href="http://www.codinghorror.com/blog/archives/000688.html">http://www.codinghorror.com/blog/archives/000688.html</a>)</small></li>
</ul>
<h2>With 8GB, also do this: </h2>
<ul>
<li>
<h3>Try increasing the  FileSystem Memory cache</h3>
<p>
    This is only worth trying if the &#8220;Free&#8221; Physical Memory reported in the  Task Manager is quite high. Vista / Windows 7 will usually use a lot of memory for caching by  default without this tweak (see <a href="#background-4">point 4.</a> in the <a href="#background">Background</a> section).<br />
    <small>(see <a href="http://www.howtogeek.com/howto/windows-vista/increase-the-filesystem-memory-cache-size-in-vista/">http://www.howtogeek.com/howto/windows-vista/increase-the-filesystem-memory-cache-size-in-vista/</a>)</small></p>
<ul>
<li>Open up an Administrator mode command prompt by right-clicking and choosing Run as Administrator, or type in cmd into the start menu search box and use Ctrl+Shift+Enter.</li>
<li>Enter <samp>fsutil behavior set memoryusage 2</samp></li>
<li>Restart Windows. (to revert use <samp>fsutil behavior set memoryusage 1</samp>)</li>
</ul>
</li>
<li>
<h3>Reduce or disable the  page file?</h3>
<p>
    While this is only really feasible for a Vista / Windows 7 system with 8GB or more of RAM  and <em>may</em> result in a small performance  improvement for switching between memory intensive applications, it will likely  cause an application to crash in the event the RAM is ever filled. Remember, <em>it&#8217;s always best to have at least 1.5 times  your total RAM available for paging and then just let Vista / Windows 7 get the job done.</em><br />
    <small>(see <a href="http://www.tomshardware.com/reviews/vista-workshop,1775-6.html">http://www.tomshardware.com/reviews/vista-workshop,1775-6.html</a>)</small></li>
</ul>
</div>
<div class="section" id="things-not-to-do">
<h2>Things not to do:</h2>
<ul>
<li>Don&#8217;t reduce the page file or disable it  entirely.</li>
<li>Don&#8217;t assign your page file to a slow drive or a  separate partition of the system drive.</li>
<li>Don&#8217;t assign your page file to a RAMDisk (this  just reduces the available system RAM).</li>
<li>Don&#8217;t increase the FileSystem Memory cache if your applications max out your RAM frequently. </li>
</ul>
</div>
<div class="section" id="conclusion">
<h2>The wrap up</h2>
<p>I hope you found something amongst these tips useful, and I hope it saved you some time.</p>
<p><abbr title="post script">PS</abbr> If you are interested in gaming performance, it depends on the game, but to cover all your bases I can recommend all of the above plus Windows 7 (or XP), a quad-core <abbr title="central processing unit">CPU</abbr>, a fast hard drive (consider a <abbr title="solid state drive">SSD</abbr>) and a beefy video card <img src='http://irama.org/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://irama.org/news/2009/07/20/vista-windows-7-memory-use-and-performance/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
