44,48d43
< Statistics::Statistics()
< : iplLast(0), iplLastTick(0)
< {
< }
<
63,91d57
<
< _iplCount
< .init(32)
< .name(name() + ".ipl_count")
< .desc("number of times we switched to this ipl")
< .flags(total | pdf | nozero | nonan)
< ;
<
< _iplGood
< .init(32)
< .name(name() + ".ipl_good")
< .desc("number of times we switched to this ipl from a different ipl")
< .flags(total | pdf | nozero | nonan)
< ;
<
< _iplTicks
< .init(32)
< .name(name() + ".ipl_ticks")
< .desc("number of cycles we spent at this ipl")
< .flags(total | pdf | nozero | nonan)
< ;
<
< _iplUsed
< .name(name() + ".ipl_used")
< .desc("fraction of swpipl calls that actually changed the ipl")
< .flags(total | nozero | nonan)
< ;
<
< _iplUsed = _iplGood / _iplCount;
94,123d59
< void
< Statistics::swpipl(int ipl)
< {
< assert(ipl >= 0 && ipl <= 0x1f && "invalid IPL\n");
<
< _iplCount[ipl]++;
<
< if (ipl == iplLast)
< return;
<
< _iplGood[ipl]++;
< _iplTicks[iplLast] += curTick() - iplLastTick;
< iplLastTick = curTick();
< iplLast = ipl;
< }
<
< void
< Statistics::serialize(CheckpointOut &cp) const
< {
< SERIALIZE_SCALAR(iplLast);
< SERIALIZE_SCALAR(iplLastTick);
< }
<
< void
< Statistics::unserialize(CheckpointIn &cp)
< {
< UNSERIALIZE_SCALAR(iplLast);
< UNSERIALIZE_SCALAR(iplLastTick);
< }
<