性能测试实战 30 讲
高楼
前 HP 高级性能专家,7DGroup 创始人
45161 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 37 讲
性能测试实战 30 讲
15
15
1.0x
00:00/00:00
登录|注册

17丨CentOS:操作系统级监控及常用计数器解析(上)

我相信有一些人看到这篇文章的标题肯定有种不想看的感觉,因为这样的内容实在被写得太多太多了。操作系统分析嘛,无非就是 CPU 使用率、I/O 使用率、内存使用率、网络使用率等各种使用率的描述。
然而因为视角的不同,在性能测试和分析中,这始终是我们绕不过去的分析点。我们得知道什么时候才需要去分析操作系统,以及要分析操作系统的什么内容。
首先,我们前面在性能分析方法中提到,性能分析要有起点,通常情况下,这个起点就是响应时间、TPS 等压力工具给出来的信息。
我们判断了有瓶颈之后,通过拆分响应时间就可以知道在哪个环节上出了问题,再去详细分析这个操作系统。这就需要用到我们的分析决策树了。
你还记得我们在第 6 篇文章中提到的分析决策大树吗?今天我们单独把操作系统的这一环节给提出来,并加上前面说的细化过程,就可以得到下面的这个分析决策树。
在分段分层确定了这个系统所运行的应用有问题之后,还要记起另一件事情,就是前面提到的“全局—定向”的监控思路。
既然说到了全局,我们得先知道操作系统中,都有哪些大的模块。这里就到了几乎所有性能测试人员看到就想吐的模块了,CPU、I/O、Memory、Network…
没办法,谁让操作系统就这么点东西呢。我先画一个思维导图给你看一下。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能测试实战 30 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(15)

  • 最新
  • 精选
  • Linuxer
    不知道我理解得对不对,应用无非就是两种计算密集型和IO密集型,计算密集集就体现在CPU忙,IO密集型就体现在CPU空闲,我想接下来无非就是围绕这两种类型展开分析,所以说CPU是性能分析的方向性指标。

    作者回复: 理解的很正确。

    20
  • potato
    现在 我们这边压测有一个指标,混合压测的时候,看cpu的使用率 超过60%的就定义为系统瓶颈,这个是不是不太合理呢

    作者回复: 非常不合理,这是耍流氓! 首先只看使用率的想法就不对。

    5
  • 小呀么小二郎
    做个内容小结: 1、操作系统需要监控的模块:CPU、I/O、Memory、Network、System、Swap。 2、仅需四个命令就能监控以上6个模块:top、wmstat、iostat、netstat。 3、监控命令是可以监控到相应模块的计数器,而不是监控某个模块。对于监控命令,要知道它的局限性,并且要通过大量的练习来掌握。 4、监控的思考逻辑:因为需要监控某个计数器,才使用某个监控命令。(有点类似分析性能数据时,自己应该知道要从哪些数据入手,而不是把全部的数据看一遍) 5、CPU常用的8个计数器中,容易出现性能问题是以下四个计数器,排序按照频率由高到低:us、wa、sy、si。要分别构建分析决策树。CPU是重点分析对象。 6、为了保证分析方向的正确性,用perf top -g命令确定CPU用在哪里。(需要先安装perf)

    作者回复: 总结得不错。不过在操作中,希望还能记得住。

    2
    5
  • 凌空飞起的剪刀腿
    swap是干嘛的? 在Linux下,SWAP的作用类似Windows系统下的“虚拟内存”。当物理内存不足时,拿出部分硬盘空间当SWAP分区(虚拟成内存)使用,从而解决内存容量不足的情况。 SWAP意思是交换,顾名思义,当某进程向OS请求内存发现不足时,OS会把内存中暂时不用的数据交换出去,放在SWAP分区中,这个过程称为SWAP OUT。当某进程又需要这些数据且OS发现还有空闲物理内存时,又会把SWAP分区中的数据交换回物理内存中,这个过程称为SWAP IN。 当然,swap大小是有上限的,一旦swap使用完,操作系统会触发OOM-Killer机制,把消耗内存最多的进程kill掉以释放内存。

    作者回复: 还有一点要注意,soft faults会不断增加。

    5
  • 月亮和六便士
    老师,1. 在落地si cpu 的时候 看interrupts的目的是什么,不能直接看softirqs吗 ?从interrupts-->softirqs 这个判断逻辑是什么? 2. 判断si 高低的逻辑和标准是什么?

    作者回复: 1. 看interrupts是为了对应中断号和设备名。看softirqs是为了看模块名。从interrupts-->softirqs 是相同的数据,不需要判断呀。 2. SI高低没有标准。主要看它对性能产生了多大的影响。

    4
  • 吴小喵
    8919 的模板导入没有成功呢,什么数据都出不了

    作者回复: 做如下检查: 1. node_exporter有没有取到数据? 2. prometheus中有没有存储到数据? 3. grafana中的数据源配置是否正确? 4. 导入模板时是否选择了正确的数据源?

    4
  • zwm
    第二编读,有新收获

    作者回复: 我都不止读两遍了。写的人也是会忘的。😊

    3
  • 喜哥
    你好,高老师,问下 如果应用部署在k8s上 ,用top或是vmstat等命令查看都是node节点的指标,如何精确排查应用问题导致的性能问题呢

    作者回复: 首先,k8s只是编排工具,容器才是应用的载体。如果你是用的k8s+docker,那就先把k8s、node(也就是你说的用top、vmstat看的部分)、docker监控起来,然后把其中的应用监控起来,这就取决于你是什么样的应用了。 如果是java应用,可以用专栏关于java分析部分的工具。如果是基他语言,可以用其他语言提供的分析工具。

    3
  • 学员141
    高老师好,最近压测集群的pod应用,发现pod的内存只会上涨不会释放,登录pod所在节点,根据命令(TOP PIDSTAT)监控pod应用对应的线程pid,内存也没有释放,这个有影响吗?我看内存长期在pod的limit下,也没有内存溢出

    作者回复: 如果性能不下降,就没关系。

    2
  • 浅浅
    PHP语言的us CPU高,怎么分析呢?老师,求回复

    作者回复: php是脚本语言,直接在代码里加剖析工具就可以。

    1
收起评论
显示
设置
留言
15
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部