kvm: Maintain a local instruction counter and update totalNumInsts
Update the system's totalNumInst counter when exiting from KVM and maintain an internal absolute instruction count instead of relying on the one from perf.
This commit is contained in:
@@ -80,7 +80,8 @@ BaseKvmCPU::BaseKvmCPU(BaseKvmCPUParams *params)
|
||||
pageSize(sysconf(_SC_PAGE_SIZE)),
|
||||
tickEvent(*this),
|
||||
perfControlledByTimer(params->usePerfOverflow),
|
||||
hostFactor(params->hostFactor)
|
||||
hostFactor(params->hostFactor),
|
||||
ctrInsts(0)
|
||||
{
|
||||
if (pageSize == -1)
|
||||
panic("KVM: Failed to determine host page size (%i)\n",
|
||||
@@ -416,14 +417,14 @@ BaseKvmCPU::getContext(int tn)
|
||||
Counter
|
||||
BaseKvmCPU::totalInsts() const
|
||||
{
|
||||
return hwInstructions.read();
|
||||
return ctrInsts;
|
||||
}
|
||||
|
||||
Counter
|
||||
BaseKvmCPU::totalOps() const
|
||||
{
|
||||
hack_once("Pretending totalOps is equivalent to totalInsts()\n");
|
||||
return hwInstructions.read();
|
||||
return ctrInsts;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -522,6 +523,8 @@ BaseKvmCPU::kvmRun(Tick ticks)
|
||||
numCycles += simCyclesExecuted;;
|
||||
++numVMExits;
|
||||
numInsts += instsExecuted;
|
||||
ctrInsts += instsExecuted;
|
||||
system->totalNumInsts += instsExecuted;
|
||||
|
||||
DPRINTF(KvmRun, "KVM: Executed %i instructions in %i cycles (%i ticks, sim cycles: %i).\n",
|
||||
instsExecuted, hostCyclesExecuted, ticksExecuted, simCyclesExecuted);
|
||||
|
||||
@@ -561,6 +561,9 @@ class BaseKvmCPU : public BaseCPU
|
||||
Stats::Scalar numInterrupts;
|
||||
Stats::Scalar numHypercalls;
|
||||
/* @} */
|
||||
|
||||
/** Number of instructions executed by the CPU */
|
||||
Counter ctrInsts;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user