Linux性能瓶颈分析之TOP指标分析
一、查看CPU
1.查看cpu基础信息
lscpu
2.查看cpu详细信息
cat /proc/cpuinfo
3.统计cpu信息
cat /proc/cpuinfo |grep "physical id" |sort |uniq |wc -l 查看物理cpu数量
cat /proc/cpuinfo | grep "cpu cores" |uniq 查看CPU的core数,即核数
cat /proc/cpuinfo | grep "processor" |wc -l 查看逻辑CPU数量
如图所示:
二、监控CPU
- us:表示 CPU 在用户态运行的时间百分比,通常用户态 CPU 高表示有应用程序比较繁忙。
- sy:表示 CPU 在内核态运行的时间百分比,通常内核态 CPU 越低越好,否则表示系统存在某些瓶颈。
- ni:表示用 nice 修正进程优先级的用户态进程执行的 CPU 时间。nice 是一个进程优先级的修正值,如果进程通过它修改了优先级,则会单独统计 CPU 开销
- id:表示 CPU 处于空闲态的时间占比
- wa:表示 CPU 在等待 I/O 操作完成所花费的时间,通常该指标越低越好,否则表示 I/O 存在瓶颈,可以用 iostat 等命令做进一步分析。
- hi:表示 CPU 处理硬中断所花费的时间。硬中断是由外设硬件(如键盘控制器、硬件传感器等)发出的,需要有中断控制器参与,特点是快速执行
- si:表示 CPU 处理软中断所花费的时间。软中断是由软件程序(如网络收发、定时调度等)发出的中断信号,特点是延迟执行。
- st:表示 CPU 被其他虚拟机占用的时间,仅出现在多虚拟机场景。如果该指标过高,可以检查下宿主机或其他虚拟机是否异常。
-
load average值 & CPU使用率之间的关系
load average != CPU使用率
load average是系统的整体负载提现:
包括:CPU负载 + Disk负载 + 网络负载 + 外设负载
loadaverage = cpuload + ioload
CPU的使用:用户进程使用时间us、系统内核运行时间sy、空闲时间idle、管理被强占时间st
繁忙:us + sy + st + ni +hi +si == CPU使用率的时间(除以总时间)
空闲:idle + wa
CPU的上下文
上下文切换就是cpu 寄存器里面的资源进行切换。
自愿上下文切换: 资源不够,自觉的切换到另外指令上。
非自愿上下文切换: 有可能有优先级更高的指令或者指令执行的时间已经到了,被迫中止当前的指令,去执行其他指令。
-
sy:做上下文切换—>可能遇到上线文问题
自愿上下文切换 —> 内存瓶颈
非自愿上下文切换 ----> cpu瓶颈(抢占资源) - us/ni : 用户运行计算 —> cpu密集计算 or FGC or 死循环
- si :软中段 ---->cpu竞争抢资源 or 资源不够I/O问题
- wa : 等待资源 —>I/O问题(磁盘/网络)
- st : 抢占资源 —> 宿主机抢占资源
列举场景:文章来源:https://www.toymoban.com/news/detail-514815.html
- 情况1:sys 系统态高 === 排查cpu上下文切换
如果“非自愿上下文切换”多,说明cpu不够用,进程时间片到,被迫切换
如果“自愿上下文切换”多,说明计算机存的资源不够用,可能存在I/O、内存瓶颈 - 情况2:si 软中断高 == cpu抢资源,资源不够用I/O问题
sys高 + si高 ===>内存or网络I/O问题
sys高 + si 不高 ===> CPU瓶颈 - 情况3:us用户态高 === 用户程序计算
密集型计算、内存FGC、资源等待(线程池)
总结
近期涉及到整理Linux相关培训,参考了其他博主文章,大多都是局部某个点的分析,系统性的很少,所以打算做一个Linux性能瓶颈分析的系列文章,工作原因,到7月底陆续完成初稿的几篇,涉及cpu、内存、缓存、io、磁盘等等相关文章。文章来源地址https://www.toymoban.com/news/detail-514815.html
到了这里,关于Linux性能瓶颈分析之TOP指标分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!