博客
关于我
性能测试必备知识(7)- 深入理解“CPU 使用率”
阅读量:442 次
发布时间:2019-03-06

本文共 1337 字,大约阅读时间需要 4 分钟。

做性能测试的必备知识系列

作为性能测试从业者,熟悉系统资源的监控与分析是必不可少的。下面我将从CPU使用率这一核心指标入手,帮助大家深入理解其监控与分析方法。

回顾

在性能测试过程中,CPU使用率是衡量系统性能的重要指标之一。它反映了单位时间内CPU的工作负载情况。

灵魂拷问

在实际监控系统性能时,选择哪种指标更能准确反映系统的CPU性能?有没有一些常用的CPU性能评估方法?

答案

CPU使用率是衡量系统性能的核心指标之一,常用的有CPU空闲率和平均负载等。然而,CPU使用率不仅要考虑平均负载,还需要关注上下文切换的频率。上下文切换指的是操作系统将一个任务切换到另一个任务的过程,这会导致CPU资源被浪费。

CPU使用率

什么是CPU使用率?

CPU使用率是衡量单位时间内CPU工作负载的百分比。它反映了系统中各个任务占用CPU的时间比例。通过监控CPU使用率,可以快速判断系统性能的状态。

CPU节拍率

Linux系统的CPU节拍率(HZ)决定了时间中断的频率。内核通过设置不同的HZ值(如100、250、1000),实现对时间的精确划分。Jiffies是用来记录开机以来的时间中断次数的计数器。

用户空间节拍率

为了方便用户空间程序访问,内核提供了USER_HZ(用户空间节拍率),其固定值为100(1/100秒)。这使得用户程序无需关心内核设置的具体HZ值。

系统CPU数据来源

Linux通过/proc虚拟文件系统向用户提供系统内部状态信息。/proc/stat文件提供了详细的CPU和任务统计数据。

读取CPU数据

cat /proc/stat | grep ^cpu

解读CPU数据

从左到右的11列数据分别表示:

  • CPU编号:累计使用时间。
  • user(us):用户态CPU时间,不包括nice值的用户任务。
  • nice(ni):低优先级用户态CPU时间。
  • system(sys):内核态CPU时间。
  • idle(id):空闲时间。
  • iowait(wa):等待I/O操作完成的CPU时间。
  • irq(hi):处理硬中断的CPU时间。
  • softirq(si):处理软中断的CPU时间。
  • steal(st):虚拟机被其他虚拟机占用的CPU时间。
  • guest(gn):运行虚拟化操作系统的CPU时间。
  • guest_nice(gn):低优先级运行虚拟化操作系统的CPU时间。
  • CPU使用率计算

    CPU使用率是指除空闲时间外占总CPU时间的百分比。

    CPU使用率的时间窗口

    通过/proc/stat获取的CPU数据反映的是开机以来的累计值,直接计算平均值通常没有参考价值。性能分析工具通常采取间隔一段时间(如3秒)的数据进行差值计算,得出该时间段内的平均CPU使用率。

    性能工具的计算方法

    性能工具采取间隔固定时间(如3秒)采集数据,计算这段时间内的CPU使用率变化率。这种方法能更准确地反映系统的短期性能波动。

    总结

    • 不要自己计算CPU使用率,直接使用性能工具获取数据。
    • 性能工具显示的是间隔时间内的平均CPU使用率,需根据具体工具说明设置间隔时间。
    • 关注短期波动是评估系统性能的重要手段。

    通过上述方法,你可以更全面地了解和监控系统CPU性能,做好性能测试的准备工作。

    转载地址:http://uzufz.baihongyu.com/

    你可能感兴趣的文章
    MySQL(5)条件查询 | 单行函数 | 事务详解
    查看>>
    Mysql,group by分组查询、order by排序查询、join连接查询、union联合查询
    查看>>
    Mysql,sql文件导入和导出
    查看>>
    MYSQL:int类型升级到bigint,对PHP开发语言影响
    查看>>
    Mysql:mysql 5.X 报错 ERROR 1193 (HY000): Unknown system variable ‘validate_password_length‘
    查看>>
    MySQL:MySQL执行一条SQL查询语句的执行过程
    查看>>
    Mysql:SQL性能分析
    查看>>
    mysql:SQL按时间查询方法总结
    查看>>
    MySQL:什么样的字段适合加索引?什么样的字段不适合加索引
    查看>>
    MySQL:判断逗号分隔的字符串中是否包含某个字符串
    查看>>
    MySQL:某个ip连接mysql失败次数过多,导致ip锁定
    查看>>
    MySQL:索引失效场景总结
    查看>>
    Mysql:避免重复的插入数据方法汇总
    查看>>
    MyS中的IF
    查看>>
    M_Map工具箱简介及地理图形绘制
    查看>>
    m_Orchestrate learning system---二十二、html代码如何变的容易
    查看>>
    M×N 形状 numpy.ndarray 的滑动窗口
    查看>>
    m个苹果放入n个盘子问题
    查看>>
    n = 3 , while n , continue
    查看>>
    n 叉树后序遍历转换为链表问题的深入探讨
    查看>>