// Actual number of sleeps from calls to schedule_rt_mutex - kind of redundant // stap script global flags probe kernel.statement("*@kernel/rtmutex.c:1024"){ if((execname() == "java")) { printf("mutex sleep: %d(%s) prio: %d cpu: %d\n", tid(), execname(), task_prio(task_current()), cpu()) flags[tid()] = 1 } } probe kernel.statement("*@kernel/rtmutex.c:735"){ if((execname() == "java")) { printf("mutex spin: %d(%s) prio: %d cpu: %d\n", tid(), execname(), task_prio(task_current()), cpu()) flags[tid()] = 2 } } probe kernel.function("finish_task_switch") { if(flags[tid()] == 1) { printf("sleeping... %d\n", tid()) print_stack(backtrace()) flags[tid()] = 0 } if(flags[tid()] == 2) { printf("spinning... %d\n", tid()) print_stack(backtrace()) flags[tid()] = 0 } }