25 lines
563 B
Plaintext
Executable File
25 lines
563 B
Plaintext
Executable File
#!/usr/bin/stap
|
|
|
|
# usage: task_latency.stap process_name latency_threshold_ms
|
|
|
|
global start_time
|
|
|
|
probe process(@1).mark("reactor_run_tasks_single_start") {
|
|
start_time[tid()] = gettimeofday_us()
|
|
}
|
|
|
|
probe process(@1).mark("reactor_run_tasks_single_end") {
|
|
delete start_time[tid()]
|
|
}
|
|
|
|
probe timer.profile {
|
|
if ([tid()] in start_time) {
|
|
now = gettimeofday_us()
|
|
start = start_time[tid()]
|
|
if ((now - start) > $2 * 1000) {
|
|
printf("detected tasks running for >%sms\n", @2)
|
|
print_usyms(ubacktrace())
|
|
}
|
|
}
|
|
}
|