来一发Linux中怎样晓得谁在切换历程
功能实在太强了,在配合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?#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?#cat>cswmon.stp
#!/usr/bin/envstap
#
#
globalcsw_count
globalidle_count
probescheduler.cpu_off{
csw_count++
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(incsw_count-limit20){
printf("%45s%10d
",fmt_task(task_prev,task_next),csw_count)
}
printf("%45s%10d
","idle",idle_count)
deletecsw_count
deleteidle_count
}
probetimer.s({GetProperty(Content)}){
print_cswtop()
printf("----------------------------------------------------
12下一页
要明白学好linux不是一件一蹴而就的事,一定要能坚持使用它,特别是在使用初期。
来一发Linux中怎样晓得谁在切换历程
虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行。----------\n")</P> }
CTRL+D
这个剧本会每隔设定的工夫打印出TOP20切换最多的历程和他的pid,我们来看下了局把:
viewsourceprint?#stapcswmon.stp5
ContextswitchCOUNT
swapper(0)->systemtap/11(908)500
systemtap/11(908)->swapper(0)498
swapper(0)->fct1-worker(2492)50
fct1-worker(2492)->swapper(0)50
swapper(0)->fct0-worker(2191)50
fct0-worker(2191)->swapper(0)50
swapper(0)->bond0(3432)50
bond0(3432)->swapper(0)50
stapio(879)->swapper(0)26
swapper(0)->stapio(879)25
stapio(879)->swapper(0)19
swapper(0)->stapio(879)17
swapper(0)->watchdog/9(31)5
watchdog/9(31)->swapper(0)5
swapper(0)->mysqld(18346)5
mysqld(18346)->swapper(0)5
swapper(0)->watchdog/13(43)5
watchdog/13(43)->swapper(0)5
swapper(0)->watchdog/14(46)5
watchdog/14(46)->swapper(0)5
idle859
--------------------------------------------------------------
...
我们能够看到历程从那里切换到那里,而且产生了几次,最初一行,我打印出来idle的次数,也就是说这时候候体系没啥事变做,就切换到idle(0)这个历程往歇息往了。
经由过程下面的查询拜访,我们会很分明的懂得到我们体系的开支产生在那边,便利我们定位成绩
</p>上一页12
Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手。 选择交流平台,如QQ群,网站论坛等。 随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。 虽然大家都比较喜欢漂亮的mm,但是在学 linux 的过程中,还是要多和“男人”接触一下:P 遇到问题的时候,出来看说和上网查之外,就是要多用 linux 下的 man 命令找找帮助。 随着Linux技术的更加成熟、完善,其应用领域和市场份额继续快速增大。目前,其主要应用领域是服务器系统和嵌入式系统。然而,它的足迹已遍布各个行业,几乎无处不在。 我想即使Linux高手也很难快速准确精练的回答你。 请问谁有Linux的学习心得的吗?简单的说说? 掌握在Linux系统中安装软件,在安装Linux工具盘后大致日常所需的软件都会有,一般网络提供下载的软件都会有安装说明。 让我树立了很大的信心学好这门课程,也学到了不少专业知识和技能。?
页:
[1]