<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MarkJ.net &#38; Focused Apps&#187; terminology</title>
	<atom:link href="http://www.markj.net/tag/terminology/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.markj.net</link>
	<description>iOS Apps and Games</description>
	<lastBuildDate>Fri, 03 Feb 2012 22:44:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Scalability and Other Meanings of Performance</title>
		<link>http://www.markj.net/scalability-and-other-meanings-of-performance/</link>
		<comments>http://www.markj.net/scalability-and-other-meanings-of-performance/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 09:21:11 +0000</pubDate>
		<dc:creator>markj</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[scalability]]></category>
		<category><![CDATA[terminology]]></category>

		<guid isPermaLink="false">http://www.markj.net/wp/scalability-and-other-meanings-of-performance/</guid>
		<description><![CDATA[<p>In <a href="http://www.markj.net/wp/throughput-and-response-time/">Throughput and Response Time</a> I described the essence of what we mean by software performance, but there are some additional meanings that are important to consider in many cases. So here is a bigger list of what we mean when we talk about performance:</p>
<ul>
<li style="list-style: none"></li>
<li>Response Time</li>
<li>Throughput</li>
<li>Scalability</li>
<li>Stability</li>
<li>Resource Utilization, eg memory footprint</li>
<li>Overload or failure characteristics</li>
<li>Capacity planning</li>
</ul>
<p>
So lets take these one by one, starting with Scalability. <strong>Scalability</strong> is how well performance of the system can be improved by adding more hardware. Every software system has limitations to performance, and the underlying cause is often a limit to how fast part of the hardware can go. If the software has good scalability then you can add more of whatever is maxed out and get better performance. Often times we think about scalability simply as the ability to add more servers. For example, Google&#8217;s system is highly scalable, they have thousands of servers running all their apps, and as usage grows they just keep adding more servers to keep up with demand. They &#8216;scale up&#8217;. Scalability doesn&#8217;t have to be only about scaling across separate servers, we may want run some software on one individual server, but care if it is scalable as we add more CPUs or more disks. Relational databases are the classic example of this, its hard to run a cluster of database servers operating as one, so when we need better performance from a database its cheaper to upgrade to a more powerful server with more CPUs, RAM, and disks. Good scalability often comes with a small compromise in response time or throughput for one individual server. Ie, designing your software without caring about scalability might mean its performance is better then the same application designed with high scalability when both versions are running on just one server. But the scalable design can be scaled up to support more users, more work, or respond more quickly by adding more hardware, where the unscalable design will be stuck with the performance of a single server.<br />
<strong><br /></strong><strong><br /></strong><strong>Stability</strong> is concerned with how the software stands up to heavy use by lots of users doing lots of work for a long period of time. Stable software crashes rarely and has few errors, unstable software crashes a lot and has problems completing work correctly. Stability is tied up with other performance topics because many stability problems only show up when performance testing with lots of users, and a high load on the system, so whoever is doing performance testing work usually has to also work on the stability of the system.</p>
<p>
When looking at <strong>resource utilization</strong>, we care about how the software uses CPU, RAM, disk IO, disk space, and network capacity. All of these hardware resources are limited, and its desirable for our software to use these resources carefully. Under high load resource utilization will be higher than testing just one user with one use case, so just like stability, studying resource utilization is in the domain of performance testing.</p>
<p>Every software application has a limit to how fast it can go, how many users it can support, etc. When the system is overloaded by going beyond these limits then the software may fail by crashing, causing data loss, incorrectly completing work, dropping users, etc. These are the <strong>failure modes</strong> or <strong>overload characteristics</strong> of the application. The most desirable failure mode is that work backlogs and response time goes down, while throughput stays close to 100% of its max. The least desirable failure modes are when the system totally locks up during an overload, and throughput drops to 0. Understanding the overload characteristics are important for capacity planning.<br />
<strong><br /></strong><strong><br /></strong><strong>Capacity planning</strong> is preparing for the demands on the software system in the future by understanding the performance characteristics of the application, predicting how many users and what kind of workload that application will have, and then setting up the right hardware to be able to run the software with the needed performance, without spending more money on hardware then you need to.</p>
<div style="display:block"><small><em>by Markj <a href="http://www.markj.net/scalability-and-other-meanings-of-performance/#comments">Leave A Comment</a><br />&copy;2012 <a href="http://www.markj.net">MarkJ.net &amp; Focused Apps</a>. All Rights Reserved.</em></small></div>]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://www.markj.net/wp/throughput-and-response-time/">Throughput and Response Time</a> I described the essence of what we mean by software performance, but there are some additional meanings that are important to consider in many cases. So here is a bigger list of what we mean when we talk about performance:</p>
<ul>
<li style="list-style: none"></li>
<li>Response Time</li>
<li>Throughput</li>
<li>Scalability</li>
<li>Stability</li>
<li>Resource Utilization, eg memory footprint</li>
<li>Overload or failure characteristics</li>
<li>Capacity planning</li>
</ul>
<p>
So lets take these one by one, starting with Scalability. <strong>Scalability</strong> is how well performance of the system can be improved by adding more hardware. Every software system has limitations to performance, and the underlying cause is often a limit to how fast part of the hardware can go. If the software has good scalability then you can add more of whatever is maxed out and get better performance. Often times we think about scalability simply as the ability to add more servers. For example, Google&#8217;s system is highly scalable, they have thousands of servers running all their apps, and as usage grows they just keep adding more servers to keep up with demand. They &#8216;scale up&#8217;. Scalability doesn&#8217;t have to be only about scaling across separate servers, we may want run some software on one individual server, but care if it is scalable as we add more CPUs or more disks. Relational databases are the classic example of this, its hard to run a cluster of database servers operating as one, so when we need better performance from a database its cheaper to upgrade to a more powerful server with more CPUs, RAM, and disks. Good scalability often comes with a small compromise in response time or throughput for one individual server. Ie, designing your software without caring about scalability might mean its performance is better then the same application designed with high scalability when both versions are running on just one server. But the scalable design can be scaled up to support more users, more work, or respond more quickly by adding more hardware, where the unscalable design will be stuck with the performance of a single server.<br />
<strong><br /></strong><strong><br /></strong><strong>Stability</strong> is concerned with how the software stands up to heavy use by lots of users doing lots of work for a long period of time. Stable software crashes rarely and has few errors, unstable software crashes a lot and has problems completing work correctly. Stability is tied up with other performance topics because many stability problems only show up when performance testing with lots of users, and a high load on the system, so whoever is doing performance testing work usually has to also work on the stability of the system.</p>
<p>
When looking at <strong>resource utilization</strong>, we care about how the software uses CPU, RAM, disk IO, disk space, and network capacity. All of these hardware resources are limited, and its desirable for our software to use these resources carefully. Under high load resource utilization will be higher than testing just one user with one use case, so just like stability, studying resource utilization is in the domain of performance testing.</p>
<p>Every software application has a limit to how fast it can go, how many users it can support, etc. When the system is overloaded by going beyond these limits then the software may fail by crashing, causing data loss, incorrectly completing work, dropping users, etc. These are the <strong>failure modes</strong> or <strong>overload characteristics</strong> of the application. The most desirable failure mode is that work backlogs and response time goes down, while throughput stays close to 100% of its max. The least desirable failure modes are when the system totally locks up during an overload, and throughput drops to 0. Understanding the overload characteristics are important for capacity planning.<br />
<strong><br /></strong><strong><br /></strong><strong>Capacity planning</strong> is preparing for the demands on the software system in the future by understanding the performance characteristics of the application, predicting how many users and what kind of workload that application will have, and then setting up the right hardware to be able to run the software with the needed performance, without spending more money on hardware then you need to.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markj.net/scalability-and-other-meanings-of-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Throughput and response time</title>
		<link>http://www.markj.net/throughput-and-response-time/</link>
		<comments>http://www.markj.net/throughput-and-response-time/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 20:25:04 +0000</pubDate>
		<dc:creator>markj</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[response time]]></category>
		<category><![CDATA[terminology]]></category>
		<category><![CDATA[throughput]]></category>

		<guid isPermaLink="false">http://www.markj.net/wp/?p=12</guid>
		<description><![CDATA[<p>What does &#8216;performance&#8217; mean? Software performance is mostly about how fast the software goes and how much work it can handle. To discuss performance we need more accurate terms than ‘speed’. The two most important concepts are:</p>
<ul>
<li>Response time &#8211; how quickly the system responds to request</li>
<li>Throughput &#8211; how much work can it do in some period of time</li>
</ul>
<p>Response time is a measure of how quickly the system responds to a request for it to do something. Put another way, response time is how long it takes before it finishes what you told it to do. Response time is really important for any software that has real people sitting there interacting with it, eg a web application like Ebay. Users want the next page to come back quickly when they click on stuff. Response time for interactive software is often measured in seconds.</p>
<p>Throughput is a measure of how much work the system can do in a given period of time &#8211; eg if in one minute my mp3 software can encode 6 songs from a CD, then its throughput is 6 songs per minute. Throughput is really important to software that has to process a lot of data in some way, eg the electric company generating all the electricity bills for its millions of customers. Throughput is also critical for interactive software that has many users, eg how many web pages can Ebay serve up every second.</p>
<p>Response time and throughput are usually not independent of each other. If you are developing software you often have to trade one for the other in your architecture choices. Often times you can make a choice that will increase throughput by a large %, but it makes your response times increase a little (typically when you use request queues in your system). In that case, should you say that the software is faster because it does more work, or slower because it doesn&#8217;t react as fast? Both are true, so when you talk about performance it is confusing to talk about &#8216;speed&#8217;, you have to talk about response time and/or throughput.</p>
<p>Another side of throughput vs response time is who cares. If you are using ebay.com to buy a stuffed cat, you don&#8217;t care how many millions of pages ebay severed up while you were on the site (throughput), you only care about how fast your pages came back (response time). On the other hand, ebay management really care if their system can generate 1,000 or 10,000 page views a second (throughput), because they have tons of stuff they want everyone to keep everyone bidding on and they want to use the fewest servers possible to keep costs under control.</p>
<div style="display:block"><small><em>by Markj <a href="http://www.markj.net/throughput-and-response-time/#comments">Leave A Comment</a><br />&copy;2012 <a href="http://www.markj.net">MarkJ.net &amp; Focused Apps</a>. All Rights Reserved.</em></small></div>]]></description>
			<content:encoded><![CDATA[<p>What does &#8216;performance&#8217; mean? Software performance is mostly about how fast the software goes and how much work it can handle. To discuss performance we need more accurate terms than ‘speed’. The two most important concepts are:</p>
<ul>
<li>Response time &#8211; how quickly the system responds to request</li>
<li>Throughput &#8211; how much work can it do in some period of time</li>
</ul>
<p>Response time is a measure of how quickly the system responds to a request for it to do something. Put another way, response time is how long it takes before it finishes what you told it to do. Response time is really important for any software that has real people sitting there interacting with it, eg a web application like Ebay. Users want the next page to come back quickly when they click on stuff. Response time for interactive software is often measured in seconds.</p>
<p>Throughput is a measure of how much work the system can do in a given period of time &#8211; eg if in one minute my mp3 software can encode 6 songs from a CD, then its throughput is 6 songs per minute. Throughput is really important to software that has to process a lot of data in some way, eg the electric company generating all the electricity bills for its millions of customers. Throughput is also critical for interactive software that has many users, eg how many web pages can Ebay serve up every second.</p>
<p>Response time and throughput are usually not independent of each other. If you are developing software you often have to trade one for the other in your architecture choices. Often times you can make a choice that will increase throughput by a large %, but it makes your response times increase a little (typically when you use request queues in your system). In that case, should you say that the software is faster because it does more work, or slower because it doesn&#8217;t react as fast? Both are true, so when you talk about performance it is confusing to talk about &#8216;speed&#8217;, you have to talk about response time and/or throughput.</p>
<p>Another side of throughput vs response time is who cares. If you are using ebay.com to buy a stuffed cat, you don&#8217;t care how many millions of pages ebay severed up while you were on the site (throughput), you only care about how fast your pages came back (response time). On the other hand, ebay management really care if their system can generate 1,000 or 10,000 page views a second (throughput), because they have tons of stuff they want everyone to keep everyone bidding on and they want to use the fewest servers possible to keep costs under control.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markj.net/throughput-and-response-time/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

