<?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>Racker Hacker &#187; performance</title>
	<atom:link href="http://rackerhacker.com/tag/performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://rackerhacker.com</link>
	<description>Words of wisdom from a server administrator</description>
	<lastBuildDate>Tue, 07 Feb 2012 14:07:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Xen Summit 2011: My Takeways</title>
		<link>http://rackerhacker.com/2011/08/08/xen-summit-2011-my-takeways/</link>
		<comments>http://rackerhacker.com/2011/08/08/xen-summit-2011-my-takeways/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 12:58:54 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[glusterfs]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=2391</guid>
		<description><![CDATA[Quite a few people who couldn't make it to Xen Summit 2011 this year asked me to write a post summarizing my takeaways from the event. I'm not generally one to back down from peer pressure, so read on if you're interested about the discussions at this year's Summit. The feeling I had at last [...]<p><a href="http://rackerhacker.com/2011/08/08/xen-summit-2011-my-takeways/">Xen Summit 2011: My Takeways</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://rackerhacker.com/wp-content/uploads/2011/08/xensummit_na11_small.png"><img src="http://rackerhacker.com/wp-content/uploads/2011/08/xensummit_na11_small-300x81.png" alt="Xen Summit 2011 Logo" title="Xen Summit 2011 Logo" width="300" height="81" class="alignright size-medium wp-image-2396" /></a>Quite a few people who couldn't make it to <a href="http://xen.org/community/xensummit.html">Xen Summit 2011</a> this year asked me to write a post summarizing my takeaways from the event.  I'm not generally one to back down from peer pressure, so read on if you're interested about the discussions at this year's Summit.</p>
<p>The feeling I had at last year's summit is that Xen was on the verge of losing traction in the market.  Very few distributions still had Xen support going forward and much of the discussion was around the lack of dom0 support in upstream Linux kernels.  Distribution vendors were hesitant to drag patches forward into modern kernels and this made it much more difficult to get Xen working for many people.</p>
<p><a href="http://rackerhacker.com/wp-content/uploads/2011/08/Photo-Aug-01-5-54-05-PM.jpeg"><img src="http://rackerhacker.com/wp-content/uploads/2011/08/Photo-Aug-01-5-54-05-PM-224x300.jpg" alt="Major at the Golden Gate Bridge" title="Major at the Golden Gate Bridge" width="224" height="300" class="alignleft size-medium wp-image-2404" /></a>This year was quite different.  The number of attendees was up, the <a href="http://www.citrix.com/tv/#videos/4386">venue was much better</a>, and there was an obvious buzz of energy in the room.  As many of the presenters noted, this excitement stemmed from the <a href="http://blog.xen.org/index.php/2011/06/14/linux-3-0-how-did-we-get-initial-domain-dom0-support-there/">upstream dom0 support in Linux 3.0</a>.  This inclusion is a huge win and it helps to drive Xen forward since the developers don't have to worry about dragging patches forward.  They can focus on improving performance, adding features, and tightening security.</p>
<p>Many of the discussions this year focused on security and performance.  Ian Pratt discussed Xen's ability to view memory pages of virtual machines via an API to detect malware running inside the instance.  Memory pages could be identified and marked as not executable or applications could be triggered when a VM attempts to touch a particular memory page.  Also, the whole VM could be frozen if needed.</p>
<p>There's also a big push to bring code out of the dom0 and push it into utility VM's.  Driver domains could manage the network or I/O infrastructure and this would further reduce the amount of privileged code actively running in dom0.  There is already very little code required for the Xen hypervisor itself (much much less than the Linux kernel -- I'm looking at you, <a href="http://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine">KVM</a>) and this reduces the attack surface for potential compromises of the hypervisor.  Some projects even aim to restart driver domains multiple times per minute to ensure that any malicious code injected into those virtual machines can't exist for long periods.</p>
<p>Pradeep Vincent from <a href="http://aws.amazon.com/">Amazon</a> talked about how Amazon uses Xen and the pain points they have with its current architecture.  Much of his discussion was around scaling problems (and we see many of the same issues at <a href="http://www.rackspace.com">Rackspace</a>).  Higher performance could easily be gained by multi-threaded operations in dom0 when attaching block devices and creating virtual network interfaces.  He also saw some areas for performance gains in the pvops I/O code.</p>
<p>Quite a few of the talks centered on the ARM architecture and what Xen is able to do on those systems after <a href="http://www.xen.org/products/xen_arm.html">Samsung published their port in 2008</a>.  HVM is on the way for ARM and it might even show up in Xen 4.2.  Some demos of Xen on mobile phones from Samsung were amazing.  They showed how an attacker could compromise the web browser on the phone with a keylogger, but that application was running in a VM.  Once the user switched back to the phone's main menu, the keylogger couldn't access the keystrokes any longer.  After that, a simple close of the browser killed the VM and destroyed the malicious code.</p>
<p>Xen 4.2 should be available in early 2012 and the feature list is staggering.  Improvements to libxenlight, pvops performance (even in HVM), and guest memory sharing should be available with the new release.  Nested virtualization (run a hypervisor inside a hypervisor) is also coming in Xen 4.2 and I'm sure Xzibit will be a huge fan.  This should streamline hypervisor testing, allow for embedded hypervisor options and extend the capabilities of client hypervisors.  Remus should be available in 4.2 as well, but it might be marked as experimental.  OVMF will be added as a BIOS option for UEFI (along with the standard SeaBIOS) and this should allow for Mac OS X guests.  UEFI allows Windows to boot faster since it switches to PV mode sooner and it allows for simpler platform certification for software vendors.</p>
<p><a href="http://rackerhacker.com/wp-content/uploads/2011/08/OpenStackLogo_270x279.jpg"><img src="http://rackerhacker.com/wp-content/uploads/2011/08/OpenStackLogo_270x279.jpg" alt="" title="OpenStackLogo_270x279" width="180" height="195" class="alignright size-full wp-image-2399" /></a>Mike McClurg's presentation on <a href="http://www.xen.org/products/cloudxen.html">XCP</a> was pretty important to me since Rackspace is a big consumer of <a href="http://www.citrix.com/English/ps2/products/product.asp?contentID=683148">XenServer</a>.  If you're not familiar with XCP, it's basically open-source XenServer which runs on bleeding edge (and sometimes unstable) components.  XCP 1.5 and XenServer 6 should be available in November with Xen 4.1 and Linux 2.6.32.  GPU passthrough, up to 1TB RAM, and disaster recovery will be available.  Another goal for the XCP team is to work closely with OpenStack via Project Olympus.  Mike's vision is to have XCP become the configuration of choice for open source clouds.  <a href="http://blog.xen.org/index.php/2011/07/22/project-kronos/">Project Kronos</a> was also extremely interesting.  It's essentially XCP's XenAPI stack running on Debian and Ubuntu.  You'd be able to install either OS on a physical server and run XCP's services on it for a fully OSS hypervisor.</p>
<p>Konrad Wilk gave an update on Linux pvops and it appears there is a shift to get Xen working well on a desktop.  This includes 3D graphics support, S3/hibernate capabilities and various bug fixes.  There's also a push to get PV functionality into HVM and get HVM functionality into PV.  Driver/device domains were discussed again in Patrick Kolp's talk and he had plenty of graphs showing performance changes when regularly restarting device domains.  The performance dips were almost negligible with 10 second restarts and the security gains were significant.</p>
<p>There were several other great presentations on other topics like <a href="http://www.gluster.org/">GlusterFS</a>, <a href="http://nova.openstack.org/">OpenStack Nova</a>, and <a href="http://cgit.freedesktop.org/~ewalsh/linpicker/">Linpicker</a> (from the NSA!).  If these types of things interests you, keep your eyes peeled for Xen Summit 2012 next year.  The <a href="http://weatherspark.com/#!dashboard;q=santa+clara,+ca">weather in the bay area</a> is well worth the trip. <img src='http://rackerhacker.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://rackerhacker.com/2011/08/08/xen-summit-2011-my-takeways/">Xen Summit 2011: My Takeways</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2011/08/08/xen-summit-2011-my-takeways/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A modern implementation and explanation of Linux Virtual Server (LVS)</title>
		<link>http://rackerhacker.com/2010/06/27/modern-implementation-and-explanation-of-linux-virtual-server-lvs/</link>
		<comments>http://rackerhacker.com/2010/06/27/modern-implementation-and-explanation-of-linux-virtual-server-lvs/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 16:03:27 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[general advice]]></category>
		<category><![CDATA[high availability]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1529</guid>
		<description><![CDATA[A typical load balancing configuration using hardware devices or software implementations will be organized such that they resemble the diagram at the right. I usually call this a proxy-type load balancing solution since the load balancer proxies your request to some other nodes. The standard order of operations looks like this: client makes a request [...]<p><a href="http://rackerhacker.com/2010/06/27/modern-implementation-and-explanation-of-linux-virtual-server-lvs/">A modern implementation and explanation of Linux Virtual Server (LVS)</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_1533" class="wp-caption alignright" style="width: 207px"><a href="http://rackerhacker.com/wp-content/uploads/2010/06/loadbalancer-viaproxy.png"><img src="http://rackerhacker.com/wp-content/uploads/2010/06/loadbalancer-viaproxy.png" alt="Load balancing via proxy" title="Load balancing via proxy" width="197" height="206" class="size-full wp-image-1533" /></a><p class="wp-caption-text">Typical configuration for a <br />proxy-type load balancer</p></div>A typical load balancing configuration using hardware devices or software implementations will be organized such that they resemble the diagram at the right.  I usually call this a proxy-type load balancing solution since the load balancer proxies your request to some other nodes.  The standard order of operations looks like this:</p>
<ul>
<li>client makes a request</li>
<li>load balancer receives the request</li>
<li>load balancer sends request to a web node</li>
<li>the web server sends content back to the load balancer</li>
<li>the load balancer responds to the client</li>
</ul>
<p>If you're not familiar with load balancing, here's an analogy.  Consider a fast food restaurant.  When you walk up to the counter and place an order, you're asking the person at the counter (the load balancer) for a hamburger.  The person at the counter is going to submit your order, and then a group of people (web nodes) are going to work on it.  Once your hamburger (web request) is ready, your order will be given to the person at the counter and then back to you.</p>
<p>This style of organization can become a problem as your web nodes begin to scale.  It requires you to ensure that your load balancers can keep up with the requests and sustain higher transfer rates that come from having more web nodes serving a greater number of requests.  Imagine the fast food restaurant where you have one person taking the orders but you have 30 people working on the food.  The person at the counter may be able to take orders very quickly, but they may not be able to keep up with the orders coming out of the kitchen.</p>
<p><div id="attachment_1532" class="wp-caption alignright" style="width: 226px"><a href="http://rackerhacker.com/wp-content/uploads/2010/06/loadbalancer-ipvs.png"><img src="http://rackerhacker.com/wp-content/uploads/2010/06/loadbalancer-ipvs.png" alt="Load balancing via Linux Virtual Server" title="Load balancing via Linux Virtual Server" width="216" height="206" class="size-full wp-image-1532" /></a><p class="wp-caption-text">LVS allows for application servers<br /> to respond to clients directly</p></div><br />
This is where <a href="http://en.wikipedia.org/wiki/Linux_Virtual_Server">Linux Virtual Server (LVS)</a> really shines.  LVS operates a bit differently:</p>
<ul>
<li>client makes a request</li>
<li>load balancer receives the request</li>
<li>load balancer sends request to a web node</li>
<li>the web server sends the response <strong>directly to the client</strong></li>
</ul>
<p>The key difference is that the load balancer sends the unaltered request to the web server and the web server responds <em>directly to the client</em>.  Here's the fast food analogy again.  If you ask the person at the counter (the load balancer) for a hamburger, that person is going to take your order and give it to the kitchen staff (the web nodes) to work on it.  This time around, the person at the counter is going to advise the kitchen staff that the order needs to go directly to you once it's complete.  When your hamburger is ready, a member of the kitchen staff will walk to the counter and give it directly to you.</p>
<p>In the fast food analogy, what are the benefits?  As the number of orders and kitchen staff increases, the job of the person at the counter doesn't drastically increase in difficulty.  While that person will have to handle more orders and keep tabs on which of the kitchen staff is working on the least amount of orders, they don't have to worry about returning food to customers.  Also, the kitchen staff doesn't need to waste time handing orders to the person at the counter.  Instead, they can pass these orders directly to the customer that ordered them.</p>
<p>In the world of servers, this is a large benefit.  Since the web servers' responses no longer pass through the load balancer, they can spend more time on what they do best -- balancing traffic.  This allows for smaller, lower-powered load balancing servers from the beginning.  It also allows for increases in web nodes without big changes for the load balancers.</p>
<p>There are three main implementations of LVS to consider:</p>
<p><a href="http://rackerhacker.com/wp-content/uploads/2010/06/Lvslogo.png"><img src="http://rackerhacker.com/wp-content/uploads/2010/06/Lvslogo.png" alt="Linux Virtual Server Logo" title="Linux Virtual Server Logo" width="206" height="206" class="alignright size-full wp-image-1559" /></a><strong>LVS-DR: Direct Routing</strong><br />
The load balancer receives the request and sends the packet directly to a waiting real server to process.  LVS-DR has the best performance, but all of your servers must be on the same network subnet and they have to be able to share the same router (with no other routing devices in between them).</p>
<p><strong>LVS-TUN: Tunneling</strong><br />
This is very similar to the direct routing approach, but the packets are <a href="http://en.wikipedia.org/wiki/IP_tunnel">encapsulated</a> and sent directly to the real servers once the load balancer receives them.  This removes the restriction that all of the devices must be on the same network.  Thanks to encapsulation, you can use this method to load balance between multiple datacenters.</p>
<p><strong>LVS-NAT: Network Address Translation</strong><br />
Using NAT for LVS yields the least performance and scaling of all of the implementation options.  In this configuration, the incoming requests are rewritten so that they will be transported correctly in a NAT environment.  This puts a bigger burden on the load balancer as it must rewrite the requests quickly while still keeping up with how much work is being done by each web server.</p>
<hr />
<strong>Looking for a Linux Virtual Server HOWTO?</strong> Stay tuned.  I'm preparing one for my next post.</p>
<p><a href="http://rackerhacker.com/2010/06/27/modern-implementation-and-explanation-of-linux-virtual-server-lvs/">A modern implementation and explanation of Linux Virtual Server (LVS)</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2010/06/27/modern-implementation-and-explanation-of-linux-virtual-server-lvs/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>WordPress + W3 Total Cache + MaxCDN How-To</title>
		<link>http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/</link>
		<comments>http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 03:56:30 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[cdn]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1175</guid>
		<description><![CDATA[It's no secret that I'm a big fan of WordPress as a blog and CMS platform. While it does have its problems, it's relatively simple to set up, it's extensible, and -- when properly configured -- it has great performance. The WP Super Cache plugin has been a staple on my WordPress blogs for quite [...]<p><a href="http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/">WordPress + W3 Total Cache + MaxCDN How-To</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>It's no secret that I'm a big fan of <a href="http://wordpress.org/">WordPress</a> as a blog and CMS platform.  While it does have its problems, it's relatively simple to set up, it's extensible, and -- when properly configured -- it has great performance.  The <a href="http://wordpress.org/extend/plugins/wp-super-cache/">WP Super Cache</a> plugin has been a staple on my WordPress blogs for quite some time and it has solved almost all of my performance problems.</p>
<p>However, when you load up quite a few plugins or a heavy theme, the performance will dip due to the increased number of stylesheets, javascript files, and images.  You can compress and combine the stylesheets and javascript to decrease load times, but this may not get the performance to a level you like.</p>
<p>I was in this situation and I found a great solution: the <a href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache</a> plugin and the <a href="http://www.maxcdn.com/">MaxCDN</a> service.</p>
<p>To get started, <a href="http://www.maxcdn.com/">visit MaxCDN's site</a> and set up an account.  Their current promotion gives you 1TB of CDN bandwidth for one year for $10 (regularly $99).  Once you sign up, do the following:</p>
<ul>
<li>Click <strong>Manage Zones</strong></li>
<li>Click <strong>Create pull zone</strong></li>
</ul>
<p>At this point, you'll see a list of form fields to complete:</p>
<ul>
<li>Enter an alias for the pull zone name</li>
<li>The origin server URL is the URL that's normally used to access your site (i.e. rackerhacker.com)</li>
<li>The custom CDN domain is the URL you want to use for your CDN (i.e. cdn.rackerhacker.com)</li>
<li>The label can be anything you'd like to use to remember which zone is which</li>
<li>Enabling compression is generally a good idea</li>
</ul>
<p>Once you save the zone, MaxCDN will give you a new domain name.  You'll want to create a CNAME record that points from your CDN URL (for me, that's cdn.rackerhacker.com) to the really long URL that MaxCDN provides.</p>
<p><strong style="color: #D42020;">STOP HERE:</strong> Ensure that all of your DNS servers are replying with the CNAME record before you continue with the W3 Total Cache installation and CDN setup.  If you proceed without waiting for that, some of your blog's visitors will get errors when they try to load content via your CDN domain.</p>
<p>You're ready for W3 Total Cache now.  Install the plugin within your WordPress installation and activate it.  Hop into the settings for the plugin and make these adjustments:</p>
<ul>
<li>Enable <strong>Page Caching</strong> and set it to <strong>Disk (enhanced)</strong></li>
<li>Enable <strong>Minify</strong> and set it to <strong>Disk</strong></li>
<li>Enable <strong>Database Caching</strong> and set it to <strong>Disk</strong></li>
<li>Leave the CDN disabled for now, but flip the <strong>CDN Type</strong> to <strong>Origin Pull (Mirror)</strong></li>
<li>Press <strong>Save changes</strong></li>
</ul>
<p>Click <strong>CDN Settings</strong> at the top of the page and configure the CDN:</p>
<ul>
<li>Enter your CDN domain (for me, it's cdn.rackerhacker.com) in the top form field</li>
<li>Leave the other options as they are by default and click <strong>Save changes</strong></li>
</ul>
<p>W3 Total Cache should prompt you to clear out your page cache, and that would be recommended at this step.  If you fully reload your blog's main page in your browser (may require you to hold SHIFT while you click reload/refresh) and check the page source, you should see your CDN URL appear for some of the javascript or CSS files.</p>
<p>You may discover that some CSS files, stylesheets, or images aren't being loaded via the CDN automatically.  Luckily, that's an easy fix.  Under the <strong>Minify Settings</strong> section of the W3 Total Cache plugin settings, scroll to the very bottom.  Add in your javascript or CSS files via the form fields at the bottom and the plugin should handle the minifying (is that even a word?) and the CDN URL rewriting for you.</p>
<p>Further reading:</p>
<ul>
<li><a href="http://www.maxcdn.com/wordpress-cdn-module.php">MaxCDN WordPress Integration Overview</a></li>
<li><a href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache plugin page at wordpress.org</a></li>
<li><a href="http://www.w3-edge.com/wordpress-plugins/w3-total-cache/">W3 Total Cache main site</a></li>
</ul>
<p><a href="http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/">WordPress + W3 Total Cache + MaxCDN How-To</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>MySQL performance flow chart</title>
		<link>http://rackerhacker.com/2009/02/04/mysql-performance-flow-chart/</link>
		<comments>http://rackerhacker.com/2009/02/04/mysql-performance-flow-chart/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 17:00:29 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=756</guid>
		<description><![CDATA[As much as some people might disagree, optimizing MySQL isn't rocket science. There are some basic steps that every server administrator can follow to improve the performance of their MySQL server. I've outlined these steps in the flow chart included in this post. While it won't include all situations, it will give ideas to those [...]<p><a href="http://rackerhacker.com/2009/02/04/mysql-performance-flow-chart/">MySQL performance flow chart</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://cdn.cloudfiles.mosso.com/c8031/improvingmysqlperformance.pdf"><img alt="" src="http://cdn.cloudfiles.mosso.com/c8031/improvingmysqlperformance.jpg" title="Improving MySQL Performance flow chart" class="alignright" width="306" height="240" /></a><br />
As much as some people might disagree, optimizing MySQL isn't rocket science.  There are some basic steps that every server administrator can follow to improve the performance of their MySQL server.  I've outlined these steps in the flow chart included in this post.</p>
<p>While it won't include all situations, it will give ideas to those who are just starting down the path of MySQL optimization.  If you find any corrections or if you have suggestions for improvements, please let me know!</p>
<p><strong>UPDATE:</strong> I've received a lot of positive feedback via twitter and e-mail about the flow chart idea.  I'll try to work on some more charts soon and get them onto the site.  Let me know if there are specific topics that you're interested in.</p>
<p><a href="http://rackerhacker.com/2009/02/04/mysql-performance-flow-chart/">MySQL performance flow chart</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2009/02/04/mysql-performance-flow-chart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hunting down elusive sources of iowait</title>
		<link>http://rackerhacker.com/2008/03/11/hunting-down-elusive-sources-of-iowait/</link>
		<comments>http://rackerhacker.com/2008/03/11/hunting-down-elusive-sources-of-iowait/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 18:00:18 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[iowait]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2008/03/11/hunting-down-elusive-sources-of-iowait/</guid>
		<description><![CDATA[A question I'm asked daily is "How can I find out what is generating iowait on my server?" Sure, you can dig through pages of lsof output, restart services, or run strace, but it can be a frustrating process. I saw a process on this blog post, and I changed the regexes to fit Red [...]<p><a href="http://rackerhacker.com/2008/03/11/hunting-down-elusive-sources-of-iowait/">Hunting down elusive sources of iowait</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>A question I'm asked daily is "How can I find out what is generating iowait on my server?"  Sure, you can dig through pages of lsof output, restart services, or run strace, but it can be a frustrating process.  I saw a process on <a href="http://blog.eikke.com/index.php/ikke/2007/03/22/who_s_abusing_my_sata_controller">this blog post</a>, and I changed the regexes to fit Red Hat and CentOS systems a bit better:</p>
<p><code># /etc/init.d/syslog stop<br />
# echo 1 > /proc/sys/vm/block_dump<br />
# dmesg | egrep "READ|WRITE|dirtied" | egrep -o '([a-zA-Z]*)' | sort | uniq -c | sort -rn | head<br />
   1526 mysqld<br />
    819 httpd<br />
    429 kjournald<br />
     35 qmail<br />
     27 in<br />
      7 imapd<br />
      6 irqbalance<br />
      5 pop<br />
      4 pdflush<br />
      3 spamc</code></p>
<p>In my specific situation, it looks like MySQL is the biggest abuser of my disk, followed by Apache and the filesystem journaling.  As expected, qmail is a large contender, too.</p>
<p><strong>Don't forget to set things back to their normal state when you're done!</strong></p>
<p><code># echo 0 > /proc/sys/vm/block_dump<br />
# /etc/init.d/syslog start</code></p>
<p><a href="http://rackerhacker.com/2008/03/11/hunting-down-elusive-sources-of-iowait/">Hunting down elusive sources of iowait</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/03/11/hunting-down-elusive-sources-of-iowait/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

