Linux服务器中谁在切换进程
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇"Linux服务器中谁在切换进程"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"L
千家信息网最后更新 2025年12月02日Linux服务器中谁在切换进程
这篇"Linux服务器中谁在切换进程"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Linux服务器中谁在切换进程"文章吧。
我们在做Linux服务器的时候经常会需要知道谁在做进程切换,什么原因需要做进程切换。 因为进程切换的代价很高,我给出一个LMbench测试出来的数字:
Context switching – times in microseconds – smaller is better————————————————————————-Host OS 2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64Kctxsw ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw——— ————- —— —— —— —— —— ——- ——-my174.cm4 Linux 2.6.18- 6.1100 7.0200 6.1100 8.7400 7.7200 8.96000 9.62000
在我的很高端的服务器上,进程切换的开销在8us左右, 这个相对于高性能的服务器是不可接受的, 所以我们要在一个时间片内尽可能的多做事情,而不是把时间浪费在无谓的切换上。
好奇害死猫,我们来调查下谁在切换我们的进程:
[root@my174 admin]# dstat 1—-total-cpu-usage—- -dsk/total- -net/total- —paging– —system–usr sys idl wai hiq siq| read writ| recv send| in out | int csw0 0 100 0 0 0| 0 0 | 796B 1488B| 0 0 |1004 1280 0 100 0 0 0| 0 0 | 280B 728B| 0 0 |1005 1140 0 100 0 0 0| 0 0 | 280B 728B| 0 0 |1005 1280 0 100 0 0 0| 0 0 | 280B 728B| 0 0 |1005 1140 0 100 0 0 0| 0 320k| 280B 728B| 0 0 |1008 143…
我们可以看到 csw的数目是 120/S, 但是dstat或者vmstat类似的工具并没有告诉我们谁在干坏事。好吧!我们自己动手行吧。
祭出我们可爱的systemtap!
[root@my174 admin]# cat >cswmon.stp#! /usr/bin/env stap## global csw_countglobal idle_count probe scheduler.cpu_off {csw_count[task_prev, task_next]++idle_count+=idle} function fmt_task(task_prev, task_next){return sprintf("%s(%d)->%s(%d)",task_execname(task_prev),task_pid(task_prev),task_execname(task_next),task_pid(task_next))} function print_cswtop () {printf ("%45s s\n", "Context switch", "COUNT")foreach ([task_prev, task_next] in csw_count- limit 20) {printf("%45s d\n", fmt_task(task_prev, task_next), csw_count[task_prev, task_next])}printf("%45s d\n", "idle", idle_count) delete csw_countdelete idle_count} probe timer.s($1) {print_cswtop ()printf("————————————————————–\n")}CTRL+D这个脚本会每隔设定的时间打印出TOP 20切换最多的进程和他的pid, 我们来看下结果把:
[root@my174 admin]# stap cswmon.stp 5Context switch COUNTswapper(0)->systemtap/11(908) 500systemtap/11(908)->swapper(0) 498swapper(0)->fct1-worker(2492) 50fct1-worker(2492)->swapper(0) 50swapper(0)->fct0-worker(2191) 50fct0-worker(2191)->swapper(0) 50swapper(0)->bond0(3432) 50bond0(3432)->swapper(0) 50stapio(879)->swapper(0) 26swapper(0)->stapio(879) 25stapio(879)->swapper(0) 19swapper(0)->stapio(879) 17swapper(0)->watchdog/9(31) 5watchdog/9(31)->swapper(0) 5swapper(0)->mysqld(18346) 5mysqld(18346)->swapper(0) 5swapper(0)->watchdog/13(43) 5watchdog/13(43)->swapper(0) 5swapper(0)->watchdog/14(46) 5watchdog/14(46)->swapper(0) 5idle 859————————————————————–…
我们可以看到进程从哪里切换到哪里,并且发生了多少次, ***一行,我打印出来idle的次数,也就是说这时候系统没啥事情做,就切换到idle(0)这个进程去休息去了。
通过上面的调查,我们会很清楚的了解到我们系统的开销发生在那里,方便我们定位问题。
以上就是关于"Linux服务器中谁在切换进程"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
切换
进程
服务器
服务
内容
时间
开销
文章
知识
篇文章
系统
调查
可爱
清楚
好奇
一行
也就是
也就是说
事情
代价
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
面对网络安全企业应该怎么做
大学网络技术宣传
武汉大学网络安全李炳辉
励志软件开发岗位
数据库所有表的大小
ftp服务器被动模式
hbuilder数据库
在济南干软件开发赚钱吗
我的世界纯生存服务器pc
网络安全法开始湿湿的时间
平谷区正规软件开发特点
服务器检测不到盘符
群晖服务器类型证书
网络安全体现在多网合一
phpmysql数据库教程
贵州各大服务器云空间
服务器惠普DL388参数
公寓网络连接不到服务器
服务器身份
web服务器有哪些核心功能
回到原服务器可以带什么
查看系统中可用的字符集数据库
淮安综合软件开发优势
菏泽app软件开发聚顶科技有名
软件开发 小城市 转型
风行网络安全黑板报
网络安全综合防控体系建设方案
中原电子软件开发
做app软件开发累不累
关闭诺基亚备份服务器