Add support for valgrind last-level cache (LL) information

pull/1/head
Timothy Pearson 12 years ago
parent 3dd9fca200
commit d6d30f5d8f

@ -886,7 +886,7 @@ void GraphExporter::buildGraph(TraceFunction* f, int d,
double cost = call->subCost(_costType) * factor; double cost = call->subCost(_costType) * factor;
// ignore function calls with absolute cost < 3 per call // 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; // if (count>0.0 && (cost/count < 3)) continue;
double oldCost = 0.0; double oldCost = 0.0;

@ -43,7 +43,10 @@ static TQStringList knownTypes()
<< "I2mr" << "D2mr" << "D2mw" << "I2mr" << "D2mr" << "D2mw"
<< "Smp" << "Sys" << "User" << "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; return l;
} }
@ -53,7 +56,8 @@ static TQString knownFormula(TQString name)
{ {
if (name =="L1m") return TQString("I1mr + D1mr + D1mw"); if (name =="L1m") return TQString("I1mr + D1mr + D1mw");
if (name =="L2m") return TQString("I2mr + D2mr + D2mw"); 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(); return TQString();
} }
@ -69,11 +73,15 @@ static TQString knownLongName(TQString name)
if (name =="I2mr") return i18n("L2 Instr. Fetch Miss"); if (name =="I2mr") return i18n("L2 Instr. Fetch Miss");
if (name =="D2mr") return i18n("L2 Data Read Miss"); if (name =="D2mr") return i18n("L2 Data Read Miss");
if (name =="D2mw") return i18n("L2 Data Write 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 =="Smp") return i18n("Samples");
if (name =="Sys") return i18n("System Time"); if (name =="Sys") return i18n("System Time");
if (name =="User") return i18n("User Time"); if (name =="User") return i18n("User Time");
if (name =="L1m") return i18n("L1 Miss Sum"); if (name =="L1m") return i18n("L1 Miss Sum");
if (name =="L2m") return i18n("L2 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"); if (name =="CEst") return i18n("Cycle Estimation");
return TQString(); return TQString();
@ -201,7 +209,11 @@ void Configuration::readOptions(KConfig* kconfig)
c->_colors.clear(); c->_colors.clear();
// colors for default cost types: // 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-I2mr")->color = TQColor(240, 0, 0);
c->color("CostType-D2mr")->color = TQColor(180,40,40); c->color("CostType-D2mr")->color = TQColor(180,40,40);
c->color("CostType-D2mw")->color = TQColor(120,80,80); c->color("CostType-D2mw")->color = TQColor(120,80,80);

Loading…
Cancel
Save