I am interested in computing for my application a metric that I would call "fetch ratio": The total amount of data manipulated by the program compared to the total amount of data fetched from main memory (It is crucial that the total amount of data fetched also includes prefetched data).
I'm running my experiments on a Sandy Bridge i5-2410M running Linux x64 3.7
My problem is that I can't find the good events for my needs.
I ran into this article: http://software.intel.com/en-us/articles/detecting-memory-bandwidth-saturation-in-threaded-applicati...
But it seems that none of the events mentioned in this article are available on Sandy Bridge. I can't even find any mention of them in the Intel Manuel Volume 3B that list all available events for quite a lot of processors.
In the comments of the article mentionned above, someone asked about bandwidth measurement on Sandy Bridge. Romain Dementiev said that Intel Performance Counter Monitor can do it.
I looked at the code and it doesn't seem to be implemented for Sandy Bridge: http://pastebin.com/qw52cfeb
What event should I use? or at least, what is recommended by Intel for bandwidth measurement on Sandy Bridge? (even system-wide bandwidth measurement would be acceptable, I would just have to keep my machine dead quiet which is not a problem).
The tool (VTune(TM) Amplifier XE 2013 Update 3) already provides pre-defined memory bandwidth analysis - I wonder.
You can verify:
#amplxe-cl -collect-list | grep snb-bandwidth
snb-bandwidth Bandwidth - Sandy Bridge / Ivy Bridge
So you can use this analysis type ("snb-bandwidth") to collect data. (The artical is quite old - for old product, VTune Performance Analyzer 9.1