<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Doug's Oracle Blog (Entries tagged as swingbench)</title>
    <link>http://oracledoug.com/serendipity/</link>
    <description></description>
    <dc:language>en</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:doug@oracledoug.com" />
    <generator>Serendipity 1.5.2 - http://www.s9y.org/</generator>
    <managingEditor>Doug Burns</managingEditor>
<webMaster>Doug Burns</webMaster>
<pubDate>Tue, 30 Mar 2010 04:26:55 GMT</pubDate>

    <image>
        <url>http://oracledoug.com/serendipity/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Doug's Oracle Blog - </title>
        <link>http://oracledoug.com/serendipity/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Time Matters: Throughput vs. Response Time - Part 2</title>
    <link>http://oracledoug.com/serendipity/index.php?/archives/1589-Time-Matters-Throughput-vs.-Response-Time-Part-2.html</link>
    
    <comments>http://oracledoug.com/serendipity/index.php?/archives/1589-Time-Matters-Throughput-vs.-Response-Time-Part-2.html#comments</comments>
    <wfw:comment>http://oracledoug.com/serendipity/wfwcomment.php?cid=1589</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://oracledoug.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=1589</wfw:commentRss>
    

    <author>dougburns@yahoo.com (Doug Burns)</author>
    <content:encoded>
    In &lt;a href=&quot;http://oracledoug.com/serendipity/index.php?/archives/1582-Hotsos-2010-Day-3-An-excellent-one-part-1.html&quot;&gt;one of my Hotsos Symposium 2010 posts&lt;/a&gt; I mentioned that Peter Stalder had plugged some test results from &lt;a href=&quot;http://oracledoug.com/serendipity/index.php?/archives/1470-Time-Matters-Throughput-vs.-Response-Time.html&quot;&gt;an earlier blog post&lt;/a&gt; into Neil Gunther&#039;s Universal Scalability Law to see how well the model applied. Peter&#039;s &lt;a href=&quot;http://www.trivadis.com/uploads/tx_cabagdownloadarea/Peter_Stalder_Trivadis_hotsos10_pes.pdf&quot;&gt;posted his slides now&lt;/a&gt; and I&#039;ve added the URL to the comments thread of the original post so people can see another perspective.&lt;br /&gt;&lt;br /&gt;He also pointed out &lt;a href=&quot;http://perfdynamics.blogspot.com/2010/03/bandwidth-vs-latency-world-is-curved.html&quot;&gt;a recent blog post&lt;/a&gt; discussing similar subjects at Neil Gunther&#039;s blog although I must admit I&#039;ve only had a quick glance at it because I&#039;m up to my eyeballs in mail at the moment &lt;img src=&quot;http://oracledoug.com/serendipity/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt; 
    </content:encoded>

    <pubDate>Sun, 28 Mar 2010 12:48:27 -0400</pubDate>
    <guid isPermaLink="false">http://oracledoug.com/serendipity/index.php?/archives/1589-guid.html</guid>
    <category>hotsos 2010</category>
<category>swingbench</category>
<category>time matters</category>

</item>
<item>
    <title>Time Matters: Throughput vs. Response Time</title>
    <link>http://oracledoug.com/serendipity/index.php?/archives/1470-Time-Matters-Throughput-vs.-Response-Time.html</link>
    
    <comments>http://oracledoug.com/serendipity/index.php?/archives/1470-Time-Matters-Throughput-vs.-Response-Time.html#comments</comments>
    <wfw:comment>http://oracledoug.com/serendipity/wfwcomment.php?cid=1470</wfw:comment>

    <slash:comments>24</slash:comments>
    <wfw:commentRss>http://oracledoug.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=1470</wfw:commentRss>
    

    <author>dougburns@yahoo.com (Doug Burns)</author>
    <content:encoded>
    &lt;a href=&quot;http://www.orawin.info/services/&quot;&gt;Niall Litchfield&lt;/a&gt; made an interesting comment in an email thread that prompted this post. &lt;br /&gt;&lt;br /&gt; 
