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

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

CPU为何是性能问题分析的方向性指标
CPU使用率高时的分析方法
通过分析计数器找到后续的证据链
us、wa、sy、si等常见计数器
包括CPU、Memory、I/O、Network、System、Swap等模块
提供全局监控数据
常用的监控平台
根据监控目标选择合适的命令
了解命令的功能和局限性
根据需要监控的模块选择相应的命令
top、atop、vmstat、iostat、iotop、dstat、sar
CPU、I/O、Memory、Network、System、Swap
监控操作系统中的大模块
用于确定系统运行的应用是否有问题
响应时间、TPS等压力工具给出的信息
CPU使用率高时有多种分析手段
分析思路完整,工具繁多
CPU是重点分析对象
思考题
性能问题分析
分析证据链
CPU计数器
Dashboard
Grafana+Prometheus+node_exporter
监控思考逻辑
监控手段选择
常用的Linux监控命令
全局—定向监控思路
分析决策树
性能分析要有起点
总结
CPU分析
监控平台
监控命令
性能分析方法
性能分析与监控

该思维导图由 AI 生成,仅供参考

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

本文深入介绍了CentOS操作系统级监控及常用计数器解析的相关内容。作者首先强调了在性能测试和分析中,操作系统分析始终是绕不过去的分析点,需要根据压力工具给出的信息作为起点,然后通过拆分响应时间来确定问题所在,并进行详细分析。文章列举了常用的Linux监控命令,如top、atop、vmstat、iostat、iotop、dstat、sar等,并强调了在使用这些命令时需要了解其监控范围和局限性。此外,还介绍了监控平台Grafana+Prometheus+node_exporter,并对其常用Dashboard进行了解析。作者强调了全局监控的重要性,但也指出这些数据仍然不够细节,需要进行定向监控来找到证据链。整体而言,本文内容涵盖了操作系统级监控的基本知识和常用工具,以及监控平台的应用,对读者进行了全面的技术介绍。文章通过详细解析CPU计数器,包括us、wa、sy、si等,以及其分析链路,为读者提供了深入了解CPU性能问题的思路和方法。同时,作者还提出了思考题,引导读者深入思考CPU在性能问题分析中的重要性。整体而言,本文内容丰富,对于需要深入了解操作系统性能监控和分析的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能测试实战 30 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(16)

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

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

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

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

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

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

    2020-04-02
    6
  • 小昭
    做个内容小结: 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)

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

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

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

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

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

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

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

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

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

    2021-09-27
    2
    3
  • zwm
    第二编读,有新收获

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

    2021-09-10
    3
  • 浅浅
    PHP语言的us CPU高,怎么分析呢?老师,求回复

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

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