linux 性能自我学习 ———— cpu 快速定位问题 [六]
前言
主要介绍一下cpu如何快速定位问题。
正文
cpu 的一些性能指标:
1. cpu 使用率
cpu 使用率描述了非空闲时间占总cpu时间的百分比,根据cpu上运行任务的不同,又被分为用户cpu、系统cpu、 i/o 等待cpu、 软中断、硬中断。
用户cpu使用率,包括用户态cpu使用率,和低优先级用户态cpu 使用率,表示cpu 在用户态运行的时间的百分比。
用户cpu 使用率搞,通常说明应用程序比较繁忙。
系统cpu使用率,表示cpu在内核态运行的时间百分比(不包括中断)。系统cpu使用率高,说明内核比较繁忙。
等待i/o 的cpu使用率,通常也称为iowait,表示等待i/o 的时间百分比。 io wait高,说说吗系统与硬件设备的i/o交互时间比较长。
软中断和硬中断的cpu使用率,分布表示内核调用软中断处理程序、硬中断处理程序的时间百分比。它们的使用率搞,通常说明系统发送了大量的中断。
2. 平均负载
也就是系统的平均活跃进程数,它反应了系统的整体负债情况,主要包括三个数值,分别指过去1分钟、过去5分钟、过去15分钟的平均负载。
理想情况下,平均负载等于逻辑cpu个数,它表示cpu恰好被充分利用,一般可以大于70%。
3. 进程上下文切换
无法获取资源导致的资源上下文切换
被系统强制调度导致的非自愿上下文切换
上下文切换,本身保证了linux 正常运行的一项核心功能。但过多的上下文切换,会将原本运行进程的cpu时间,消耗在寄存器、内核栈、以及虚拟内存等数据的保存和恢复上,
缩短进程真正运行的时间,称为性能瓶颈。

用什么工具来排查呢?
几个案例总结:
- 平均负载案例。
先用uptime,查看系统的平均负载;而在平均负载升高后,又用mpstat和pidstat,分布观察了每个cpu 和 每个进程cpu的使用情况,进而找出导致平均负载高的进程,使用的是stress 工具。
- 上下文切换的案例
先用vmstat 查看系统上下文切换和中断次数。
然后通过pidstat,观察和进程的自愿上下文切换和非自愿上下文切换情况。最后通过pidstat,观察线程的上下文切换情况,找出上下文切换次数增多的根源,也就是我们的基准测试工具sysbench。
进程cpu 升高案例,先用top,然后是perf top。
短时进程问题,系统cpu搞,但是找不到进程。 可能是短时进程,崩溃等。
通过perf record 和 perf report。
短时进程可以使用execsnoop。
- 不可中断进程或者僵尸进程的案例。 我们先用top 观察到了iowait升高的问题,并发现了大量的不可中断进程和僵尸进程;
接着我们用dstat 发现是磁盘导致的,于实通过pidstat 找到了相关的进程。 可以用strace查看进程系统调用失了,最后通过perf分析进程调用链,发现磁盘i/o问题。
- 软中断案例,通过top 观察到,系统的软中断cpu 使用高。
通过top查看系统的软中断cpu使用率升高;接着查看/proc/softirqs 找到了几种变化快的软中断,通过sar命令,发现网络小包的问题。
最后用tcpdump 找出网络帧的类型和来源,确定是一个syn flood 攻击导致的。
工具表:


示例图:

