<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Server utilization: Joel on queuing</title>
	<atom:link href="http://www.johndcook.com/blog/2009/01/30/server-utilization-joel-on-queuing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.johndcook.com/blog/2009/01/30/server-utilization-joel-on-queuing/</link>
	<description>The blog of John D. Cook</description>
	<lastBuildDate>Sat, 11 Feb 2012 22:42:11 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: John</title>
		<link>http://www.johndcook.com/blog/2009/01/30/server-utilization-joel-on-queuing/comment-page-1/#comment-33906</link>
		<dc:creator>John</dc:creator>
		<pubDate>Wed, 03 Mar 2010 14:09:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=1395#comment-33906</guid>
		<description>The waiting time does not become negative. The horizontal axis is drawn at waiting time = 2.</description>
		<content:encoded><![CDATA[<p>The waiting time does not become negative. The horizontal axis is drawn at waiting time = 2.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dilemma</title>
		<link>http://www.johndcook.com/blog/2009/01/30/server-utilization-joel-on-queuing/comment-page-1/#comment-33905</link>
		<dc:creator>Dilemma</dc:creator>
		<pubDate>Wed, 03 Mar 2010 14:06:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=1395#comment-33905</guid>
		<description>Why the waiting time becomes with less than 0.5 utilization negative?</description>
		<content:encoded><![CDATA[<p>Why the waiting time becomes with less than 0.5 utilization negative?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Neil Gunther</title>
		<link>http://www.johndcook.com/blog/2009/01/30/server-utilization-joel-on-queuing/comment-page-1/#comment-16930</link>
		<dc:creator>Neil Gunther</dc:creator>
		<pubDate>Mon, 04 May 2009 15:38:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=1395#comment-16930</guid>
		<description>Cool! Now, I can show you the correct *rules-of-thumb* (ROT), which Software Joel did not actually state; he only provides a vague impression. Looking at the stretch factor F=R/S, then the first ROT is: (A) if the server or cashier is idle, i.e., no traffic coming to her checkout, then r=0 and therefore F=1 or R=S. In other words, your total residence time (R) when you arrive at the checkout is just the time spent ringing up your groceries, because nobody was ahead of you.  ROT (B) Suppose the cashier is idle only 50% of the time (moderate traffic). Then, r=1/2 and F=2. In other words, when the cashier becomes 50% busy, your expected residence time climbs from 1 service period (S) to 2 service periods, i.e., R=2S. You can see this (not so clearly) in your plot above;  the curve cuts the x-axis at r=1/2 and the corresponding y-value is 2---not shown. ROT (C) If the cashier  becomes 75% busy  r=3/4, F=4 or R=4S (heavy traffic). This case is quite clear in your plot. In other words, your residence time doubled again, even though the server only became 50% busier than case (B). This is due to the intrinsic *nonlinearity* of the queue (the hyperbolic function) and that&#039;s what makes queueing theory rather unintuitive (even for experts).</description>
		<content:encoded><![CDATA[<p>Cool! Now, I can show you the correct *rules-of-thumb* (ROT), which Software Joel did not actually state; he only provides a vague impression. Looking at the stretch factor F=R/S, then the first ROT is: (A) if the server or cashier is idle, i.e., no traffic coming to her checkout, then r=0 and therefore F=1 or R=S. In other words, your total residence time (R) when you arrive at the checkout is just the time spent ringing up your groceries, because nobody was ahead of you.  ROT (B) Suppose the cashier is idle only 50% of the time (moderate traffic). Then, r=1/2 and F=2. In other words, when the cashier becomes 50% busy, your expected residence time climbs from 1 service period (S) to 2 service periods, i.e., R=2S. You can see this (not so clearly) in your plot above;  the curve cuts the x-axis at r=1/2 and the corresponding y-value is 2&#8212;not shown. ROT (C) If the cashier  becomes 75% busy  r=3/4, F=4 or R=4S (heavy traffic). This case is quite clear in your plot. In other words, your residence time doubled again, even though the server only became 50% busier than case (B). This is due to the intrinsic *nonlinearity* of the queue (the hyperbolic function) and that&#8217;s what makes queueing theory rather unintuitive (even for experts).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Neil Gunther</title>
		<link>http://www.johndcook.com/blog/2009/01/30/server-utilization-joel-on-queuing/comment-page-1/#comment-16908</link>
		<dc:creator>Neil Gunther</dc:creator>
		<pubDate>Mon, 04 May 2009 07:09:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=1395#comment-16908</guid>
		<description>In your post, you appeal to a queueing theory formula (for M/M/1 waiting time), which kinda comes out of nowhere. However, there&#039;s a genuine intuition behind the shape of the curve---beyond a rule-of-thumb. It goes like this. You&#039;re in a grocery store and it will take time S to ring up your groceries. But when you arrive at the checkout, there are N people ahead of you. Each one them also takes time S (on average) to check out their groceries. The total time you now expect to spend at the checkout is R = W + S, where W=NS is your average waiting time and S is your own service time once you get to the cashier. Clearly, W&lt;R, so it follows that W must be some fraction of the total time R or W = R.r where r is a real number in the range 0 to 1. Now, we have: R = R.r + S and rearranging produces R=S/(1-r). This is the &quot;residence time,&quot; not the &quot;waiting time&quot; (slight bug in your argument). It should be clear that my &#039;r&#039; is your Greek letter, rho. Moreover, writing F=R/S=1/(1-r), which is the hyperbolic function that you plotted.  This function also has a name: the stretch factor. It&#039;s also possible to relate F to the Unix/Linux &lt;a href=&quot;http://perfdynamics.blogspot.com/search?q=stretch&quot; rel=&quot;nofollow&quot;&gt;load average&lt;/a&gt;, which is also used a gauge of server performance.</description>
		<content:encoded><![CDATA[<p>In your post, you appeal to a queueing theory formula (for M/M/1 waiting time), which kinda comes out of nowhere. However, there&#8217;s a genuine intuition behind the shape of the curve&#8212;beyond a rule-of-thumb. It goes like this. You&#8217;re in a grocery store and it will take time S to ring up your groceries. But when you arrive at the checkout, there are N people ahead of you. Each one them also takes time S (on average) to check out their groceries. The total time you now expect to spend at the checkout is R = W + S, where W=NS is your average waiting time and S is your own service time once you get to the cashier. Clearly, W&lt;R, so it follows that W must be some fraction of the total time R or W = R.r where r is a real number in the range 0 to 1. Now, we have: R = R.r + S and rearranging produces R=S/(1-r). This is the &#8220;residence time,&#8221; not the &#8220;waiting time&#8221; (slight bug in your argument). It should be clear that my &#8216;r&#8217; is your Greek letter, rho. Moreover, writing F=R/S=1/(1-r), which is the hyperbolic function that you plotted.  This function also has a name: the stretch factor. It&#8217;s also possible to relate F to the Unix/Linux <a href="http://perfdynamics.blogspot.com/search?q=stretch" rel="nofollow">load average</a>, which is also used a gauge of server performance.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gene</title>
		<link>http://www.johndcook.com/blog/2009/01/30/server-utilization-joel-on-queuing/comment-page-1/#comment-12656</link>
		<dc:creator>Gene</dc:creator>
		<pubDate>Sun, 01 Feb 2009 14:49:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=1395#comment-12656</guid>
		<description>In a restaurant, when wait times grow, a good manager will routinely visit clients&#039; tables, perhaps dropping off a free drink or extra hors d&#039;oeuvres, and generally lowering the tension level. Many patrons appreciate the attempt and stress levels go down. The service isn&#039;t any better, but we feel better.

Now, picture an Oracle server, executing on a multi-processor Linux box, trying the same approach: &quot;I&#039;m sorry, the queue is full and your process is waiting for execution. Would you care for an additional Quote-Of-The-Day? Or perhaps I can spawn another copy of xterm while you wait?&quot;

It&#039;s all about the context of the waiting period, isn&#039;t it?</description>
		<content:encoded><![CDATA[<p>In a restaurant, when wait times grow, a good manager will routinely visit clients&#8217; tables, perhaps dropping off a free drink or extra hors d&#8217;oeuvres, and generally lowering the tension level. Many patrons appreciate the attempt and stress levels go down. The service isn&#8217;t any better, but we feel better.</p>
<p>Now, picture an Oracle server, executing on a multi-processor Linux box, trying the same approach: &#8220;I&#8217;m sorry, the queue is full and your process is waiting for execution. Would you care for an additional Quote-Of-The-Day? Or perhaps I can spawn another copy of xterm while you wait?&#8221;</p>
<p>It&#8217;s all about the context of the waiting period, isn&#8217;t it?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.622 seconds -->

