<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Dr. B: in Software Tuning, Performance Optimization &amp; Platform Monitoring</title>
    <link>https://community.intel.com/t5/Software-Tuning-Performance/Measuring-row-buffer-hit-ratio/m-p/1036070#M4408</link>
    <description>&lt;P&gt;Dr. B:&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Hi, I read the guide and I think the umask is wrong.&lt;/P&gt;

&lt;OL style="color: rgb(96, 96, 96);"&gt;
	&lt;LI&gt;CAS_COUNT.WR, "All DRAM Writes", Event 0x04, Umask 0xC0&lt;/LI&gt;
&lt;/OL&gt;

&lt;P&gt;I think the umask of WR_CAS is 0x0C. Am I wrong or I missed something here?&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 19 Nov 2014 04:35:49 GMT</pubDate>
    <dc:creator>Zhu_G_</dc:creator>
    <dc:date>2014-11-19T04:35:49Z</dc:date>
    <item>
      <title>Measuring row-buffer hit ratio?</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Measuring-row-buffer-hit-ratio/m-p/1036068#M4406</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;

&lt;P&gt;I am a current user of the Intel Performance Counter tool, and I have found it to be very helpful for gathering information on DRAM power consumption and other things like the L2 and L3 cache hit ratio. I was wondering if this tool could be used to measure things like the row-buffer hit ratio or the number of bank conflicts. If not, do you know of any other tools or counters I could use to gather&amp;nbsp;this information?&amp;nbsp;If it makes any difference, my platform uses an Intel E5-26xx series processor with Linux as its operating system.&lt;/P&gt;

&lt;P&gt;Thanks in advance.&lt;/P&gt;

&lt;P&gt;Mike&lt;/P&gt;</description>
      <pubDate>Fri, 29 Aug 2014 22:47:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Measuring-row-buffer-hit-ratio/m-p/1036068#M4406</guid>
      <dc:creator>Michael_J_1</dc:creator>
      <dc:date>2014-08-29T22:47:24Z</dc:date>
    </item>
    <item>
      <title>The Xeon E5-2600 Family</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Measuring-row-buffer-hit-ratio/m-p/1036069#M4407</link>
      <description>&lt;P&gt;The Xeon E5-2600 Family Uncore Performance Monitoring Guide (document 327043-001, March 2012) describes the available performance counters in the memory controller portion of the uncore in section 2.5.&lt;/P&gt;

&lt;P&gt;Performance counter events are available to count page hits, page misses, and page conflicts -- BUT, you need to pay careful attention to the terminology.&amp;nbsp;&amp;nbsp; What Intel calls a "page miss" is usually referred to as a "page conflict".&amp;nbsp;&amp;nbsp; The event counts precharge commands that occur when the page is open, but has the wrong row in it.&amp;nbsp;&amp;nbsp;&amp;nbsp; The other metrics can be obtained by arithmetic, as discussed below.&lt;/P&gt;

&lt;P&gt;There are four programmable performance counters in each of the four memory controllers on each chip.&amp;nbsp;&amp;nbsp; Fortunately, events are available that allow you to get the most important data in a single run.&amp;nbsp; My standard set is:&lt;/P&gt;

&lt;OL&gt;
	&lt;LI&gt;ACT_COUNT, "DRAM Activate Count", Event 0x01, Umask 0x00&lt;/LI&gt;
	&lt;LI&gt;CAS_COUNT.RD, "All DRAM Reads", Event 0x04, Umask 0x03&lt;/LI&gt;
	&lt;LI&gt;CAS_COUNT.WR, "All DRAM Writes", Event 0x04, Umask 0x0C&lt;/LI&gt;
	&lt;LI&gt;PRE_COUNT.PAGE_MISS, "DRAM Precharge Events due to Page Miss (i.e., Conflict)", Event 0x02, Umask 0x01&lt;/LI&gt;
&lt;/OL&gt;

&lt;P&gt;The derived events are:&lt;/P&gt;

&lt;UL&gt;
	&lt;LI&gt;PCT_REQUESTS_PAGE_EMPTY = (ACT_COUNT - PRE_COUNT.PAGE_MISS) / (CAS_COUNT.RD + CAS_COUNT.WR)&lt;/LI&gt;
	&lt;LI&gt;PCT_REQUESTS_PAGE_MISS (i.e., conflict) = PCT_COUNT.PAGE_MISS / (CASE_COUNT.RD + CAS_COUNT.WR)&lt;/LI&gt;
	&lt;LI&gt;PCT_REQUESTS_PAGE_HIT = 1 - PCT_REQUESTS_PAGE_EMPTY - PCT_REQUESTS_PAGE_MISS&lt;/LI&gt;
&lt;/UL&gt;

&lt;P&gt;These events are not perfect -- they don't count precharges that come from the "PRECHARGE ALL" command, for example -- but they seem to be quite reasonable in the tests I have run.&amp;nbsp; ("PRECHARGE ALL" should only happen when refreshing the memory or in some power state changes and these are infrequent -- but there is a separate event for it if you want to see how often it happens.)&lt;/P&gt;

&lt;P&gt;Of course these events also give the total memory traffic:&lt;/P&gt;

&lt;UL&gt;
	&lt;LI&gt;MEM_BW_READS = 64 * CAS_COUNT.RD&lt;/LI&gt;
	&lt;LI&gt;MEM_BW_WRITES = 64 * CAS_COUNT.WR&lt;/LI&gt;
&lt;/UL&gt;

&lt;P&gt;This agrees very closely with expectations in the experiments that I have done, but it is not going to be perfect. There are lots of special cases (uncached loads, partially completed streaming stores, IO references to memory, etc) that introduce a small amount of variability into the results.&lt;/P&gt;

&lt;P&gt;In newer versions of Linux, the "perf" subsystem might support accessing these events relatively directly.&amp;nbsp;&amp;nbsp; I have not used the Intel Performance Counter Monitor tool recently, so I don't know if it has these events built-in.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 02 Sep 2014 21:50:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Measuring-row-buffer-hit-ratio/m-p/1036069#M4407</guid>
      <dc:creator>McCalpinJohn</dc:creator>
      <dc:date>2014-09-02T21:50:00Z</dc:date>
    </item>
    <item>
      <title>Dr. B:</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Measuring-row-buffer-hit-ratio/m-p/1036070#M4408</link>
      <description>&lt;P&gt;Dr. B:&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Hi, I read the guide and I think the umask is wrong.&lt;/P&gt;

&lt;OL style="color: rgb(96, 96, 96);"&gt;
	&lt;LI&gt;CAS_COUNT.WR, "All DRAM Writes", Event 0x04, Umask 0xC0&lt;/LI&gt;
&lt;/OL&gt;

&lt;P&gt;I think the umask of WR_CAS is 0x0C. Am I wrong or I missed something here?&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Nov 2014 04:35:49 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Measuring-row-buffer-hit-ratio/m-p/1036070#M4408</guid>
      <dc:creator>Zhu_G_</dc:creator>
      <dc:date>2014-11-19T04:35:49Z</dc:date>
    </item>
    <item>
      <title>Thanks for catching that</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Measuring-row-buffer-hit-ratio/m-p/1036071#M4409</link>
      <description>&lt;P&gt;Thanks for catching that error -- I have corrected the post.&lt;/P&gt;</description>
      <pubDate>Fri, 21 Nov 2014 22:14:31 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Measuring-row-buffer-hit-ratio/m-p/1036071#M4409</guid>
      <dc:creator>McCalpinJohn</dc:creator>
      <dc:date>2014-11-21T22:14:31Z</dc:date>
    </item>
  </channel>
</rss>

