Comments (7)
What does
./ocperf.py list | grep -i UOPS_EXECUTED.CYCLES_GE_1_UOPS_EXEC
say ?
from pmu-tools.
Found the problem and pushed a fix.
The latest event file renamed that event, probably a typo.
from pmu-tools.
Hello,
Thanks for the hotfix.
I am still a bit puzzled though !
Using the new version, UOPS_EXECUTED.CYCLES_GE_1_UOPS_EXEC
is not found in ocperf.py list. The command :
satin@satin-phyexp1:/usr/local/bin/pmu-tools$ ocperf.py list | grep -i UOPS_EXECUTED.CYCLES_GE_1_UOPS_EXEC
outputs nothing, though ommitting grep
prints a list of supported events.
However, the aforementionned command toplev.py -I 100 -l3 --title "GNU grep" --graph grep -r foo /usr/*
does terminate now. It outputs in stdout the filtered outputs matching, yet no graph is created (nor opened). No errors are reported.
As a consequence, I tried to use toplev with the graph option on a grep command with a limited set of output.
I used the following:
mkdir /tmp/dummy
echo "this is a test" > /tmp/dummy/test1.txt
echo "nothing interesting here" > /tmp/dummy/test2.txt
toplev.py -I 100 -l3 --title "GNU grep" --graph grep -r test /tmp/dummy/*
which fails with the following output (although the grep command alone does filter the line within test1.txt obviously):
satin@satin-phyexp1:/usr/local/bin/pmu-tools$ toplev.py -I 100 -l3 --title "GNU grep" --graph grep -r test /tmp/dummy/*
Using level 3.
perf stat -x, -e '{cpu/event=0xc2,umask=0x2/,cpu/event=0xe,umask=0x1/,cpu/event=0xd,umask=0x3,cmask=1/,cpu/event=0x9c,umask=0x1/,cycles},{cpu/event=0xa2,umask=0x8/,cpu/event=0xa3,umask=0x6,cmask=6/,cpu/event=0x9c,umask=0x1/,cpu/event=0x9c,umask=0x1,cmask=4/,cycles,instructions},{cpu/event=0xe,umask=0x1/,cycles,cpu/event=0x79,umask=0x30/,cpu/event=0xc2,umask=0x2/},{cpu/event=0xe,umask=0x1/,cpu/event=0xd,umask=0x3,cmask=1/,cycles,cpu/event=0xc2,umask=0x2/},{cpu/event=0xc5,umask=0x0/,cpu/event=0xc3,umask=0x1,edge=1,cmask=1/},{cpu/event=0xe,umask=0x1/,cpu/event=0xd,umask=0x3,cmask=1/,cycles,cpu/event=0xc2,umask=0x2/},{cpu/event=0xc5,umask=0x0/,cpu/event=0xc3,umask=0x1,edge=1,cmask=1/},{cpu/event=0xb1,umask=0x1,cmask=2/,cpu/event=0xa3,umask=0x4,cmask=4/,cpu/event=0xb1,umask=0x1,cmask=1/,cpu/event=0xb1,umask=0x1,cmask=3/},{cpu/event=0xa3,umask=0x6,cmask=6/,cycles,cpu/event=0xa2,umask=0x8/,cpu/event=0x5e,umask=0x1/,instructions},{cpu/event=0xab,umask=0x2/,cpu/event=0x87,umask=0x1/,cycles,cpu/event=0x79,umask=0x30,edge=1,cmask=1/,cpu/event=0x85,umask=0x10/},{cpu/event=0x80,umask=0x4/,cpu/event=0x79,umask=0x24,cmask=4/,cycles,cpu/event=0x79,umask=0x24,cmask=1/,cpu/event=0x85,umask=0x10/},{cpu/event=0xa3,umask=0x6,cmask=6/,cpu/event=0x79,umask=0x18,cmask=1/,cycles,cpu/event=0xa3,umask=0xc,cmask=12/,cpu/event=0x79,umask=0x18,cmask=4/},{cpu/event=0xa3,umask=0x6,cmask=6/,cpu/event=0xa3,umask=0xc,cmask=12/,cpu/event=0xa3,umask=0x5,cmask=5/,cpu/event=0xa2,umask=0x8/,cycles},{cpu/event=0xa3,umask=0x5,cmask=5/,cpu/event=0xd1,umask=0x4/,cpu/event=0xd1,umask=0x20/,cycles},{cpu/event=0xc5,umask=0x0/,cpu/event=0xe6,umask=0x1f/,cpu/event=0x5e,umask=0x1/,cpu/event=0xc3,umask=0x1,edge=1,cmask=1/},{cpu/event=0x80,umask=0x4/,cycles,cpu/event=0x5e,umask=0x1,edge=1,inv=1,cmask=1/}' -I 100 grep -r test /tmp/dummy/test1.txt /tmp/dummy/test2.txt
/tmp/dummy/test1.txt:this is a test
warning: dsb2mite_switches.penalty_cycles[cpu/event=0xab,umask=0x2/] not counted 100.00% in 1 measurements
warning: resource_stalls.sb[cpu/event=0xa2,umask=0x8/] not counted 100.00% in 3 measurements
warning: machine_clears.count[cpu/event=0xc3,umask=0x1,edge=1,cmask=1/] not counted 100.00% in 3 measurements
warning: uops_retired.retire_slots[cpu/event=0xc2,umask=0x2/] not counted 75.00% in 4 measurements
warning: cycle_activity.stalls_ldm_pending[cpu/event=0xa3,umask=0x6,cmask=6/] not counted 100.00% in 4 measurements
warning: baclears.any[cpu/event=0xe6,umask=0x1f/] not counted 100.00% in 1 measurements
warning: mem_load_uops_retired.l3_hit[cpu/event=0xd1,umask=0x4/] not counted 100.00% in 1 measurements
warning: rs_events.empty_end[cpu/event=0x5e,umask=0x1,edge=1,inv=1,cmask=1/] not counted 100.00% in 1 measurements
warning: idq.all_mite_cycles_any_uops[cpu/event=0x79,umask=0x24,cmask=1/] not counted 100.00% in 1 measurements
warning: idq.all_dsb_cycles_any_uops[cpu/event=0x79,umask=0x18,cmask=1/] not counted 100.00% in 1 measurements
warning: idq.ms_switches[cpu/event=0x79,umask=0x30,edge=1,cmask=1/] not counted 100.00% in 1 measurements
warning: br_misp_retired.all_branches[cpu/event=0xc5,umask=0x0/] not counted 100.00% in 3 measurements
warning: cycle_activity.stalls_l1d_pending[cpu/event=0xa3,umask=0xc,cmask=12/] not counted 100.00% in 2 measurements
warning: rs_events.empty_cycles[cpu/event=0x5e,umask=0x1/] not counted 100.00% in 2 measurements
warning: itlb_misses.walk_duration[cpu/event=0x85,umask=0x10/] not counted 100.00% in 2 measurements
warning: mem_load_uops_retired.l3_miss[cpu/event=0xd1,umask=0x20/] not counted 100.00% in 1 measurements
warning: uops_executed.cycles_ge_1_uop_exec[cpu/event=0xb1,umask=0x1,cmask=1/] not counted 100.00% in 1 measurements
warning: uops_issued.any[cpu/event=0xe,umask=0x1/] not counted 75.00% in 4 measurements
warning: uops_executed.cycles_ge_3_uops_exec[cpu/event=0xb1,umask=0x1,cmask=3/] not counted 100.00% in 1 measurements
warning: icache.ifetch_stall[cpu/event=0x80,umask=0x4/] not counted 100.00% in 2 measurements
warning: idq.all_mite_cycles_4_uops[cpu/event=0x79,umask=0x24,cmask=4/] not counted 100.00% in 1 measurements
warning: idq_uops_not_delivered.core[cpu/event=0x9c,umask=0x1/] not counted 50.00% in 2 measurements
warning: cycle_activity.stalls_l2_pending[cpu/event=0xa3,umask=0x5,cmask=5/] not counted 100.00% in 2 measurements
warning: ild_stall.lcp[cpu/event=0x87,umask=0x1/] not counted 100.00% in 1 measurements
warning: idq.all_dsb_cycles_4_uops[cpu/event=0x79,umask=0x18,cmask=4/] not counted 100.00% in 1 measurements
warning: instructions[instructions] not counted 100.00% in 2 measurements
warning: uops_executed.cycles_ge_2_uops_exec[cpu/event=0xb1,umask=0x1,cmask=2/] not counted 100.00% in 1 measurements
warning: cycles[cycles] not counted 91.67% in 12 measurements
warning: idq.ms_uops[cpu/event=0x79,umask=0x30/] not counted 100.00% in 1 measurements
warning: idq_uops_not_delivered.cycles_0_uops_deliv.core[cpu/event=0x9c,umask=0x1,cmask=4/] not counted 100.00% in 1 measurements
warning: int_misc.recovery_cycles[cpu/event=0xd,umask=0x3,cmask=1/] not counted 66.67% in 3 measurements
warning: cycle_activity.cycles_no_execute[cpu/event=0xa3,umask=0x4,cmask=4/] not counted 100.00% in 1 measurements
Traceback (most recent call last):
File "/usr/local/bin/pmu-tools/toplev.py", line 926, in <module>
ret = execute(runner, out, rest)
File "/usr/local/bin/pmu-tools/toplev.py", line 503, in execute
runner.print_res(res[j], rev[j], out, interval, j, env)
File "/usr/local/bin/pmu-tools/toplev.py", line 788, in print_res
obj.compute(lambda e, level:
File "/usr/local/bin/pmu-tools/hsw_client_ratios.py", line 713, in compute
self.val = BackendBoundAtEXE(EV, 2)- self.MemoryBound.compute(EV )
File "/usr/local/bin/pmu-tools/hsw_client_ratios.py", line 30, in BackendBoundAtEXE
return BackendBoundAtEXE_stalls(EV, level) / CLKS(EV, level)
File "/usr/local/bin/pmu-tools/hsw_client_ratios.py", line 28, in BackendBoundAtEXE_stalls
return ( EV("CYCLE_ACTIVITY.CYCLES_NO_EXECUTE", level) + EV("UOPS_EXECUTED.CYCLES_GE_1_UOPS_EXEC", level) - FewUopsExecutedThreshold(EV, level) - EV("RS_EVENTS.EMPTY_CYCLES", level) + EV("RESOURCE_STALLS.SB", level) )
File "/usr/local/bin/pmu-tools/toplev.py", line 789, in <lambda>
lookup_res(res, rev, e, obj, env, level))
File "/usr/local/bin/pmu-tools/toplev.py", line 613, in lookup_res
assert canon_event(emap.getperf(rev[index])) == canon_event(ev)
AssertionError
satin@satin-phyexp1:/usr/local/bin/pmu-tools$ []
Traceback (most recent call last):
File "/usr/local/bin/pmu-tools//tl-barplot.py", line 185, in <module>
plt.subplot(numplots, 1, 1)
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 897, in subplot
a = fig.add_subplot(*args, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 914, in add_subplot
a = subplot_class_factory(projection_class)(self, *args, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 9251, in __init__
self._subplotspec = GridSpec(rows, cols)[int(num) - 1]
File "/usr/lib/pymodules/python2.7/matplotlib/gridspec.py", line 176, in __getitem__
raise IndexError("index out of range")
IndexError: index out of range
Maybe are there other side-effects on tl-barplot.py
?
from pmu-tools.
Try again with an updated tree.
from pmu-tools.
Works !
Glad you spotted it, thank you.
from pmu-tools.
For the info :
/ocperf.py list | grep -i UOPS_EXECUTED.CYCLES_GE_1_UOPS_EXEC
still returns nothing, which may be the expected behavior ?
from pmu-tools.
It's not expected, but it has to be fixed in the event list.
I worked around it in toplev for now.
from pmu-tools.
Related Issues (20)
- tl-tester sometimes has comparison failures
- toplev does not print multiplex information for all metrics
- toplev: Compute minimum column widths for numbers / units
- toplev should print % for Scaled_Slots
- toplev should support filtering metrics by their threshold HOT 1
- ADL 100% Machine_Clears
- toplev should accumulate and report running time
- Add support for Meteor Lake HOT 1
- Test suite should cover both models for hybrid targets HOT 1
- toplev --run-sample: A requested CPU in '0' is not supported by PMU 'cpu_atom' (CPUs 8-23) for event 'cycles:pp' HOT 3
- toplev add option to only collect bottlenecks, not L1/L2
- MTL support misses Info.Bottlenecks HOT 1
- Trunk version of toplev regressed in generation of valid groups HOT 1
- CLTRAMP3D workload is not available
- Incorrect event for IpCall metric
- event_download returns incorrect list name in hybrid
- How to measure only the second part (a region) of a program? HOT 1
- No precise event (ppu) usage with perf-tools auto-drilldown HOT 2
- No cmask in perf output.
- ocperf not generating period
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pmu-tools.