hrtimer events are not properly added -- is this bug or feature?
Igor Zhbanov
Hello!
In the function start_process_measurement() in the file src/process/do_process.cpp events are added to perf_bundle:
perf_events->add_event("irq:softirq_entry");
perf_events->add_event("irq:softirq_exit");
perf_events->add_event("timer:timer_expire_entry");
perf_events->add_event("timer:timer_expire_exit");
perf_events->add_event("hrtimer_expire_entry"); /* !!! */
perf_events->add_event("hrtimer_expire_exit"); /* !!! */
if (!perf_events->add_event("power:cpu_idle")){
perf_events->add_event("power:power_start");
perf_events->add_event("power:power_end");
}As you may see all events are prefixed with the subsystem name.
All but hrtimer_expire_entry and hrtimer_expire_exit. And without "timer:" prefix these events are never catched.
So I have added this prefix and see that events are intercepted as needed. But event parser complains about wrong event format:
unknown op '{'
failed to read event print fmt for hrtimer_expire_entry
It seems that event parser can't handle square bracket in print format for the event:
print fmt: "hrtimer=%p function=%pf now=%llu", REC->hrtimer, REC->function, (unsigned long long)(((ktime_t) { .tv64 = REC->now }).tv64)
So is the absence of "timer:" prefix a bug or a commenting of non-working case?
Thank you.
Signature · 9 lines
Best regards, Igor Zhbanov, Expert Software Engineer, phone: +7 (495) 797 25 00 ext 3806 e-mail: i.zhbanov(a)samsung.com ASWG, Moscow R&D center, Samsung Electronics 12 Dvintsev street, building 1 127018, Moscow, Russian Federation
Chris Ferron
Quoted 33 lines · Igor Zhbanov
Hello!
In the function
start_process_measurement()in the file src/process/do_process.cpp
events are added toperf_bundle:perf_events->add_event("irq:softirq_entry"); perf_events->add_event("irq:softirq_exit"); perf_events->add_event("timer:timer_expire_entry"); perf_events->add_event("timer:timer_expire_exit"); perf_events->add_event("hrtimer_expire_entry"); /* !!! */ perf_events->add_event("hrtimer_expire_exit"); /* !!! */ if (!perf_events->add_event("power:cpu_idle")){ perf_events->add_event("power:power_start"); perf_events->add_event("power:power_end"); }As you may see all events are prefixed with the subsystem name. All but
hrtimer_expire_entryandhrtimer_expire_exit. And without "timer:" prefix
these events are never catched.So I have added this prefix and see that events are intercepted as needed.
But event parser complains about wrong event format:
unknown op '{'
failed to read event print fmt forhrtimer_expire_entryIt seems that event parser can't handle square bracket in print format for the event:
print fmt: "hrtimer=%p function=%pf now=%llu",REC->hrtimer,REC->function, (unsigned long long)(((ktime_t) { .tv64 =REC->now}).tv64)
Quoted 5 lines
So is the absence of "timer:" prefix a bug or a commenting of non-working case?
Thank you.
Im looking into this
Chris Ferron
Quoted 26 lines
Hello!
In the function
start_process_measurement()in the file src/process/do_process.cpp
events are added toperf_bundle:perf_events->add_event("irq:softirq_entry"); perf_events->add_event("irq:softirq_exit"); perf_events->add_event("timer:timer_expire_entry"); perf_events->add_event("timer:timer_expire_exit"); perf_events->add_event("hrtimer_expire_entry"); /* !!! */ perf_events->add_event("hrtimer_expire_exit"); /* !!! */ if (!perf_events->add_event("power:cpu_idle")){ perf_events->add_event("power:power_start"); perf_events->add_event("power:power_end"); }As you may see all events are prefixed with the subsystem name. All but
hrtimer_expire_entryandhrtimer_expire_exit. And without "timer:" prefix
these events are never catched.So I have added this prefix and see that events are intercepted as needed. But event parser complains about wrong event format:
unknown op '{'
failed to read event print fmt forhrtimer_expire_entry
Quoted 7 lines
It seems that event parser can't handle square bracket in print format for the event:
print fmt: "hrtimer=%p function=%pf now=%llu",REC->hrtimer,REC->function, (unsigned long long)(((ktime_t) { .tv64 =REC->now}).tv64)So is the absence of "timer:" prefix a bug or a commenting of non-working case?
I sent a note to Steve for a consult, seems its a bug. Steve sent a fix it in the traceevent lib. Thanks for the report, please let me know if you find something else.
Quoted 19 lines
Thank you.
--
Best regards,
Igor Zhbanov,
Expert Software Engineer,
phone: +7 (495) 797 25 00 ext 3806
e-mail: i.zhbanov(a)samsung.comASWG, Moscow R&D center, Samsung Electronics
12 Dvintsev street, building 1
127018, Moscow, Russian Federation_______________________________________________
PowerTop mailing list
PowerTop(a)lists.01.org
https://lists.01.org/mailman/listinfo/powertop