<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Barry on WordPress</title>
	<atom:link href="http://barry.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://barry.wordpress.com</link>
	<description>Barry on WordPress.com</description>
	<lastBuildDate>Tue, 24 Jan 2012 13:53:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='barry.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/9d76a0bdad6065d9fe3b3f9a3454d05d?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Barry on WordPress</title>
		<link>http://barry.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://barry.wordpress.com/osd.xml" title="Barry on WordPress" />
	<atom:link rel='hub' href='http://barry.wordpress.com/?pushpress=hub'/>
		<item>
		<title>iPad Stats Visualization</title>
		<link>http://barry.wordpress.com/2011/11/30/ipad-stats-visualization/</link>
		<comments>http://barry.wordpress.com/2011/11/30/ipad-stats-visualization/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 15:39:01 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[automattic]]></category>

		<guid isPermaLink="false">http://barry.wordpress.com/?p=733</guid>
		<description><![CDATA[Evan has a cool post showing some of our internal heat map stats and some interesting points on data visualization.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=733&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Evan has a <a href="http://evansolomon.me/notes/data-visualization-is-itself-data/">cool post</a> showing some of our internal heat map stats and some interesting points on data visualization. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/barry.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/barry.wordpress.com/733/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/barry.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/barry.wordpress.com/733/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/barry.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/barry.wordpress.com/733/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/barry.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/barry.wordpress.com/733/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/barry.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/barry.wordpress.com/733/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/barry.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/barry.wordpress.com/733/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/barry.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/barry.wordpress.com/733/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=733&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://barry.wordpress.com/2011/11/30/ipad-stats-visualization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/713072bbe89035a79c17d19e53dd5d9b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">barry</media:title>
		</media:content>
	</item>
		<item>
		<title>Speaking at WordCamp San Francisco</title>
		<link>http://barry.wordpress.com/2011/07/20/speaking-at-wordcamp-san-francisco/</link>
		<comments>http://barry.wordpress.com/2011/07/20/speaking-at-wordcamp-san-francisco/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 03:30:53 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[wordcamp]]></category>

		<guid isPermaLink="false">http://barry.wordpress.com/?p=650</guid>
		<description><![CDATA[After a 3 year speaking hiatus from WordCamp SF, I am excited about speaking again this year.  The most interesting part of my talks is usually the Q&#38;A at the end, so this time we decided to get rid of the talk and go straight to the Q&#38;A. It will focus on running large WordPress installations, but [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=650&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After a 3 year speaking hiatus from WordCamp SF, I am excited about <a href="http://2011.sf.wordcamp.org/2011/07/17/a-dozen-more-speakers-announced/">speaking</a> again this year.  The most interesting part of my talks is usually the Q&amp;A at the end, so this time we decided to get rid of the talk and go straight to the Q&amp;A. It will focus on running large WordPress installations, but I&#8217;m sure there will be time to discuss other WordPress-related things. Bring your questions and make them difficult!  If you have a question but won&#8217;t be able to attend, please ask in the comments and I will try to answer it during the session (which I think will be recorded).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/barry.wordpress.com/650/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/barry.wordpress.com/650/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/barry.wordpress.com/650/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/barry.wordpress.com/650/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/barry.wordpress.com/650/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/barry.wordpress.com/650/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/barry.wordpress.com/650/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/barry.wordpress.com/650/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/barry.wordpress.com/650/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/barry.wordpress.com/650/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/barry.wordpress.com/650/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/barry.wordpress.com/650/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/barry.wordpress.com/650/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/barry.wordpress.com/650/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=650&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://barry.wordpress.com/2011/07/20/speaking-at-wordcamp-san-francisco/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/713072bbe89035a79c17d19e53dd5d9b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">barry</media:title>
		</media:content>
	</item>
		<item>
		<title>HyperDB Replication Lag Detection</title>
		<link>http://barry.wordpress.com/2011/07/20/hyperdb-lag-detection/</link>
		<comments>http://barry.wordpress.com/2011/07/20/hyperdb-lag-detection/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 07:09:51 +0000</pubDate>
		<dc:creator>Iliya Polihronov</dc:creator>
				<category><![CDATA[scaling]]></category>
		<category><![CDATA[wordpress.com]]></category>
		<category><![CDATA[hyperdb]]></category>

		<guid isPermaLink="false">http://barry.wordpress.com/?p=612</guid>
		<description><![CDATA[Howdy &#8211; Iliya here again. Seems like I am taking over Barry&#8217;s blog. Hopefully this will motivate him to blog more. On WordPress.com we have over 218 million tables and perform tens of thousands queries per second. To scale all of this, we shard our 24 million blogs across more than 550 MySQL servers. This [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=612&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><cite>Howdy &#8211; Iliya here again. Seems like I am taking over Barry&#8217;s blog. Hopefully this will motivate him to blog more.</cite></p>
<p>On WordPress.com we have over 218 million tables and perform tens of thousands queries per second. To scale all of this, we shard our 24 million blogs across more than 550 MySQL servers. This allows us to cope with load bursts and to handle database servers failures.</p>
<p>For those who are unfamiliar, MySQL data replication is asynchronous and works as follows:</p>
<ol>
<li><strong>[Master]</strong> Receives a query that modifies database structure or content (INSERT, UPDATE, ALTER etc.)</li>
<li><strong>[Master]</strong> The query is written to a log file (aka the binlog).</li>
<li><strong>[Master]</strong> The query is executed on the master.</li>
<li><strong>[Slaves]</strong> Create a “Slave I/O” thread that connects to the [Master] and requests all new queries from the mater’s binlog.</li>
<li><strong>[Master]</strong> Creates a “Binlog dump” thread for each connected slave, that reads the requested events from the binlog and sends them to the slave.</li>
<li><strong>[Slaves]</strong> Start a “Slave SQL” thread which reads queries from the log file written by the “Slave I/O” thread and executes them</li>
</ol>
<p>There are a number of things to be considered in this scenario, which can lead to a condition known as <em><strong>replication lag </strong></em>where the slaves have older data then the master:</p>
<ul>
<li>Since only one thread on the slave executes write queries, and there are many execution threads on the master, there is no guarantee that the slave will be able to execute queries with the same speed as the master.</li>
<li>Long running SELECTs or explicit locks on the slave, will cause the “Slave SQL” thread to wait, thus slowing it down.</li>
<li>Long running queries on the master would take at least the same amount of time to run on the slave, causing it to fall behind the master</li>
<li>I/O (disk or network) issues can prevent or slow down the slave from reading and replaying the binlog events</li>
</ul>
<p>In order to deal with this, we needed a way to avoid connections to lagged slaves as long as there are slaves that are current. This would allow for the lagged ones to recover faster and avoid returning old data to our users. It also had to be something flexible enough, so we could have different settings for acceptable replication lag per dataset or stop tracking it altogether. Since we use the advanced database class, <a href="http://codex.wordpress.org/HyperDB">HyperDB</a>, for all our database connections, it was the obvious place to integrate this.</p>
<p>We implemented it  in the following steps:</p>
<ul>
<li>If a connection modifies data in a given table, then all subsequent SELECTs on the same connection for that table are sent to the master. Chances are replication won&#8217;t be fast enough to propagate the changes to the slaves on the same page load.  This logic has existed in HyperDB for a while.</li>
<li>Before we make a connection to a slave, we use a callback, to check if we have information for this slave’s lag in the cache and we skip it based on that, unless all slaves in the dataset are considered lagged.  In case replication breaks on all slaves, we would rather return old data then overload the master with read queries and cause an outage.</li>
<li>After a successful connection to a slave, if there was nothing in the cache regarding its lag status and not all slaves are considered lagged, we execute a second callback that checks whether this slave is lagged and updates the cache.</li>
</ul>
<p>A slave is considered lagged when it has a “lag threshold” defined in it’s dataset configuration and the current lag is more than this threshold.</p>
<p>We considered the following options for checking if a slave is lagged.  No MySQL patches are required for any of them:</p>
<ul>
<li>Checking the value of <strong>Seconds_Behind_Master </strong>from the <code>SHOW SLAVE STATUS</code> statement executed on the slave. It shows the difference between the timestamp of the currently executed query and the latest query we have received from the master. Although it is easy to implement and has low overhead, the main problem with using this option is that it is not completely reliable, as it can be tricked by IO latency and/or master connection problems.</li>
<li>Tracking the “File” and “Position” on <code>SHOW MASTER STATUS</code> executed on the master and comparing it to Relay_Master_Log_File and Exec_Master_Log_Pos of <code>SHOW SLAVE STATUS</code> on the slave. This way we can wait until the slave executes the queries from binlog “file” and position “position” before send certain queries to that slave and thus effectively we wait for the data to be replicated to the point where we need it. While very reliable, this option is more complex, has lots of overhead and doesn’t give us clock time value which we can track and set between servers.</li>
<li>Tracking the difference between the current time on the slave and the replication of a timestamp update from the master, which runs every second. This is basically what <a href="//www.maatkit.org/doc/mk-heartbeat.html">mk-heartbeat</a> does. It requires proper time sync between the master and the slave servers but is otherwise very reliable.</li>
</ul>
<p>The third option fit our needs best, however the code is flexible enough to easily support any of these. For caching, we decided to go with memcached, since it works well in our distributed, multi-server, multi-datacenter environment, but other methods (APC cache, shared memory, custom daemon etc.) would work just fine.</p>
<p>HyperDB is free, open-source and easy to integrate in your WordPress installation. You can download it <a href="//wordpress.org/extend/plugins/hyperdb/">here</a>.  We hope you enjoy this new functionality and please let us know if you have any questions in the comments.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/barry.wordpress.com/612/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/barry.wordpress.com/612/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/barry.wordpress.com/612/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/barry.wordpress.com/612/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/barry.wordpress.com/612/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/barry.wordpress.com/612/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/barry.wordpress.com/612/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/barry.wordpress.com/612/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/barry.wordpress.com/612/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/barry.wordpress.com/612/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/barry.wordpress.com/612/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/barry.wordpress.com/612/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/barry.wordpress.com/612/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/barry.wordpress.com/612/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=612&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://barry.wordpress.com/2011/07/20/hyperdb-lag-detection/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<georss:point>0.000000 0.000000</georss:point>
		<geo:lat>0.000000</geo:lat>
		<geo:long>0.000000</geo:long>
		<media:content url="http://1.gravatar.com/avatar/b0be4235dbf38547a7c26ef8ec94934b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">vnsavage</media:title>
		</media:content>
	</item>
		<item>
		<title>Uptime related server crashes</title>
		<link>http://barry.wordpress.com/2011/06/14/uptime-related-server-crashes/</link>
		<comments>http://barry.wordpress.com/2011/06/14/uptime-related-server-crashes/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 05:48:30 +0000</pubDate>
		<dc:creator>Iliya Polihronov</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://barry.wordpress.com/?p=549</guid>
		<description><![CDATA[This is a guest post by Iliya Polihronov.  Iliya is the newest member of the global infrastructure, systems, and security team at Automattic and the first ever guest blogger here on barry.wordpress.com. Hey, my name is Iliya and as a Systems Wrangler at Automattic, I am one of the people handling the server-side issues across the 2000 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=549&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><cite>This is a guest post by Iliya Polihronov.  Iliya is the newest member of the global infrastructure, systems, and security team at Automattic and the first ever guest blogger here on barry.wordpress.com.</cite></p>
<p>Hey, my name is Iliya and as a Systems Wrangler at Automattic, I am one of the people handling the server-side issues across the 2000 servers running WordPress.com and other <a href="http://automattic.com/">Automattic services</a>.</p>
<p>Last week, within two hours of each other, two of our <a href="http://code.google.com/p/mogilefs/wiki/Users">MogileFS</a> storage servers locked up with the following trace:</p>
<p><a href="http://barry.wordpress.com/2011/06/14/uptime-related-server-crashes/find_busiest_group/" rel="attachment wp-att-552"><img class="aligncenter size-medium wp-image-552" title="find_busiest_group" src="http://barry.files.wordpress.com/2011/05/find_busiest_group.jpg?w=500" alt="" width="500" /></a></p>
<p>The next day, a few more servers crashed with similar traces.</p>
<p>We started searching for a common pattern. All hosts were running <strong>Debian kernels ranging from 2.6.32-21 to 2.6.32-24</strong>, some of them were in different data centers and had different purposes in our network.</p>
<p>One thing we noticed was that all of the servers crashed after having an uptime of a little more than 200 days. After some research and investigation, we found that the culprit appears to be a quite interesting kernel bug.</p>
<p>As part of the scheduler load balancing algorithm, the kernel searches for the busiest group within a given scheduling domain. In order to do that it has to take into account the average load for all groups. It is calculated in the function find_busiest_group() with:</p>
<p><code>sds.avg_load = (SCHED_LOAD_SCALE * sds.total_load) / sds.total_pwr;</code></p>
<p><strong>sds.total_load</strong> is the sum of the load on all CPUs in the scheduling domain, based on the run queue tasks and their priority.</p>
<p><strong>SCHED_LOAD_SCALE</strong> is a constant used to increase resolution.</p>
<p><strong>sds.total_pwr</strong> is the sum of the power of all CPUs in the scheduling domain. This sum ends up being zero and that’s what causing the crash &#8211; <strong>division by zero</strong>.</p>
<p>The “CPU power” is used to take into account how much calculating capabilities a CPU has compared to the other CPUs and the main factors for calculating it are:</p>
<p>1. Whether the CPU is shared, for example by using multithreading.<br />
2. How many real-time tasks the CPU is processing.<br />
3. In newer kernels,  how much time the CPU had spent processing IRQs.</p>
<p>The current <a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blobdiff;f=kernel/sched_fair.c;h=74cccfae87a8e9a6e6d0845374dab82cd367500c;hp=c358d4081b81854dedd3d6bb8488af9dfbc18497;hb=aa483808516ca5cacfa0e5849691f64fec25828e;hpb=305e6835e05513406fa12820e40e4a8ecb63743c">suggested fix</a> for this bug is relying on the theory that while taking into account the real-time tasks (#2 above), scale_rt_power() could return negative value, and thus the sum of all CPU powers may end up being zero.</p>
<p>This was merged into the <strong>2.6.32.29 vanilla kernel</strong>, together with the IRQ accounting into the cpu_power (#3  above). It is also merged into the <strong>Debian 2.6.32-31 kernel</strong>.</p>
<p>Alternatively, the scheduling load balancing can be turned off, which would effectively skip the related code. This can be done using control groups, however it should be used with caution as it may cause performance issues:</p>
<p><code> mount -t cgroup -o cpuset cpuset /cgroups<br />
echo 0 &gt; /cgroups/cpuset.sched_load_balance<br />
</code></p>
<p>As it is yet not absolutely clear if the suggested fix really fixes the problem, we will try to post updates on any new developments as we observe them.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/barry.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/barry.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/barry.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/barry.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/barry.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/barry.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/barry.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/barry.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/barry.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/barry.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/barry.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/barry.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/barry.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/barry.wordpress.com/549/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=549&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://barry.wordpress.com/2011/06/14/uptime-related-server-crashes/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0be4235dbf38547a7c26ef8ec94934b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">vnsavage</media:title>
		</media:content>

		<media:content url="http://barry.files.wordpress.com/2011/05/find_busiest_group.jpg" medium="image">
			<media:title type="html">find_busiest_group</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress.com DDoS Details</title>
		<link>http://barry.wordpress.com/2011/03/07/wordpress-com-ddos-details/</link>
		<comments>http://barry.wordpress.com/2011/03/07/wordpress-com-ddos-details/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 17:00:19 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[servers]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[wordpress.com]]></category>
		<category><![CDATA[ddos]]></category>

		<guid isPermaLink="false">http://barry.wordpress.com/?p=468</guid>
		<description><![CDATA[As you may have heard, on March 3rd and into the 4th, 2011, WordPress.com was targeted by a rather large Distributed Denial of Service Attack. I am part of the systems and infrastructure team at Automattic and it is our team&#8217;s responsibility to a) mitigate the attack, b) communicate status updates and details of the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=468&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As you may have <a href="http://www.techmeme.com/110303/p41">heard</a>, on March 3rd and into the 4th, 2011, WordPress.com was targeted by a rather large <a href="http://en.wikipedia.org/wiki/Denial-of-service_attack">Distributed Denial of Service Attack</a>. I am part of the systems and infrastructure team at Automattic and it is our team&#8217;s responsibility to a) mitigate the attack, b) communicate status updates and details of the attack, and c) figure out how to better protect ourselves in the future.  We are still working on the third part, but I wanted to share some details here.</p>
<p>One of our hosting partners, <a href="http://peer1.com">Peer1</a>, provided us these <a href="http://www.inmon.com/">InMon</a> graphs to help illustrate the timeline. What we saw was not one single attack, but 6 separate attacks beginning at 2:10AM PST on March 3rd. All of these attacks were directed at a single site hosted on WordPress.com&#8217;s servers. The first graph shows the size of the attack in bits per second (bandwidth), and the second graph shows packets per second. The different colors represent source IP ranges.</p>
<p><a rel="attachment wp-att-491" href="http://barry.wordpress.com/2011/03/07/wordpress-com-ddos-details/ddos-6/"><img class="alignnone size-full wp-image-491" title="DDoS-6" src="http://barry.files.wordpress.com/2011/03/ddos-6.png?w=490" alt=""   /></a></p>
<p><a rel="attachment wp-att-490" href="http://barry.wordpress.com/2011/03/07/wordpress-com-ddos-details/ddos-5/"><img class="alignnone size-full wp-image-490" title="DDoS-5" src="http://barry.files.wordpress.com/2011/03/ddos-5.png?w=490" alt=""   /></a></p>
<p><a rel="attachment wp-att-490" href="http://barry.wordpress.com/2011/03/07/wordpress-com-ddos-details/ddos-5/"></a>The first 5 attacks caused minimal disruption to our infrastructure because they were smaller in size and shorter in duration. The largest attack began at 9:20AM PST and was mostly blocked by 10:20AM PST. The attacks were TCP floods directed at port 80 of our load balancers. These types of attacks try to fill the network links and overwhelm network routers, switches, and servers  with &#8220;junk&#8221; packets which prevents legitimate requests from getting through.</p>
<p>The last TCP flood (the largest one on the graph) saturated the links of some of our providers and overwhelmed the core network routers in one of our data centers. In order to block the attack effectively, we had to work directly with our hosting partners and their Tier 1 bandwidth providers to filter the attacks upstream. This process took an hour or two.</p>
<p>Once the last attack was mitigated at around 10:20AM PST, we saw a lull in activity.  On March 4th around 3AM PST, the attackers switched tactics. Rather than a TCP flood, they switched to a HTTP resource consumption attack.  Enlisting a bot-net consisting of thousands of compromised PCs, they made many thousands of simultaneous HTTP requests in an attempt to overwhelm our servers.  The source IPs were completely different than the previous attacks, but mostly still from China.  Fortunately for us, the WordPress.com grid harnesses over 3,600 CPU cores in our web tier alone, so we were able to quickly mitigate this attack and identify the target.</p>
<p>We see denial of service attacks every day on WordPress.com and 99.9% of them have no user impact. This type of attack made it difficult to initially determine the target since the incoming DDoS traffic did not have any identifying information contained in the packets.  WordPress.com hosts over <a href="http://en.wordpress.com/stats/">18 million</a> sites, so finding the needle in the haystack is a challenge. This attack was large, in the 4-6Gbit range, but not the largest we have seen.  For example, in 2008, we <a href="http://www.infoworld.com/d/security-central/dos-attack-prevents-access-wordpresscom-blogs-522">experienced</a> a DDoS in the 8Gbit/sec range.</p>
<p>While it is true that some attacks are <a href="http://techcrunch.com/2011/03/04/wordpress/">politically motivated</a>, contrary to our initial suspicions, we have no reason to believe this one was.  We are big proponents of free speech and aim to provide a platform that supports that freedom. We even have <em>dedicated infrastructure</em> for sites under active attack.  Some of these attacks last for months, but this allows us to keep these sites online and not put our other users at risk.</p>
<p>We also don&#8217;t put all of our eggs in one basket.  WordPress.com alone has 24 load balancers in 3 different data centers that serve production traffic. These load balancers are deployed across different network segments and different IP ranges.  As a result, some sites were only affected for a couple minutes (when our provider&#8217;s core network infrastructure failed) throughout the duration of these attacks.  We are working on ways to improve this segmentation even more.</p>
<p>If you have any questions, feel free to leave them in the comments and I will try to answer them.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/barry.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/barry.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/barry.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/barry.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/barry.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/barry.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/barry.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/barry.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/barry.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/barry.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/barry.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/barry.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/barry.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/barry.wordpress.com/468/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=468&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://barry.wordpress.com/2011/03/07/wordpress-com-ddos-details/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/713072bbe89035a79c17d19e53dd5d9b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">barry</media:title>
		</media:content>

		<media:content url="http://barry.files.wordpress.com/2011/03/ddos-6.png" medium="image">
			<media:title type="html">DDoS-6</media:title>
		</media:content>

		<media:content url="http://barry.files.wordpress.com/2011/03/ddos-5.png" medium="image">
			<media:title type="html">DDoS-5</media:title>
		</media:content>
	</item>
		<item>
		<title>Dell MD3000 Multipath on Debian</title>
		<link>http://barry.wordpress.com/2009/12/16/dell-md3000-multi-path-on-debian/</link>
		<comments>http://barry.wordpress.com/2009/12/16/dell-md3000-multi-path-on-debian/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 03:03:13 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[servers]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[dell]]></category>
		<category><![CDATA[multipath]]></category>

		<guid isPermaLink="false">http://barry.wordpress.com/?p=387</guid>
		<description><![CDATA[We are in the process of deploying some new infrastructure to store the 150+GB of new content (media only, not including text) uploaded to WordPress.com daily. After some searching and testing, we have decided to use the open source software MogileFS developed in part by our friends at Six Apart. Our initial deployment is going [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=387&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We are in the process of deploying some new infrastructure to store the 150+GB of new content (media only, not including text) uploaded to WordPress.com daily.</p>
<div id="attachment_402" class="wp-caption aligncenter" style="width: 460px"><a href="http://barry.wordpress.com/?attachment_id=402"><img class="size-large wp-image-402  " title="upload-gb" src="http://barry.files.wordpress.com/2009/12/upload-gb.png?w=450&#038;h=114" alt="" width="450" height="114" /></a><p class="wp-caption-text">WordPress.com data in GB</p></div>
<p>After some searching and testing, we have decided to use the open source software <a href="http://www.danga.com/mogilefs/">MogileFS</a> developed in part by our friends at Six Apart.  Our initial deployment is going to be 180TB of storage in a single data center and we plan to expand this to include multiple data centers in early 2010.  In order to get that amount of storage affordably, the options are limited.  We thought about building <a href="http://blog.backblaze.com/2009/09/01/petabytes-on-a-budget-how-to-build-cheap-cloud-storage/">Backblaze</a> devices, but decided that the ongoing management of these in our hosting environment would be prohibitively complicated.  We eventually settled on Dell&#8217;s <a href="http://www.dell.com/content/products/productdetails.aspx/pvaul_md3000">MD PowerVault</a> series.  Our configuration consists of:</p>
<ul>
<li>4 x Dell R710 ( 32GB RAM/2 x Intel E5540/2 x 146GB SAS RAID 1)</li>
<li>4 x Dell MD3000 (15 x 1TB 7200 RPM HDD each)</li>
<li>8 x Dell MD1000 (15 x 1TB 7200 RPM HDD each)</li>
</ul>
<p>Each Dell R710 is connected to a MD3000 and then 2 MD1000s are connected to each MD3000.  The end result is 4 self-contained units, each providing 45TB of storage for a total of 180TB.</p>
<div id="attachment_405" class="wp-caption aligncenter" style="width: 283px"><a rel="attachment wp-att-405" href="http://barry.wordpress.com/2009/12/16/dell-md3000-multi-path-on-debian/mogilfs_stack_b/"><img class="size-full wp-image-405 " title="mogilfs_stack_b" src="http://barry.files.wordpress.com/2009/12/mogilfs_stack_b.png?w=490" alt=""   /></a><p class="wp-caption-text">Illustration by Joe Rodriguez</p></div>
<p>Our proof of concept was deployed on a single Dell 2950 connected to a MD1000 and things worked relatively flawlessly.  We could use all of our <a href="http://hwraid.le-vert.net/wiki/LSIMegaRAIDSAS">existing</a> <a href="http://linux.dell.com/monitoring.shtml">tools</a> to monitor, manage, and configure the devices when needed.  Little did I know the MD3000s were so much of a pain <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Since we are using MogileFS which handles the distribution of files across various hosts and devices, we wanted these devices setup in what I thought was a relatively simple JBOD configuration.  Each drive would be exported as a device to the OS, then we would mount 45 devices per machine and MogileFS would take care of the rest.  Didn&#8217;t exactly work that way.</p>
<p>When the hardware was initially deployed to us, they were configured in a high availability (HA) setup, with each controller on the MD3000 connected to a controller on the R710.  This way, if a controller fails, in theory the storage is still accessible.  The problem with this type of setup is that in order to make it work flawlessly, you need to use the Dell multi-path proxy and mpt drivers, not the ones provided by the Linux kernel.  Dell&#8217;s provided stuff doesn&#8217;t work on Debian.  Initially, without multipath configured, some confusing stuff happens &#8212; we had 90 devices detected by the OS (/dev/sdb through /dev/sdcn), but every other device was un-reachable.  After some trial and error with various multipath configurations, and some <a href="http://www.tchetch.net/wiki/debian/multipath_ibm_ds4000">help</a> I ended up with this:</p>
<p><code>apt-get install multipath-tools</code></p>
<p>Our multipath.conf:</p>
<p><pre class="brush: bash;">
defaults {  
        getuid_callout &quot;/lib/udev/scsi_id -g -u -s /block/%n&quot;  
		user_friendly_names on
}  
devices {  
        device {  
                vendor DELL*  
                product MD3000*  
                path_grouping_policy failover  
                getuid_callout &quot;/lib/udev/scsi_id -g -u --device=/dev/%n&quot;
                features &quot;1 queue_if_no_path&quot;  
                path_checker rdac  
                prio_callout &quot;/sbin/mpath_prio_rdac /dev/%n&quot;  
                hardware_handler &quot;1 rdac&quot;  
                failback immediate  
        }  
}  
blacklist {  
       device {  
               vendor DELL.*  
               product Universal.*  
       }  
       device {  
               vendor DELL.*  
               product Virtual.*  
       }  
}
</pre></p>
<p><code> multipath -F<br />
multipath -v2<br />
/etc/init.d/multipath-tools start<br />
</code></p>
<p>This gave me a bunch of device names in /dev/mapper/* which I could access, partition, format, and mount. A few things to note:</p>
<ul>
<li>user_friendly_names doesn&#8217;t seem to work.  The devices were all still labeled by their <a href="http://en.wikipedia.org/wiki/World_Wide_Name">WWID</a> even with that option enabled</li>
<li>The status of the paths as shown by multipath -ll seemed to change over time (from active to ghost).  Not sure why.</li>
<li>Even with all of this set up and working, I still was seeing the occasional I/O error and path failure reported in the logs</li>
</ul>
<p>After a few hours of &#8220;fun&#8221; with this, I decided that it wasn&#8217;t worth the hassle or complexity and since we have redundant storage devices anyway, we would just configure the devices in &#8220;single path&#8221; mode and mount them directly and forego multipath.  Not so fast&#8230;according to Dell engineers, &#8220;single path mode&#8221; is not supported.  Easy enough, lets un-plug one of the controllers, creating our own &#8220;single path mode&#8221; and everything should work, right?  Sort of.</p>
<p>If you just go and unplug the controller while everything is running, nothing works.  The OS needs to re-scan the devices in order to address them properly.  The easiest way for this to happen is to reboot (sure this isn&#8217;t Windows?).  After a reboot, the OS properly saw 45 devices (/dev/sdb &#8211; /dev/sdau) which is what I would have expected.  The only problem was that every other device was inaccessible!  It turns out, that the MD3000 tries to balance the devices across the 2 controllers, and 1/2 of the drives had been assigned a preferred path of controller 1 which was unplugged.  After some additional MD3000 configuration, we were able to force all of the devices to prefer controller 0 and everything was accessible once again.</p>
<p>Only other thing worth noting here is that the MD3000 exports an addition device that you may not recognize:</p>
<p><code>scsi 1:0:0:31: Direct-Access     DELL     Universal Xport  0735 PQ: 0 ANSI: 5</code></p>
<p>For us this was LUN 31 and the number doesn&#8217;t seem user configurable, but I suppose other hardware may assign a different LUN.  This is a management device for the MD3000 and not a device that you can or should partition, format, or mount.  We just made sure to skip it in our setup scripts.</p>
<p>I suppose if we were running Red Hat Enterprise Linux, CentOS, SUSE, or Windows, this would have all worked a bit more smoothly, but I don&#8217;t want to run any of those.  We have over 1000 Debian servers deployed and I have no plans on switching just because of Dell.  I really wish Dell would make their stuff less distro-specific &#8212; it would make things easier for everyone.</p>
<p>Is anyone else successfully running this type of hardware configuration on Debian using multipath?  Have you tested a failure?  Do you have random I/O errors in your logs?  Would love to hear stories and tips.</p>
<p>I have some more posts to write about our adventures in Dell MD land.  The next one will be about getting Dell&#8217;s SMcli working on Debian, and then after that a post with some details of our  MogileFS implementation.</p>
<p>* Thanks to the fine folks at<a href="http://www.layeredtech.com/"> Layered Tech</a> for helping us tweak the MD3000 configuration throughout this process.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/barry.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/barry.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/barry.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/barry.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/barry.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/barry.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/barry.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/barry.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/barry.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/barry.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/barry.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/barry.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/barry.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/barry.wordpress.com/387/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=387&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://barry.wordpress.com/2009/12/16/dell-md3000-multi-path-on-debian/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/713072bbe89035a79c17d19e53dd5d9b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">barry</media:title>
		</media:content>

		<media:content url="http://barry.files.wordpress.com/2009/12/upload-gb.png?w=450" medium="image">
			<media:title type="html">upload-gb</media:title>
		</media:content>

		<media:content url="http://barry.files.wordpress.com/2009/12/mogilfs_stack_b.png" medium="image">
			<media:title type="html">mogilfs_stack_b</media:title>
		</media:content>
	</item>
		<item>
		<title>WordCamp Presentations</title>
		<link>http://barry.wordpress.com/2009/12/05/wordcamp-presentations/</link>
		<comments>http://barry.wordpress.com/2009/12/05/wordcamp-presentations/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 19:17:49 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[presentation]]></category>
		<category><![CDATA[wordcamp]]></category>

		<guid isPermaLink="false">http://barry.wordpress.com/?p=382</guid>
		<description><![CDATA[I have uploaded my slides from WordCamp NYC and WordCamp Orlando to Slideshare.  Check &#8216;em out!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=382&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have uploaded my slides from <a href="http://www.slideshare.net/bazza/ssds-are-awesome">WordCamp NYC</a> and <a href="http://www.slideshare.net/bazza/high-performance-wordpress-ii">WordCamp Orlando</a> to Slideshare.  Check &#8216;em out!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/barry.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/barry.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/barry.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/barry.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/barry.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/barry.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/barry.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/barry.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/barry.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/barry.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/barry.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/barry.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/barry.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/barry.wordpress.com/382/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=382&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://barry.wordpress.com/2009/12/05/wordcamp-presentations/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/713072bbe89035a79c17d19e53dd5d9b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">barry</media:title>
		</media:content>
	</item>
		<item>
		<title>Looking for WordPress geniuses</title>
		<link>http://barry.wordpress.com/2009/11/07/looking-for-wordpress-geniuses/</link>
		<comments>http://barry.wordpress.com/2009/11/07/looking-for-wordpress-geniuses/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 16:35:52 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[wordcamp]]></category>

		<guid isPermaLink="false">http://barry.wordpress.com/?p=376</guid>
		<description><![CDATA[If you are attending WordCamp NYC this year and have ever upgraded WordPress, please consider volunteering for an hour at the Genius Bar.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=376&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you are attending WordCamp NYC this year and have ever upgraded WordPress, please consider <a href="http://2009.newyork.wordcamp.org/2009/11/07/calling-all-geniuses/">volunteering</a> for an hour at the Genius Bar.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/barry.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/barry.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/barry.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/barry.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/barry.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/barry.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/barry.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/barry.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/barry.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/barry.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/barry.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/barry.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/barry.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/barry.wordpress.com/376/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=376&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://barry.wordpress.com/2009/11/07/looking-for-wordpress-geniuses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/713072bbe89035a79c17d19e53dd5d9b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">barry</media:title>
		</media:content>
	</item>
		<item>
		<title>Systems Q&amp;A at WordCamp Dev Day</title>
		<link>http://barry.wordpress.com/2009/06/02/systems-qa-at-wordcamp-dev-day/</link>
		<comments>http://barry.wordpress.com/2009/06/02/systems-qa-at-wordcamp-dev-day/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 06:05:48 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[p2]]></category>
		<category><![CDATA[q&a]]></category>
		<category><![CDATA[scaling]]></category>

		<guid isPermaLink="false">http://barry.wordpress.com/?p=359</guid>
		<description><![CDATA[Yesterday we had a session about scaling, servers, and WordPress at the 1st WordPress Developer Day in San Francisco.  We used a P2 blog on WordPress.com which allowed people to ask questions and then Demitrious, Chris, and I answered them.  I went back and posted some follow up answers which means that the site will [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=359&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yesterday we had a session about scaling, servers, and WordPress at the 1st WordPress Developer Day in San Francisco.  We used a <a href="http://serverqa.wordpress.com/">P2 blog on WordPress.com</a> which allowed people to ask questions and then <a href="http://blog.apokalyptik.com/">Demitrious</a>, <a href="http://chrislea.com/">Chris</a>, and I answered them.  I went back and posted some follow up answers which means that the site will hopefully serve as a reference to others looking for answers to these questions.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/barry.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/barry.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/barry.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/barry.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/barry.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/barry.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/barry.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/barry.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/barry.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/barry.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/barry.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/barry.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/barry.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/barry.wordpress.com/359/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=359&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://barry.wordpress.com/2009/06/02/systems-qa-at-wordcamp-dev-day/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/713072bbe89035a79c17d19e53dd5d9b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">barry</media:title>
		</media:content>
	</item>
		<item>
		<title>AMD Barcelona vs. Intel Nehalem</title>
		<link>http://barry.wordpress.com/2009/05/22/amd-barcelona-vs-intel-nehalem/</link>
		<comments>http://barry.wordpress.com/2009/05/22/amd-barcelona-vs-intel-nehalem/#comments</comments>
		<pubDate>Fri, 22 May 2009 04:25:20 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[servers]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[amd]]></category>
		<category><![CDATA[barcelona]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[nehalem]]></category>

		<guid isPermaLink="false">http://barry.wordpress.com/?p=344</guid>
		<description><![CDATA[We are looking at switching some of our servers from AMD Opteron Barcelona quad-core processors to the new Intel 5520 Nehalem processors. These are both 4 core CPUs, but the Intels utilize hyper-threading, so the OS sees 8 cores per CPU.  It wasn&#8217;t that long ago that the first thing you did with a hyper-threading-enabled [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=344&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We are looking at switching some of our servers from AMD Opteron Barcelona quad-core processors to the new Intel 5520 Nehalem processors.  These are both 4 core CPUs, but the Intels utilize <a href="http://en.wikipedia.org/wiki/Hyper-threading">hyper-threading</a>, so the OS sees 8 cores per CPU.  It wasn&#8217;t that long ago that the first thing you did with a hyper-threading-enabled CPU was switch it off in the BIOS, but I have heard good things about Intel&#8217;s reincarnation of hyper-threading, so I decided to give it a shot.  </p>
<p>I ran some real-world stress tests against these servers, adding them into the WordPress.com web pool and seeing how many requests per second they could serve before becoming 100% CPU bound effectively falling over.  The types of requests served are varied; a lot are rendering web pages, but there are also quite a few image resizing operations thrown in here as well, as we spread this image work evenly over the 2500 cores in our web tier.  Everything is php executed via fastcgi.  I was a bit skeptical that there would be much of a difference between the two processors, but the numbers proved me wrong &#8212; the Nehalem&#8217;s are impressive.</p>
<p><strong>2 x AMD Opteron 2356 Barcelona Quad-core 2.3Ghz</strong><br />
<em> 40 requests/second at 87.5% CPU utilization</em></p>
<p><strong>2 x Intel 5520 Nehalem Quad-core 2.26Ghz</strong><br />
<em> 78 requests/second at 94% CPU utilization</em></p>
<p>Few things that I thought were interesting:</p>
<ul>
<li>On a per request basis, there isn&#8217;t much of a difference between the two.  They both generate a given page in roughly the same amount of time.</li>
<li>As CPU utilization approaches 100%, The Intel&#8217;s scale rather linearly, while the AMDs seem to struggle over the 85% range.</li>
<li>The load averages were pretty high during these tests (35+ on the Intel box), but request times didn&#8217;t seem to suffer.</li>
</ul>
<p>Has anyone else seen the same sort of results or maybe something to the contrary?   These 2 configurations are roughly the same price, making it seem like a no-brainer to choose the Intels for web applications.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/barry.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/barry.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/barry.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/barry.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/barry.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/barry.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/barry.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/barry.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/barry.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/barry.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/barry.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/barry.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/barry.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/barry.wordpress.com/344/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=barry.wordpress.com&amp;blog=20261&amp;post=344&amp;subd=barry&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://barry.wordpress.com/2009/05/22/amd-barcelona-vs-intel-nehalem/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/713072bbe89035a79c17d19e53dd5d9b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">barry</media:title>
		</media:content>
	</item>
	</channel>
</rss>
