Skip to content

Commit

Permalink
perf: add filelist option
Browse files Browse the repository at this point in the history
  • Loading branch information
poemonsense committed Jul 22, 2021
1 parent ec0fb4b commit 1b6c41b
Showing 1 changed file with 45 additions and 7 deletions.
52 changes: 45 additions & 7 deletions perf/perf.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,20 +28,53 @@ def calc(counters, target, func):

def get_all_manip():
all_manip = []
old_data = False
if old_data:
soc = "TOP.XSSimSoC.soc"
core = ".".join([soc, "xs_core"])
else:
soc = "TOP.SimTop.l_soc"
core = ".".join([soc, "core_with_l2.core"])
ipc = PerfManip(
name = "global.IPC",
counters = ["TOP.SimTop.l_soc.core_with_l2.core.ctrlBlock.roq.clock_cycle",
"TOP.SimTop.l_soc.core_with_l2.core.ctrlBlock.roq.commitInstr"],
counters = [f"{core}.ctrlBlock.roq.clock_cycle",
f"{core}.ctrlBlock.roq.commitInstr"],
func = lambda cycle, instr: instr * 1.0 / cycle
)
all_manip.append(ipc)
block_fraction = PerfManip(
name = "global.intDispatch.blocked_fraction",
counters = ["TOP.SimTop.l_soc.core_with_l2.core.ctrlBlock.dispatch.intDispatch.blocked",
"TOP.SimTop.l_soc.core_with_l2.core.ctrlBlock.dispatch.intDispatch.in"],
counters = [f"{core}.ctrlBlock.dispatch.intDispatch.blocked",
f"{core}.ctrlBlock.dispatch.intDispatch.in"],
func = lambda blocked, dpin: blocked * 1.0 / dpin
)
all_manip.append(block_fraction)
# all_manip.append(block_fraction)
icache_miss_rate = PerfManip(
name = "global.icache_miss_rate",
counters = [f"{core}.frontend.ifu.icache.req", f"{core}.frontend.ifu.icache.miss"],
func = lambda req, miss: miss / req
)
all_manip.append(icache_miss_rate)
dtlb_miss_rate = PerfManip(
name = "global.dtlb_miss_rate",
counters = [f"{core}.memBlock.LoadUnit_0.load_s1.in", f"{core}.memBlock.LoadUnit_0.load_s1.tlb_miss",
f"{core}.memBlock.LoadUnit_1.load_s1.in", f"{core}.memBlock.LoadUnit_1.load_s1.tlb_miss"],
func = lambda req1, miss1, req2, miss2: (miss1 + miss2) / (req1 + req2)
)
all_manip.append(dtlb_miss_rate)
dcache_load_miss_rate = PerfManip(
name = "global.dcache_load_miss_rate",
counters = [f"{core}.memBlock.LoadUnit_0.load_s2.in", f"{core}.memBlock.LoadUnit_0.load_s2.dcache_miss",
f"{core}.memBlock.LoadUnit_1.load_s2.in", f"{core}.memBlock.LoadUnit_1.load_s2.dcache_miss"],
func = lambda req1, miss1, req2, miss2: (miss1 + miss2) / (req1 + req2)
)
all_manip.append(dcache_load_miss_rate)
branch_mispred = PerfManip(
name = "global.branch_mispred",
counters = [f"{core}.ctrlBlock.ftq.BpRight", f"{core}.ctrlBlock.ftq.BpWrong"],
func = lambda right, wrong: wrong / (right + wrong)
)
all_manip.append(branch_mispred)
return all_manip

def main(pfiles, output_file):
Expand All @@ -63,11 +96,16 @@ def main(pfiles, output_file):

if __name__ == "__main__":
parser = argparse.ArgumentParser(description='performance counter log parser')
parser.add_argument('pfiles', metavar='filename', type=str, nargs='+',
parser.add_argument('pfiles', metavar='filename', type=str, nargs='*', default=None,
help='performance counter log')
parser.add_argument('--output', '-o', default="stats.csv", help='output file')
parser.add_argument('--filelist', '-f', default=None, help="filelist")

args = parser.parse_args()

main(args.pfiles,args.output)
if args.filelist is not None:
with open(args.filelist) as f:
args.pfiles = list(map(lambda x: x.strip(), f.readlines()))

main(args.pfiles, args.output)

0 comments on commit 1b6c41b

Please sign in to comment.