最近在看sched provider
相关内容,搜索到一篇古老的帖子。帖子大意就是用“sched:::on-cpu
”和“sched:::off-cpu
”统计的线程运行时间和期望的不一样,原因是把Idle
线程的运行时间计算进去了,需要过滤掉。在Solaris
上过滤Idle
线程的方法:
sched:::on-cpu
/curthread->t_pri != -1/
{
......
}
不同操作系统过滤Idle
线程的方法如下(摘自DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD[……]