Git Product home page Git Product logo

Comments (7)

andikleen avatar andikleen commented on July 19, 2024

What does

./ocperf.py list | grep -i UOPS_EXECUTED.CYCLES_GE_1_UOPS_EXEC

say ?

from pmu-tools.

andikleen avatar andikleen commented on July 19, 2024

Found the problem and pushed a fix.

The latest event file renamed that event, probably a typo.

from pmu-tools.

cgravier avatar cgravier commented on July 19, 2024

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.

andikleen avatar andikleen commented on July 19, 2024

Try again with an updated tree.

from pmu-tools.

cgravier avatar cgravier commented on July 19, 2024

Works !
Glad you spotted it, thank you.

from pmu-tools.

cgravier avatar cgravier commented on July 19, 2024

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.

andikleen avatar andikleen commented on July 19, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.