&lt;blockquote&gt;&lt;em&gt;&amp;quot;... I can see that once you start to define workload, or transactions, in business terms (I need to get all these things done, what works best overall?) then workload response time&lt;sup&gt;*&lt;/sup&gt; does make sense, both as a metric, and more pertinently as a tuning target. I think, and have done for a while, that for much of the last 10 years the tuning dialog has been around query or session optimization with either an explicit or implicit assumption that optimization of particular queries will result in workload optimisation from a business perspective. In many cases this is true, I suspect though that for many cases it isn&#039;t. Response time will still be the core metric, but perhaps some of the tuning methods will vary. It may be as simple as redefining stage 1 of the tuning process from &lt;br /&gt; &lt;br /&gt;&#039;&lt;/em&gt;&lt;em&gt;define the task of interest to the business&#039;&lt;br /&gt;to&lt;br /&gt;&#039;&lt;/em&gt;&lt;em&gt;define the workload of interest to the business&#039;&amp;quot;&lt;/em&gt;&lt;/blockquote&gt;&lt;br /&gt;I agree with Niall, particularly with regard to the current emphasis on optimising individual sessions or queries, rather than the overall workload.&lt;br /&gt;&lt;br /&gt;I&#039;ll state this another way. Maybe ...&lt;br /&gt;&lt;br /&gt;1) the fastest &lt;em&gt;individual session response time&lt;/em&gt; &lt;br /&gt;&lt;br /&gt;... isn&#039;t always the most important optimisation goal if you&#039;re trying to achieve ...&lt;br /&gt;&lt;br /&gt;2) the highest &lt;em&gt;workload throughput&lt;/em&gt;? &lt;br /&gt;&lt;br /&gt;(That&#039;s why I have a few slides early on in the course I wrote for
Oracle that define a few ways of looking at system performance,
including response time, throughput and scalability.) &lt;br /&gt;&lt;br /&gt;I&#039;ll try to illustrate these two different tuning goals using Dominic Giles&#039; &lt;a href=&quot;http://www.dominicgiles.com/swingbench.html&quot;&gt;Swingbench&lt;/a&gt; utility. I executed the Sales Order Entry (SOE) benchmark with different numbers of concurrent users for a period of 3 minutes. The Oracle instance, hardware configuration (dual-core laptop with the usual lousy hard drive) and application code were identical for all of the tests. The only significant variable was the number of concurrent sessions. Here are the results (which Swingbench helpfully displays in the Output tab after each test run).&lt;br /&gt;&lt;br /&gt; 
&lt;table cellspacing=&quot;1&quot; cellpadding=&quot;1&quot; border=&quot;1&quot; style=&quot;width: 282px; height: 320px;&quot;&gt; 
&lt;tbody&gt; 
&lt;tr&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 20%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;strong&gt;Concurrent Sessions&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 40%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;strong&gt;Avg. Response Time (ms)&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt; 
&lt;td style=&quot;width: 40%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;strong&gt;Transactions Completed&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 20%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;1&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 40%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;79&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;4,203&lt;/font&gt;&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;2&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;108&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;6,772&lt;/font&gt;&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;4&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;133&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;10,481&lt;/font&gt;&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;8&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;198&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;13,346&lt;/font&gt;&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;12&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;244&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;13,639&lt;/font&gt;&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;16&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;310&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;14,798&lt;/font&gt;&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;20&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;337&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;14,749&lt;/font&gt;&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;24&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;369&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;14,176&lt;/font&gt;&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;28&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;428&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;15,181&lt;/font&gt;&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;32&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;563&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;13,278&lt;/font&gt;&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;36&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;533&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;14,151&lt;/font&gt;&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr&gt; 
&lt;td align=&quot;left&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;40&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;587&lt;/font&gt;&lt;/td&gt; 
&lt;td align=&quot;right&quot; style=&quot;width: 33%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;13,302&lt;/font&gt;&lt;/td&gt; 
&lt;/tr&gt; 
&lt;/tbody&gt; 
&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Without question, the average response time is best when only one user is running the test, and gets worse steadily as the number of active sessions grows. However, having only one active session also delivers the worst number of completed transactions during the test. If we want to process as many transactions as possible in those 3 minutes, then it looks like we should have around 28 concurrent execution streams.&lt;br /&gt;&lt;br /&gt;Do we care that the average transaction completion time has increased to 587 milliseconds? Well, if the transaction is part of a user interaction, then the answer is undoubtedly yes. I&#039;m sure your users like the fastest possible response and if we have 28 active sessions, then an individual user is going to experience performance 5 times slower than if they were the only user. Oh, and that&#039;s just the average response time - the maximum will be much worse!&lt;br /&gt;&lt;br /&gt;If, however, this is all part of an overnight batch process and the tuning goal is to get through all of the workload as quickly as possible, then the number of transactions completed is our focus and who cares if each transaction takes a little longer? In this case, it&#039;s better to load the system more heavily and &lt;em&gt;increase&lt;/em&gt; the response time of individual transactions. Scheduling the workload such that the transaction response time increases might seem counter-intuitive. For example, if I were to trace one of the sessions at random during each of the test runs and I analysed the trace files, wouldn&#039;t &#039;performance&#039; look much &#039;better&#039; in the first test than the last, because I&#039;m only focussing on one session?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Is&lt;/em&gt; performance better in the first test than the last? It all depends on what you mean by performance.&lt;br /&gt;&lt;br /&gt;Now, let me address what I might appear to be implying here, that tracing and tuning individual sessions is flawed. In fact, all of these tests would have yielded even more impressive results if I had tuned the SOE application at the session level *first* so that each transaction uses less resources and completes more quickly. That&#039;s a good thing. I do understand that analysis and tuning at the session scope is vital but, if each individual session&#039;s work has been optimised already, there are other aspects we need to consider and looking at a single session trace will not give me all of the information I need. (Gosh, I&#039;d better be careful because I&#039;m getting close to suggesting that Statspack and AWR might be useful tools for some situations after all!)&lt;br /&gt;&lt;br /&gt;However, when looking at this useful improvement in throughput on my laptop by increasing the load during a basic test, be very careful.&lt;br /&gt;&lt;br /&gt;- Whilst this particular &#039;batch process&#039; processed more work in the same period of time with more concurrent sessions, it also slowed response time for *everything else* on my laptop (server). That&#039;s why it&#039;s not sensible to mix batch and interactive workloads.&lt;br /&gt;&lt;br /&gt;- As the number of sessions increases past a certain point, the number of completed transactions goes *down* as the system starts to suffer contention so we get further away from our goal whilst using more resources. Achieving the correct balance is the key.&lt;br /&gt;&lt;br /&gt;- Looking at the results again, is the best balance to run 28 concurrent sessions when we can deliver almost the same throughput from 16? Well, I&#039;d plump for 16 for this job on this configuration every time, if it meets the system requirements. Squeezing every last ounce of performance from a system is likely to lead to a serious performance problem one day because we&#039;re reducing the breathing room to cope with unplanned events.&lt;br /&gt;&lt;br /&gt;All I&#039;m really saying in this post is that performance analysis, response time tuning, workload management (call it what you will) can&#039;t and shouldn&#039;t be limited to looking at the performance of an individual session in isolation.&lt;br /&gt;&lt;br /&gt;* Is it just me, or does &#039;Workload Response Time&#039; sound weird? It&#039;s the same idea as session response time - how quickly do we get from the beginning to the end - but it seems different to me. That might be my lack of understanding, reading, or rigour, but I find the idea of a system, workload or multiple users having an aggregated response time a strange idea to get my head around. I understand start - do lots of work - stop. But is the time that that takes a response time or throughput? Have I just got too used to Response Time being directly related to a user sitting, waiting for a response?&lt;br /&gt; 
    </content:encoded>

    <pubDate>Sun, 08 Feb 2009 14:05:00 -0500</pubDate>
    <guid isPermaLink="false">http://oracledoug.com/serendipity/index.php?/archives/1470-guid.html</guid>
    <category>Swingbench</category>
