cache stats: account for writebacks and/or device occupancy in the cache.

Plus, a minor bugfix that neglects to update blk->contextSrc in certain cases on a cache insert.
This commit is contained in:
Lisa Hsu
2010-02-24 13:46:55 -08:00
parent 1d3228481f
commit 7f3cd9a9fd
2 changed files with 8 additions and 2 deletions

View File

@@ -88,7 +88,7 @@ BaseTags::regStats(const string &name)
;
occupancies
.init(cache->numCpus())
.init(cache->numCpus() + 1)
.name(name + ".occ_blocks")
.desc("Average occupied blocks per context")
.flags(nozero | nonan)

View File

@@ -162,6 +162,8 @@ LRU::findVictim(Addr addr, PacketList &writebacks)
if (blk->contextSrc != -1) {
occupancies[blk->contextSrc % cache->numCpus()]--;
blk->contextSrc = -1;
} else {
occupancies[cache->numCpus()]--;
}
DPRINTF(CacheRepl, "set %x: selecting blk %x for replacement\n",
@@ -188,8 +190,10 @@ LRU::insertBlock(Addr addr, BlkType *blk, int context_src)
// deal with what we are bringing in
if (context_src != -1) {
occupancies[context_src % cache->numCpus()]++;
blk->contextSrc = context_src;
} else {
occupancies[cache->numCpus()]++;
}
blk->contextSrc = context_src;
unsigned set = extractSet(addr);
sets[set].moveToHead(blk);
@@ -206,6 +210,8 @@ LRU::invalidateBlk(BlkType *blk)
if (blk->contextSrc != -1) {
occupancies[blk->contextSrc % cache->numCpus()]--;
blk->contextSrc = -1;
} else {
occupancies[cache->numCpus()]--;
}
}
}