结
下一节,内存相关。
linux 性能自我学习 ———— cpu 快速定位问题 [六]的更多相关文章
- 【转】一文掌握 Linux 性能分析之 CPU 篇
[转]一文掌握 Linux 性能分析之 CPU 篇 平常工作会涉及到一些 Linux 性能分析的问题,因此决定总结一下常用的一些性能分析手段,仅供参考. 说到性能分析,基本上就是 CPU.内存.磁盘 ...
- Linux 性能监控之CPU&内存&I/O监控Shell脚本2
Linux 性能监控之CPU&内存&I/O监控Shell脚本2 by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...
- Linux 性能监控之CPU&内存&I/O监控Shell脚本1
Linux 性能监控之CPU&内存&I/O监控Shell脚本1 by:授客 QQ:1033553122 #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`if ...
- 深挖计算机基础:Linux性能优化学习笔记
参考极客时间专栏<Linux性能优化实战>学习笔记 一.CPU性能:13讲 Linux性能优化实战学习笔记:第二讲 Linux性能优化实战学习笔记:第三讲 Linux性能优化实战学习笔记: ...
- Linux性能优化从入门到实战:01 Linux性能优化学习路线
我通过阅读各种相关书籍,从操作系统原理.到 Linux内核,再到硬件驱动程序等等. 把观察到的性能问题跟系统原理关联起来,特别是把系统从应用程序.库函数.系统调用.再到内核和硬件等不同的层级贯 ...
- linux性能问题(CPU,内存,磁盘I/O,网络)
一. CPU性能评估 1.vmstat [-V] [-n] [depay [count]] -V : 打印出版本信息,可选参数 -n : 在周期性循环输出时,头部信息仅显示一次 delay : 两次输 ...
- Linux性能监测:CPU篇(转)
http://os.51cto.com/art/201012/239880.htm CPU 的占用主要取决于什么样的资源正在 CPU 上面运行,比如拷贝一个文件通常占用较少 CPU,因为大部分工作是由 ...
- Linux 性能监测:CPU
CPU 的占用主要取决于什么样的资源正在 CPU 上面运行,比如拷贝一个文件通常占用较少 CPU,因为大部分工作是由 DMA(Direct Memory Access)完成,只是在完成拷贝以后给一个中 ...
- 一文掌握 Linux 性能分析之 CPU 篇
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 平常工作会涉及 ...
- Linux性能监测:CPU篇
CPU 也是一种硬件资源,和任何其他硬件设备一样也需要驱动和管理程序才能使用,我们可以把内核的进程调度看作是 CPU 的管理程序,用来管理和分配 CPU 资源,合理安排进程抢占 CPU,并决定哪个进程 ...
随机推荐
- elementPlus配合vue-router搭建后台系统菜单模块
设置menuType来区分菜单类型 /** * @params menuType * -1 一般为首页 / -> /home 只显示第一个子项 * -2 为无子菜单的菜单项 /config -& ...
- JavaScript获取href的值
1.当href的值为正常网址时: <!DOCTYPE html> <html> <head> <title></title> <met ...
- k8s中port-forward 、service的nodeport与ingress区别
在Kubernetes中,port-forward.Service的NodePort和Ingress都是用于将外部流量引入集群内部的方法,但它们在使用场景.实现方式和功能上有所不同. port-for ...
- Typora自定义主题详解--打造自己的专属样式
你真的会使用Typora吗? 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「主题」, 获取大师使用的typora主题: http://www.javaman.cn/ ...
- 安装npm install报错npm ERR! code ETIMEDOUT npm ERR! errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.org/webpack-subresource-integrity failed, reason
执行命令:npm run dev 启动前端项目报如下错误,vue-cli-service是Vue一个启动的插件,需要安装 D:\nodejs\npm.cmd run dev > yuntan1h ...
- Commons-Collections1反序列化
JDK版本为jdk8u65 commons-collections版本为3.2.1 InvokerTransformer CC1的漏洞点在InvokerTransformer,InvokerTrans ...
- MongoDB4.0.11服务没有响应控制功能解决办法
如图 MongDB安装好后启动服务失败 解决办法 进入到你的MongDB bin目录下执行 mongod.exe --remove --serviceName "MongoDB" ...
- 取cookie时报错“[object Object]“ is not valid JSON
做谷粒学苑项目时,在保存登录状态环节出现该问题 取cookie时老师强调要使用JSON.pase()解析cookie为json对象 var userStr = cookie.get("gul ...
- AXI4从机总线分析验证之读取寄存器值
AXI4从机总线分析验证之读取寄存器值 1.实验目的 利用前面所学的AXI4总线协议的理论分析,验证如何将一个PL的输入信号通过AXI发送到PS端.大致思路就是取一个按键,信号接入自建的AXI4的IP ...
- 英语文档阅读之Zynq-7000 All Programmable SoC
Read "Zynq-7000 All programmable Soc" 1.Table of Contents 首先是目录,可以看到是标准的总分结构.开头介绍了Zynq的各种功 ...