kvm: Add a stat counting number of instructions executed

This changeset adds a 'numInsts' stat to the KVM-based CPU. It also
cleans up the variable names in kvmRun to make the distinction between
host cycles and estimated simulated cycles clearer. As a bonus
feature, it also fixes a warning (unreferenced variable) when
compiling in fast mode.
This commit is contained in:
Andreas Sandberg 2013-05-02 12:03:43 +02:00
parent fa249461ca
commit e316e4e5fe
2 changed files with 14 additions and 7 deletions

View file

@ -175,6 +175,11 @@ BaseKvmCPU::regStats()
BaseCPU::regStats();
numInsts
.name(name() + ".committedInsts")
.desc("Number of instructions committed")
;
numVMExits
.name(name() + ".numVMExits")
.desc("total number of KVM exits")
@ -485,8 +490,10 @@ BaseKvmCPU::kvmRun(Tick ticks)
hwCycles.stop();
uint64_t cyclesExecuted(hwCycles.read() - baseCycles);
Tick ticksExecuted(runTimer->ticksFromHostCycles(cyclesExecuted));
const uint64_t hostCyclesExecuted(hwCycles.read() - baseCycles);
const uint64_t simCyclesExecuted(hostCyclesExecuted * hostFactor);
const uint64_t instsExecuted(hwInstructions.read() - baseInstrs);
const Tick ticksExecuted(runTimer->ticksFromHostCycles(hostCyclesExecuted));
if (ticksExecuted < ticks &&
timerOverflowed &&
@ -496,14 +503,13 @@ BaseKvmCPU::kvmRun(Tick ticks)
ticks, ticksExecuted);
}
numCycles += cyclesExecuted * hostFactor;
/* Update statistics */
numCycles += simCyclesExecuted;;
++numVMExits;
numInsts += instsExecuted;
DPRINTF(KvmRun, "KVM: Executed %i instructions in %i cycles (%i ticks, sim cycles: %i).\n",
hwInstructions.read() - baseInstrs,
cyclesExecuted,
ticksExecuted,
cyclesExecuted * hostFactor);
instsExecuted, hostCyclesExecuted, ticksExecuted, simCyclesExecuted);
return ticksExecuted + flushCoalescedMMIO();
}

View file

@ -510,6 +510,7 @@ class BaseKvmCPU : public BaseCPU
public:
/* @{ */
Stats::Scalar numInsts;
Stats::Scalar numVMExits;
Stats::Scalar numMMIO;
Stats::Scalar numCoalescedMMIO;