监控 - Linux多核环境下如何查看进程切换信息
巴扎黑
巴扎黑 2017-04-17 11:25:24
[Linux讨论组]

如题,一台多核的机器,我用taskset命令绑定了两个进程到一个核上面,我想获得以下信息:

每个进程占用的详细时间片
每个进程详细的上下文切换时间
每个进程的上下文切换次数

vmstat可以统计整个CPU的cs次数,但是好像没有工具针对单个核做这个事情的,请问有没有类似工具或脚本?

补充下:
内核版本为:2.6.18-348.12.1.el5

巴扎黑
巴扎黑

全部回复(1)
高洛峰

ftrace 是 Linux 内核中提供的一种调试工具。使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用。

sched_switch 跟踪器可以对进程的调度切换以及之间的唤醒操作进行跟踪。

摘抄自《使用 ftrace 调试 Linux 内核》。

[root@linux tracing]# pwd 
/sys/kernel/debug/tracing 
[root@linux tracing]# echo 0 > tracing_enabled 
[root@linux tracing]# echo 1 > /proc/sys/kernel/ftrace_enabled 
[root@linux tracing]# echo sched_switch > current_tracer 
[root@linux tracing]# echo 1 > tracing_on 
[root@linux tracing]# echo 1 > tracing_enabled 

# 让内核运行一段时间,这样 ftrace 可以收集一些跟踪信息,之后再停止跟踪

[root@linux tracing]# echo 0 > tracing_enabled 
[root@linux tracing]# cat trace | head -10 
# tracer: sched_switch 
# 
#  TASK-PID    CPU#    TIMESTAMP  FUNCTION 
#     | |       |          |         | 
bash-1408   [000] 26208.816058:   1408:120:S   + [000]  1408:120:S bash 
bash-1408   [000] 26208.816070:   1408:120:S   + [000]  1408:120:S bash 
bash-1408   [000] 26208.816921:   1408:120:R   + [000]     9:120:R events/0 
bash-1408   [000] 26208.816939:   1408:120:R ==> [000]     9:120:R events/0 
events/0-9  [000] 26208.817081:      9:120:R   + [000]  1377:120:R gnome-terminal
events/0-9  [000] 26208.817088:      9:120:S ==> [000]  1377:120:R gnome-terminal
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号