tag:blogger.com,1999:blog-6977755959349847093.comments2017-07-19T04:35:35.043-07:00The Pith of PerformanceNeil Guntherhttp://www.blogger.com/profile/11441377418482735926noreply@blogger.comBlogger446125tag:blogger.com,1999:blog-6977755959349847093.post-84211229468974505752017-07-19T04:35:35.043-07:002017-07-19T04:35:35.043-07:00My IFORS-2017 presentation slides are now availabl...My IFORS-2017 <a href="https://speakerdeck.com/drqz/m-a-new-view-of-an-old-queue" rel="nofollow">presentation slides</a> are now available for download.Neil Guntherhttp://www.blogger.com/profile/11441377418482735926noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-16721496512496427982017-07-17T20:28:25.360-07:002017-07-17T20:28:25.360-07:00Thanks so much for the great info.Thanks so much for the great info.kshttp://www.blogger.com/profile/16640185679910305713noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-23417852435699246292017-07-17T08:21:58.893-07:002017-07-17T08:21:58.893-07:00While I'm thinking about it, it's very sig...While I'm thinking about it, it's very significant that the morphing equation for R has the same algebraic form as for an M/M/1 queue with the only difference being the m exponent. M/M/1 is the morphing model with m=1. Although the formula is less accurate numerically than Sakasegawa, it's much easier for people unfamiliar with queueing theory to comprehend (my <a href="http://www.perfdynamics.com" rel="nofollow">Guerrilla approach</a>) the form. But, most importantly, the morphing model actually explains about 90% of what is going on in the M/M/m queue. The better numerical accuracy of Sakasegawa is irrelevant.Neil Guntherhttp://www.blogger.com/profile/11441377418482735926noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-47108090037740133862017-07-15T13:01:59.684-07:002017-07-15T13:01:59.684-07:00Another virtue of the morphing model (over the Sak...Another virtue of the morphing model (over the Sakasegawa numerical approximation) is that the ρ^m term has a physical meaning. As I explain in my IFORS presentation, ρ^1 can be interpreted as the probability of finding the server busy (utilization) and having to wait. ρ^2 is the probability of finding both servers busy in M/M/2. There's a kind of dependency between the 2 servers reflected in the power of 2. Similarly for ρ^3, and so on. That's a bit strange b/c the servers are statistically independent ... by definition! But's that not where the dependency lies. Rather, it's lies in what the HOL customer sees. Even if all m-1 servers are busy, the HOL gets serviced by the one available server. That's a kind of parallelism in the M/M/m and the morphing model contains that effect explicitly, but only as an approximation (it turns out) due to assuming parallel queues. <br /><br />This intuition is not very well elucidated in my book, b/c I hadn't fully grasped it when writing. However, I do go into this aspect more in a 2011 blog post entitled, <a href="http://perfdynamics.blogspot.com/2011/07/the-multiserver-numbers-game.html" rel="nofollow">The Multiserver Numbers Game</a>. Out of playing this game drops the truncated geometric series of the morphing model. :)Neil Guntherhttp://www.blogger.com/profile/11441377418482735926noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-34241697461085708072017-07-15T11:59:37.699-07:002017-07-15T11:59:37.699-07:00Here is the visualization in the complex plane for...Here is the <a href="https://twitter.com/DrQz/status/843129835194994688" rel="nofollow">visualization</a> in the complex plane for m = 1, 2, 3, up to 256 servers. You see the (green) morphing model zeros densely sitting on the circumference, whereas the Erlang zeros coalesce around the (red) Szego curve inside the unit disk. <br /><br />Quite apart from its own intriguing beauty, this visualization provides a stark realization of how by simply adding another server to an M/M/1 queue puts you on the road to unbelievable complexity. No wonder it took A.K. Erlang almost 10 years to solve it. :)Neil Guntherhttp://www.blogger.com/profile/11441377418482735926noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-27469936597685838082017-07-15T11:42:41.227-07:002017-07-15T11:42:41.227-07:00This comment has been removed by the author.Neil Guntherhttp://www.blogger.com/profile/11441377418482735926noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-53418060535053246982017-07-15T11:07:20.156-07:002017-07-15T11:07:20.156-07:00The formula you quote from my PPDQ book is what I ...The formula you quote from my <a href="http://www.perfdynamics.com/books.html" rel="nofollow">PPDQ book</a> is what I now boldly refer to as the "morphing model" or morphing approximation to the exact result for R in M/M/m (which Erlang published in 1917). In my book, I prove that the morphing approximation can be derived analytically from a truncated geometric series. In my IFORS talk, I prove that the exact result corresponds to a truncated exponential series and the analytic bridge between the two (the thing I'd been searching for) involves a very complicated m-th degree polynomial in ρ (which is why it took me so long to find it). Although its form is completely unintuitive, it becomes far more transparent by visualizing the asymmetric location of its zeros and poles in the complex plane. The corresponding morphing approximation is simply the symmetric m-th roots of unity.<br /><br />The Sakasegawa result seems to be nothing more than numerical voodoo. It offers no insight into the analytic structure of R or C, as far as I can tell. Moreover, I've never seen that result cited in textbooks written by serious queueing theorists. If you just want numbers, and don't care where they come from, why bother with approximations? Just encode the exact Erlang formula. The exact algorithm (a few lines of code or an Excel macro) is also in my <a href="http://www.perfdynamics.com/books.html" rel="nofollow">book</a>. See p.85 of the 2004 edition or p.125 (Listing 4.6) of the 2nd edition.Neil Guntherhttp://www.blogger.com/profile/11441377418482735926noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-85689250285659594582017-07-15T09:56:54.918-07:002017-07-15T09:56:54.918-07:00Hi,
How does this compare to approximations:
1. se...Hi,<br />How does this compare to approximations:<br />1. section 2.7 of Analyzing Computer System Performance With Perl::PDQ<br />R approx. equal to S/(1 - Power(p,M))<br /><br />2. In 1977,Hirotaka Sakasegawa wrote a paper that describes the derivation and behavior of a more accurate approximation. This is mentioned in "The Essential Guide To Queueing Theory" by Barron Schwartzkshttp://www.blogger.com/profile/16640185679910305713noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-1274344651621480692016-12-30T10:17:18.924-08:002016-12-30T10:17:18.924-08:00Hi Luca and thanks for asking. Please see the post...Hi Luca and thanks for asking. Please see the postscript that I just added to the above post and then check out the animation in my July 2016 blog post <a href="http://perfdynamics.blogspot.com/2016/07/erlang-redux-resolved-this-time-for-real.html" rel="nofollow"> http://perfdynamics.blogspot.com/2016/07/erlang-redux-resolved-this-time-for-real.html</a>. Feel free to ask any additional questions.Neil Guntherhttp://www.blogger.com/profile/11441377418482735926noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-11495447407528639342016-12-30T09:36:12.924-08:002016-12-30T09:36:12.924-08:00Hi I am really interested in how you managed to de...Hi I am really interested in how you managed to derive the Erlang C formula in an easier way than usual. Did you by any chance manage to accomplish it? <br />ThanksLuca Sandelhttp://www.blogger.com/profile/08212001620408186283noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-32948877613127889232016-05-16T06:59:44.141-07:002016-05-16T06:59:44.141-07:00Pure sloth ensured that I avoided SVN. :D Moving ...Pure sloth ensured that I avoided SVN. :D Moving from CVS to Git has been pretty painless, so far.Neil Guntherhttp://www.blogger.com/profile/11441377418482735926noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-2463539830298054792016-05-15T20:09:33.601-07:002016-05-15T20:09:33.601-07:00Which version control system are you using on Sour...Which version control system are you using on SourceForge? I'm pretty sure most of the common cases are covered by readily available tools, but the mental gymnastics required to use Git if you're a long-term Subversion user are non-trivial.M Edward Boraskyhttp://www.blogger.com/profile/00279858224379712739noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-38807445280678702942016-03-08T14:50:26.494-08:002016-03-08T14:50:26.494-08:00That was a fee-based session and I can't recal...That was a fee-based session and I can't recall whether or not it was recorded. Best I could suggest would be to <a href="mailto:%20cmghq@cmg.org?subject=CMG%20Workshop" rel="nofollow">email CMG</a>.Neil Guntherhttp://www.blogger.com/profile/11441377418482735926noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-37054826983131129872016-03-08T12:55:25.812-08:002016-03-08T12:55:25.812-08:00Do you have any recordings of the Workshop "H...Do you have any recordings of the Workshop "How to Do Performance Analytics with R"?<br />I have searched on https://www.cmg.org/publications/conference-proceedings/ but have not found any presentation or pdf. Zvonko Khttp://www.blogger.com/profile/14350133021428380066noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-16647385730738943402015-11-08T10:56:55.271-08:002015-11-08T10:56:55.271-08:00Fascinating stuff! Visually, the data in the Fo...Fascinating stuff! Visually, the data in the Footnotes graph seem to fall on a sublinear curve as the distance increases. Does it make sense? Would be interesting to look at the residuals and how they trend as a function of the distance.AlexGilgurhttp://www.blogger.com/profile/01961676712058514905noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-76968540729379550932015-05-25T08:06:14.266-07:002015-05-25T08:06:14.266-07:00Hi Neil,
You are right with your previous comment....Hi Neil,<br />You are right with your previous comment.<br /><br />My point was that with the diff between tests results might get spiky when taking the exponential approach in compare to uniform.<br /><br />I guess that at the end it comes to the ability to ignore outliers and to have tools to normalize tests results so comparison is made easier.Shmuel Krakowerhttp://www.blogger.com/profile/07817060046394744496noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-58906723766018349252015-05-18T14:59:31.297-07:002015-05-18T14:59:31.297-07:00Hi Shmuel. I think we're missing each other. ...Hi Shmuel. I think we're missing each other. <br /><br />Uniform does not mean "identical," but uniformly distributed with a mean and variance: usually selected by asserting a think time with some range, in the test script(s). Although you may not be aware of it, the uniform distribution is hidden in the random number generator of the load-test harness. In that sense, none of your current tests are identically repeatable. <br /><br />Similarly, the Exp distribution has a defined mean and variance, but the variation is larger than the uniform case, which is what would allow you to test the "edges" of the queueing envelope.<br /><br />On top of all that, the SUT is not a deterministic system anyway, so ALL your measured throughputs and response times have errors in them. They're not reported in any load-test tools that I've seen. In other words, the reported throughput should always be the mean throughput +/- error representation.<br /><br />Do you know what the size of your measurement errors are? That's one of the things I teach in my <a href="http://www.perfdynamics.com/Classes/schedule.html" rel="nofollow"> GDAT class</a>.Neil Guntherhttp://www.blogger.com/profile/11441377418482735926noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-27106877347888084022015-05-18T14:41:58.293-07:002015-05-18T14:41:58.293-07:00Hi Neil
An interesting read and I agree with the t...Hi Neil<br />An interesting read and I agree with the theory. I agree that uniform load tests do not mimic reality. On the other hand I wonder if having exponential distribution wouldn't overcomplicate the scenario, specifically when it comes to the consistency of the test results. If each test won't behave close enough to the previous tests results might differ in a way which may prevent you from being able to compare tests. One of the very basics in performance testing is the ability to reproduce and I wonder if your idea doesn't conflict with that ability?Shmuel Krakowerhttp://www.blogger.com/profile/07817060046394744496noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-84042600647019323712014-12-04T09:09:05.843-08:002014-12-04T09:09:05.843-08:00This comment has been removed by a blog administrator.MárioChttp://www.blogger.com/profile/13791655872457440567noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-12165355534295849052014-12-04T09:08:08.270-08:002014-12-04T09:08:08.270-08:00Thanks. I will try the code.Thanks. I will try the code.MárioChttp://www.blogger.com/profile/13791655872457440567noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-29225672215448788082014-12-03T16:12:30.540-08:002014-12-03T16:12:30.540-08:00Roughly, for any m servers: a new arrival needs to...Roughly, for any m servers: a new arrival needs to check if there's already a waiting line, in which case join the tail (assuming FCFS priority). If not, then see if there is an available server. If so, start service, otherwise form the HOL.Neil Guntherhttp://www.blogger.com/profile/11441377418482735926noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-65403918227479669892014-12-03T14:50:37.934-08:002014-12-03T14:50:37.934-08:00Hi, thanks for the code.
Can you tell me some tips...Hi, thanks for the code.<br />Can you tell me some tips if i want introduce a second server?MárioChttp://www.blogger.com/profile/13791655872457440567noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-48810599064956511822014-06-10T11:09:38.700-07:002014-06-10T11:09:38.700-07:00Hey, this is great! I'm eager to try it. Thank...Hey, this is great! I'm eager to try it. Thanks for posting about it, Neil.<br /><br />Tom<br />Tomhttp://www.blogger.com/profile/06093731178507441020noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-34923708620889866012014-06-06T09:35:46.828-07:002014-06-06T09:35:46.828-07:00And if it involved the Brownian motion which would...And if it involved the Brownian motion which would be the most likely hypothesis?Max Silvahttp://www.blogger.com/profile/16610286345183235125noreply@blogger.comtag:blogger.com,1999:blog-6977755959349847093.post-89553793899676596992014-04-16T09:53:20.851-07:002014-04-16T09:53:20.851-07:00I believe the short answer goes something like thi...I believe the short answer goes something like this. The DOF is associated with the Student's t dsn qt() b/c the sample size is n<30 measurements. That can be regarded as a single parameter dsn b/c the mean is assumed to be zero. More generally, the Chi-Sq dsn, for example, estimates the population mean and var. In the large-N limit this becomes a Gaussian, which has 2 pop parameters. The figure of merit for the USL nonlinear model (rational function of a single variable N and 2 coefficients α and β) is the Adjusted R^2 value.Neil Guntherhttp://www.blogger.com/profile/11441377418482735926noreply@blogger.com