|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。
我们在做Linux服务器的时分常常会必要晓得谁在做历程切换,甚么缘故原由必要做历程切换。由于历程切换的价值很高,我给出一个LMbench测试出来的数字:
ContextswitchingCtimesinmicrosecondsCsmallerisbetter
――――――――――――――――――――――――-
HostOS2p/0K2p/16K2p/64K8p/16K8p/64K16p/16K16p/64K
ctxswctxswctxswctxswctxswctxswctxsw
―――――――-――――――――――――-――-
my174.cm4Linux2.6.18-6.11007.02006.11008.74007.72008.960009.62000
在我的很高真个服务器上,历程切换的开支在8us摆布,这个相对高功能的服务器是不成承受的,以是我们要在一个工夫片内尽量的多办事情,而不是把工夫华侈在无谓的切换上。
猎奇害逝世猫,我们来查询拜访下谁在切换我们的历程:
viewsourceprint?[root@my174admin]#dstat1
----total-cpu-usage-----dsk/total--net/total----paging-----system--
usrsysidlwaihiqsiq|readwrit|recvsend|inout|intcsw
00100000|00|796B1488B|00|1004128
00100000|00|280B728B|00|1005114
00100000|00|280B728B|00|1005128
00100000|00|280B728B|00|1005114
00100000|0320k|280B728B|00|1008143
...
我们能够看到csw的数量是120/S,可是dstat大概vmstat相似的工具并没有告知我们谁在干好事。好吧!我们本人下手行吧。
祭出我们心爱的systemtap!
viewsourceprint?[root@my174admin]#cat>cswmon.stp
#!/usr/bin/envstap
#
#
globalcsw_count
globalidle_count
probescheduler.cpu_off{
csw_count[task_prev,task_next]++
idle_count+=idle
}
functionfmt_task(task_prev,task_next)
{
returnsprintf("%s(%d)->%s(%d)",
task_execname(task_prev),
task_pid(task_prev),
task_execname(task_next),
task_pid(task_next))
}
functionprint_cswtop(){
printf("%45s%10s
","Contextswitch","COUNT")
foreach([task_prev,task_next]incsw_count-limit20){
printf("%45s%10d
",fmt_task(task_prev,task_next),csw_count[task_prev,task_next])
}
printf("%45s%10d
","idle",idle_count)
deletecsw_count
deleteidle_count
}
probetimer.s({GetProperty(Content)}){
print_cswtop()
printf("----------------------------------------------------
12下一页
要明白学好linux不是一件一蹴而就的事,一定要能坚持使用它,特别是在使用初期。 |
|