13 | 答疑(一):无法模拟出 RES 中断的问题,怎么办?
倪朋飞
该思维导图由 AI 生成,仅供参考
你好,我是倪朋飞。
专栏更新至今,四大基础模块之一的 CPU 性能篇,我们就已经学完了。很开心过半数同学还没有掉队,仍然在学习、积极实践操作,并且热情地留下了大量的留言。
这些留言中,我非常高兴地看到,很多同学已经做到了活学活用,用学过的案例思路,分析出了线上应用的性能瓶颈,解决了实际工作中的性能问题。 还有同学能够反复推敲思考,指出文章中某些不当或不严谨的叙述,我也十分感谢你,同时很乐意和你探讨。
此外,很多留言提出的问题也很有价值,大部分我都已经在 app 里回复,一些手机上不方便回复的或者很有价值的典型问题,我专门摘了出来,作为今天的答疑内容,集中回复。另一方面,也是为了保证所有人都能不漏掉任何一个重点。
今天是性能优化答疑的第一期。为了便于你学习理解,它们并不是严格按照文章顺序排列的。每个问题,我都附上了留言区提问的截屏。如果你需要回顾内容原文,可以扫描每个问题右下方的二维码查看。
问题 1:性能工具版本太低,导致指标不全
这是使用 CentOS 的同学普遍碰到的问题。在文章中,我的 pidstat 输出里有一个 %wait 指标,代表进程等待 CPU 的时间百分比,这是 systat 11.5.5 版本才引入的新指标,旧版本没有这一项。而 CentOS 软件库里的 sysstat 版本刚好比这个低,所以没有这项指标。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文是倪朋飞的答疑专栏,主要解答了读者在性能优化方面遇到的一些常见问题。作者提到了在使用性能工具时,版本较低可能导致指标不全的问题,但也指出了可以通过其他手段获取所需指标的方法。针对使用stress命令无法模拟iowait高的场景的问题,作者建议使用stress-ng命令来代替stress命令。此外,针对无法模拟出RES中断的问题,作者解释了重调度中断的机制,并指出了一些常见错误的观点。整篇文章涉及到了性能工具版本、I/O压力模拟和中断机制等技术内容,对于需要进行性能优化的读者来说,提供了一些有价值的解决问题的思路和方法。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Linux 性能优化实战》,新⼈⾸单¥68
《Linux 性能优化实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(50)
- 最新
- 精选
- ninuxer打卡day14 之前一直理解有误,感谢指出! pidstat 中, %wait 表示进程等待 CPU 的时间百分比。此时进程是运行状态。 top 中 ,iowait% 则表示等待 I/O 的 CPU 时间百分比。此时进程处于不可中断睡眠态。 等待 CPU 的进程已经在 CPU 的就绪队列中,处于运行状态;而等待 I/O 的进程则处于不可中断状态。
作者回复: 👍
2018-12-19443 - 念你如昔非常非常感谢,这钱花的值,之前没有对这些东西形成体系,老是感觉有力使不上的感觉,自从看了老师的文档,终于飘了,都想跳槽了?!。
作者回复: 😢
2018-12-1918 - 微思老师,等待IO的不可中断进程是否一直占用CPU?
作者回复: 不会,有其他需要CPU的进程运行时会切换过去
2018-12-198 - 郭江伟课程很系统,把自己以前的知识都串起来了,后续争取每个案例自己都做一次,并且融合自己的经验改进下案例
作者回复: 欢迎分享你的改进经验😊
2018-12-198 - MoFanDon做了几年运维一直想要掌握,却了解的很零散。这段时间的课程让我学习很多,感谢老师。
作者回复: 😊
2018-12-194 - 我来也[D13打卡] 多谢老师提出来, pidstat 和 top 中的 %wait 含义并不一样. 之前只知道top是io的wait, 而新接触的pidstat的倒没有细想过. 确实是应该多man一下,看下命令文档. 刚开始要把工具用起来, 之后再查看命令的详细文档.
作者回复: 嗯嗯,虽然专栏里也有不少使用案例,但并能包括所有细节的知识,这都需要查文档
2018-12-192 - 大哈老师,您好,我想知道像pidstat这样的工具是怎么获取到这些性能数据的,我自己去开发应该从那里获取呢?
作者回复: man 查询工具手册,一般都有介绍。一般数据都是来自 /proc、/sys 等
2019-07-101 - 胡莉婷补充一点。我们的进程都是后台服务,机器1和机器2启动后都没有业务进来
作者回复: 嗯 我的第一反应是负载不均匀,后台处理的业务是均匀的吗?
2019-01-0821 - 胡莉婷老师你好,我们有个问题,还请给个思路。同样的应用程序,部署在两台机器上,比如机器1和机器2.。top发现机器2上进程数据段大小是机器1上数据段的10倍大。还有一个情况是机器2的进程(有上百个)启动后,比较集中在某一个cpu上,而机器1上我们的进程分布就比较均匀。还请指点一下
作者回复: 数据段的问题可以对比分析下内存的差别,看看哪里不一样。 调度的问题可能跟内核参数(比如NUMA)、系统上其他进程的运行或者进程在等待的资源有关,试试从这几个方面看看?
2019-01-081 - dexter[root@localhost ~]# docker run --name phpfpm -itd --network container:nginx feisky/php-fpm flag provided but not defined: --network See 'docker run --help'. [root@localhost ~]# docker version Client version: 1.7.1 Client API version: 1.19 Go version (client): go1.4.2 Git commit (client): 786b29d/1.7.1 OS/Arch (client): linux/amd64 Server version: 1.7.1 Server API version: 1.19 Go version (server): go1.4.2 Git commit (server): 786b29d/1.7.1 OS/Arch (server): linux/amd64 centos6.10 安装发现没有--network参数
作者回复: centos6有点太老了,你用的docker 1.7选项跟新版不一样,—net。推荐升级到centos7实践,否则很多工具的支持、安装、使用方法都会不同
2018-12-201
收起评论