<category>time matters</category>

</item>
<item>
    <title>Swingbench</title>
    <link>http://oracledoug.com/serendipity/index.php?/archives/1404-Swingbench.html</link>
    
    <comments>http://oracledoug.com/serendipity/index.php?/archives/1404-Swingbench.html#comments</comments>
    <wfw:comment>http://oracledoug.com/serendipity/wfwcomment.php?cid=1404</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://oracledoug.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=1404</wfw:commentRss>
    

    <author>dougburns@yahoo.com (Doug Burns)</author>
    <content:encoded>
    A short post in praise of &lt;a href=&quot;http://dominicgiles.com/swingbench.html&quot;&gt;Swingbench&lt;/a&gt;. (There&#039;s much more information at that link.)&lt;br /&gt;&lt;br /&gt;Without this utility, demonstrating performance problems during the course would have been much more difficult so I owe &lt;a href=&quot;http://dominicgiles.com/&quot;&gt;Dominic Giles&lt;/a&gt;. It&#039;s simple to set up using one small configuration file to set up environment variables, a JVM and an Oracle client installation. It&#039;s supplied with 4 usable benchmark applications which are useful to demonstrate different aspects of Instance behaviour.&lt;br /&gt;
&lt;blockquote&gt;SH - Sales History application based on the Oracle-supplied SH schema. A read-only benchmark.&lt;br /&gt;CC and SOE - OLTP-type applications&lt;br /&gt;Stress Test - basic INSERT/UPDATE/DELETE/SELECT test.&lt;/blockquote&gt;&lt;br /&gt;It&#039;s easy to change the number of sessions, think time, load of different parts of the application and as it&#039;s a framework, you can use it to test your own PL/SQL-based apps.&lt;br /&gt;&lt;br /&gt;The only problem I&#039;ve run into is getting the Overview screen to work properly on all benchmarks but I suspect that the problem lurks in one of the XML files describing the benchmarks or my JVM. Still working on that one.&lt;br /&gt;&lt;br /&gt;As I said, I owe Dominic, so take a look as it&#039;s very easy to try and if it serves you as well as it has me, there&#039;s a Paypal donation link on Dominic&#039;s site &lt;img src=&quot;http://oracledoug.com/serendipity/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; Anyone who comes to any of my presentations this year is likely to get a chance to see Swingbench in action.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; 
    </content:encoded>

    <pubDate>Sat, 19 Apr 2008 02:46:02 -0400</pubDate>
    <guid isPermaLink="false">http://oracledoug.com/serendipity/index.php?/archives/1404-guid.html</guid>
    <category>Swingbench</category>

</item>

</channel>
</rss>