summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-11-12 23:45:48 -0600
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-11-12 23:45:48 -0600
commitd6d30f5d8f56e16dfd4aa00691421e07b51655ac (patch)
treeb45ba9fb18eb447be9419e7d41453da61d4114a8
parent3dd9fca200d121517a7ba25ad8ba9a0a98b320a7 (diff)
downloadtdesdk-d6d30f5d8f56e16dfd4aa00691421e07b51655ac.tar.gz
tdesdk-d6d30f5d8f56e16dfd4aa00691421e07b51655ac.zip
Add support for valgrind last-level cache (LL) information
-rw-r--r--tdecachegrind/tdecachegrind/callgraphview.cpp2
-rw-r--r--tdecachegrind/tdecachegrind/configuration.cpp18
2 files changed, 16 insertions, 4 deletions
diff --git a/tdecachegrind/tdecachegrind/callgraphview.cpp b/tdecachegrind/tdecachegrind/callgraphview.cpp
index 7ded6678..35ccef87 100644
--- a/tdecachegrind/tdecachegrind/callgraphview.cpp
+++ b/tdecachegrind/tdecachegrind/callgraphview.cpp
@@ -886,7 +886,7 @@ void GraphExporter::buildGraph(TraceFunction* f, int d,
double cost = call->subCost(_costType) * factor;
// ignore function calls with absolute cost < 3 per call
- // No: This would skip a lot of functions e.g. with L2 cache misses
+ // No: This would skip a lot of functions e.g. with L2 or LL cache misses
// if (count>0.0 && (cost/count < 3)) continue;
double oldCost = 0.0;
diff --git a/tdecachegrind/tdecachegrind/configuration.cpp b/tdecachegrind/tdecachegrind/configuration.cpp
index d9b902ee..1455da45 100644
--- a/tdecachegrind/tdecachegrind/configuration.cpp
+++ b/tdecachegrind/tdecachegrind/configuration.cpp
@@ -43,7 +43,10 @@ static TQStringList knownTypes()
<< "I2mr" << "D2mr" << "D2mw"
<< "Smp" << "Sys" << "User"
- << "L1m" << "L2m" << "CEst";
+ // Valgrind < 3.6.0
+ << "L1m" << "L2m" << "CEst"
+ // Valgrind 3.6.0: L2 events changed to to LL (last level) events
+ << "L1m" << "LLm" << "CEst";
return l;
}
@@ -53,7 +56,8 @@ static TQString knownFormula(TQString name)
{
if (name =="L1m") return TQString("I1mr + D1mr + D1mw");
if (name =="L2m") return TQString("I2mr + D2mr + D2mw");
- if (name =="CEst") return TQString("Ir + 10 L1m + 100 L2m");
+ if (name =="LLm") return TQString("I2mr + D2mr + D2mw");
+ if (name =="CEst") return TQString("Ir + 10 L1m + 100 L2m + 100 LLm");
return TQString();
}
@@ -69,11 +73,15 @@ static TQString knownLongName(TQString name)
if (name =="I2mr") return i18n("L2 Instr. Fetch Miss");
if (name =="D2mr") return i18n("L2 Data Read Miss");
if (name =="D2mw") return i18n("L2 Data Write Miss");
+ if (name =="ILmr") return i18n("LL Instr. Fetch Miss");
+ if (name =="DLmr") return i18n("LL Data Read Miss");
+ if (name =="DLmw") return i18n("LL Data Write Miss");
if (name =="Smp") return i18n("Samples");
if (name =="Sys") return i18n("System Time");
if (name =="User") return i18n("User Time");
if (name =="L1m") return i18n("L1 Miss Sum");
if (name =="L2m") return i18n("L2 Miss Sum");
+ if (name =="LLm") return i18n("LL Miss Sum");
if (name =="CEst") return i18n("Cycle Estimation");
return TQString();
@@ -201,7 +209,11 @@ void Configuration::readOptions(KConfig* kconfig)
c->_colors.clear();
// colors for default cost types:
- // red for L2 misses, green for L1 misses, blue for normal accesses
+ // red for L2 or LL misses, green for L1 misses, blue for normal accesses
+ c->color("CostType-ILmr")->color = TQColor(240, 0, 0);
+ c->color("CostType-DLmr")->color = TQColor(180,40,40);
+ c->color("CostType-DLmw")->color = TQColor(120,80,80);
+
c->color("CostType-I2mr")->color = TQColor(240, 0, 0);
c->color("CostType-D2mr")->color = TQColor(180,40,40);
c->color("CostType-D2mw")->color = TQColor(120,80,80);