<?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: When can I start performance tuning?  How do I monitor ____?</title>
	<atom:link href="http://www.performanceengineer.com/blog/when-can-i-start-performance-tuning/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.performanceengineer.com/blog/when-can-i-start-performance-tuning/</link>
	<description>Software Performance Engineering &#38; Testing</description>
	<lastBuildDate>Tue, 18 May 2010 15:05:43 -0700</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: bezenek</title>
		<link>http://www.performanceengineer.com/blog/when-can-i-start-performance-tuning/comment-page-1/#comment-28</link>
		<dc:creator>bezenek</dc:creator>
		<pubDate>Mon, 26 Nov 2007 23:35:03 +0000</pubDate>
		<guid isPermaLink="false">#comment-28</guid>
		<description>Charlie,

I generally agree STRONGLY with all of your comments.

I would like to add that another issue is the need to have an understanding of what our quantitative performance results mean.  As we test a system, we develop an understanding of what values to expect.  Understanding one system can aid in understanding future systems.  Some measurements are comparatively easy to understand, e.g., CPU utilization.  Other measurements might be hard to understand or misleading, even for seasoned engineers.

For instance, I was talking to an experienced computer architect about cache miss rates.  This person suggested an instruction-cache miss rate of 5% was not very high, which is a reasonable conclusion if you are familiar with DATA cash miss rates, but it is not correct for contemporary instruction caches.

A common instruction cache line size today is 32 bytes.  This means that if each instruction requires 4 bytes, 8 instructions fit in a cache line.  Thus, if we are executing straight-line code (no branches), the highest miss rate we will see is if we miss each time we enter a new cache line, which happens 1/8th of the time.  This miss rate is 12.5%

Of course, because of branches, we enter new cache lines more often than once every 8 instructions.  But, because of loops, we end up with long periods of execution during which we will see no or very few instruction cache misses.

A high instruction cache miss rate for the processor above is about 2-4%.  I follow the rule that this can be reasonably compared to a DATA cache miss rate by multiplying by the number of instructions which fit in a line.  In this case, the result is 16-32% for a data cache, which falls into the range of what we would commonly call a high miss rate for an L1 data cache.

Cheers!

-Todd

--
Todd Bezenek
Computer Architect and Performance Engineer</description>
		<content:encoded><![CDATA[<p>Charlie,</p>
<p>I generally agree STRONGLY with all of your comments.</p>
<p>I would like to add that another issue is the need to have an understanding of what our quantitative performance results mean.  As we test a system, we develop an understanding of what values to expect.  Understanding one system can aid in understanding future systems.  Some measurements are comparatively easy to understand, e.g., CPU utilization.  Other measurements might be hard to understand or misleading, even for seasoned engineers.</p>
<p>For instance, I was talking to an experienced computer architect about cache miss rates.  This person suggested an instruction-cache miss rate of 5% was not very high, which is a reasonable conclusion if you are familiar with DATA cash miss rates, but it is not correct for contemporary instruction caches.</p>
<p>A common instruction cache line size today is 32 bytes.  This means that if each instruction requires 4 bytes, 8 instructions fit in a cache line.  Thus, if we are executing straight-line code (no branches), the highest miss rate we will see is if we miss each time we enter a new cache line, which happens 1/8th of the time.  This miss rate is 12.5%</p>
<p>Of course, because of branches, we enter new cache lines more often than once every 8 instructions.  But, because of loops, we end up with long periods of execution during which we will see no or very few instruction cache misses.</p>
<p>A high instruction cache miss rate for the processor above is about 2-4%.  I follow the rule that this can be reasonably compared to a DATA cache miss rate by multiplying by the number of instructions which fit in a line.  In this case, the result is 16-32% for a data cache, which falls into the range of what we would commonly call a high miss rate for an L1 data cache.</p>
<p>Cheers!</p>
<p>-Todd</p>
<p>&#8211;<br />
Todd Bezenek<br />
Computer Architect and Performance Engineer</p>
]]></content:encoded>
	</item>
</channel>
</rss>
