Hi, I am trying to understand hardware counts on a Core 2 Duo machine. I am using pfmon/libpfm-3.2.070206 with a 2.6.20 kernel on Ubuntu.
I have a toy program I have written to cache miss. It allocates a large chunk of memory and steps through at page-sized increment. It should miss at all levels of the cache. The memory access strides are predictable, but beyond a page boundary so prefetching shouldn't work. I am using pfmon and various counts to try to understand which counts I can use for memory profiling. It looks like LAST_LEVEL_CACHE_MISSES gives me approximately the correct number, but the MEM_LOAD_RETIRED.* counts look puzzling to me. The counts I get look like this: 1001947629 LAST_LEVEL_CACHE_MISSES 86844 MEM_LOAD_RETIRED:L1D_MISS 47181 MEM_LOAD_RETIRED:L1D_LINE_MISS 33648 MEM_LOAD_RETIRED:L2_MISS 31765 MEM_LOAD_RETIRED:L2_LINE_MISS 21525 MEM_LOAD_RETIRED:DTLB_MISS I would think if something misses at the last level, it means it should also miss in the L1 and L2 cache. And since I am stepping through at page-sized boundaries, there should be many DTLB misses. Also, shouldn't LAST_LEVEL_CACHE_MISSES equal MEM_LOAD_RETIRED:L2_MISS? Anyone know why this occurs? Thanks! --alexshye
_______________________________________________ perfmon mailing list [email protected] http://www.hpl.hp.com/hosted/linux/mail-archives/perfmon/
