Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void UncoreCounterState::readAndAggregate(MsrHandle * msr)
- {
- TemporalThreadAffinity tempThreadAffinity(msr->getCoreId()); // speedup trick for Linux
- PCM * m = PCM::getInstance();
- uint32 cpu_model = m->getCPUModel();
- switch (cpu_model)
- {
- case PCM::WESTMERE_EP:
- case PCM::NEHALEM_EP:
- {
- uint64 cUncMCFullWrites = 0;
- uint64 cUncMCNormalReads = 0;
- msr->read(MSR_UNCORE_PMC0, &cUncMCFullWrites);
- msr->read(MSR_UNCORE_PMC1, &cUncMCNormalReads);
- UncMCFullWrites += m->extractUncoreGenCounterValue(cUncMCFullWrites);
- UncMCNormalReads += m->extractUncoreGenCounterValue(cUncMCNormalReads);
- }
- break;
- case PCM::NEHALEM_EX:
- case PCM::WESTMERE_EX:
- {
- uint64 cUncMCNormalReads = 0;
- msr->read(MB0_MSR_PMU_CNT_0, &cUncMCNormalReads);
- UncMCNormalReads += m->extractUncoreGenCounterValue(cUncMCNormalReads);
- msr->read(MB1_MSR_PMU_CNT_0, &cUncMCNormalReads);
- UncMCNormalReads += m->extractUncoreGenCounterValue(cUncMCNormalReads);
- uint64 cUncMCFullWrites = 0; // really good approximation of
- msr->read(BB0_MSR_PERF_CNT_1, &cUncMCFullWrites);
- UncMCFullWrites += m->extractUncoreGenCounterValue(cUncMCFullWrites);
- msr->read(BB1_MSR_PERF_CNT_1, &cUncMCFullWrites);
- UncMCFullWrites += m->extractUncoreGenCounterValue(cUncMCFullWrites);
- }
- break;
- case PCM::JAKETOWN:
- case PCM::SANDY_BRIDGE:
- case PCM::IVY_BRIDGE:
- {
- }
- break;
- default:;
- }
- uint64 cC2Residency = 0;
- uint64 cC3Residency = 0;
- uint64 cC6Residency = 0;
- uint64 cC7Residency = 0;
- msr->read(MSR_PKG_C3_RESIDENCY, &cC3Residency);
- msr->read(MSR_PKG_C6_RESIDENCY, &cC6Residency);
- if(m->extendedCStateMetricsAvailable())
- {
- msr->read(MSR_PKG_C2_RESIDENCY, &cC2Residency);
- msr->read(MSR_PKG_C7_RESIDENCY, &cC7Residency);
- }
- C2Residency += cC2Residency;
- C3Residency += cC3Residency;
- C6Residency += cC6Residency;
- C7Residency += cC7Residency;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement