linux 性能自我学习 ———— cpu 高怎么办 [三]
前言
linux 性能分析自我学习。
正文
一般我们说cpu,一般是什么高呢? 一般是指cpu 使用率高。
那么什么是cpu 使用率呢?
cpu 使用率 = 1- 空闲时间/总cpu 时间
平均cpu 使用率 = 1 -(new空闲时间 - old 空闲时间)/ (new总cpu时间 - old总cpu时间)
我们可以使用top 查看:
那么来看下这些参数的意义:
user (通常为us), 用户态的时间。(不包含nice的时间,但是包含guest的时间)
nice (ni) 表示低优先级用户态cpu 时间,也就是进程的nice 值被调整为1-19 之间的cpu 时间。 nice 值可取-20-19,数值越大,优先级越低。
system (sys), 表示内核态cpu 时间。
idle, 代表空闲时间。 注意,它不包含等待 i/o 的时间。
iowait (通常为wa), 表示等待i/o的cpu 时间。
irq(通常为hi),表示处理硬中断的cpu 时间
softtirq(si), 表示处理软中断的cpu时间
steal(st),表示该系统运行在虚拟机中的时候,被其他虚拟机占用的cpu时间。
guest(通常缩写为guest), 代表虚拟化运行其他操作系统的时间,也就是运行虚拟机的cpu时间
guest_nice(通常缩写为gnice),表示低优先级运行虚拟机的时间。
然后下面是进程占用cpu的时间,但是其中间并没有分为用户态使用率和内核态使用率
那么就需要使用pidstat:
那么我们怎么定位cpu 高到底是怎么造成的呢?
一般使用perf 这个工具。
如果使用perf top 看下,那么是怎么样的呢?
第一行包含3个数据, 分别是采样数, 事件类型event, 事件总数量。
第二行:
overhead, 是该符号的性能事件在所有采样中的比例,用百分号来表示
shared, 是该函数或指令所在的动态共享对象(dynamic shared object), 如内核,进程名,动态链接库名, 内核模块名等。
object, 是动态共享对象的类型,比如. 表示用户空间的可执行程序或者链接库,而k 表示内核空间
symbol, 是符号名,也是函数名。当函数未知时候,用十六进制地址表示。
还可以直接使用perf record 和 perf report。
perf record 将信息收集起来。
然后perf report 就打开记录进行分析。
一般我们定位到具体的pid的时候,那么会使用:
perf -g -p xxx
这个-g 表示了,调用关系。
然后一般我们的web 服务会进行压测。
一般使用ab。
ab -c 10 -n 10000 http://10.254.0.5:10000
这样去压测,如果压测吞吐很低,那么就应该分析性能问题。
实验
实验:cpu 很高,但是找不到cpu高的应用。
运行nginx:
docker run --name nginx -p 10000:80 -itd feisky/nginx:sp
运行php代码:
docker run --name phpfdm -itd --network container:nginx feisky/php-fpm:sp
curl 一下:
curl http://192.168.62.136:10000
发现成功. 压测一下:
ab -c 100 -n 1000 http://192.168.62.136:10000/
ab 安装:
yum -y install httpd-tools
结果为:
每秒60多,有点小低了。
ab -c 5 -t 600 http://192.168.62.136:10000/
通过top 看一下cpu情况:
发现top 很高,但是进程cpu不高,这怎么说?
难道还有进程不占用cpu?
通过pidstat 查看一下:
cpu 也不高啊。
通过task 这一行看下,发现就绪队列有6个:
诡异的事情出现了,这一排居然没有发现6个就绪进程。
那么可能原因是什么呢?
进程在不停的崩溃重启,比如因为段错误等。 这时候,进程在推出后又被监控系统自动重启了。
这些进程是短时进程,也就是在其他应用内部通过exec 调用的外部命令。这些命令一般都只运行很短时间就会结束,你很难用top这种间隔比较长的工具发现。
用ps tree 查看一下:
yum -y install psmisc
这里可以看到php-fpm 中启动了stress,那么是不是stress的问题呢?
这个时候可以看代码,其实一般看错误日志就知道了。
这种排查方式比较慢,直接用perf比较好。
的确看到了stree,但是cpu 使用高还是kernel,内核方法。
perf record -g
等一段时间看下情况:
perf report
那么有没有其他短时进程监控能马上能查看到的呢? execsnoop.
centos 怎么安装呢?
下载:
https://github.com/brendangregg/perf-tools
一般我会下载zip,然后解压。
然后运行:
./perf-tools/perf-tools-master/bin/execsnoop
结
不可中断进程和僵尸进程。
linux 性能自我学习 ———— cpu 高怎么办 [三]的更多相关文章
- 【转】一文掌握 Linux 性能分析之 CPU 篇
[转]一文掌握 Linux 性能分析之 CPU 篇 平常工作会涉及到一些 Linux 性能分析的问题,因此决定总结一下常用的一些性能分析手段,仅供参考. 说到性能分析,基本上就是 CPU.内存.磁盘 ...
- Db2性能:系统CPU高问题分析的一些思路
Db2性能:系统CPU高问题分析的一些思路 1. 如何判断CPU高? 有很多操作系统的命令可以看出来,比如ps -elf,iostat, vmstat, top/topas, 2. 收集数据 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性能问题(CPU,内存,磁盘I/O,网络)
一. CPU性能评估 1.vmstat [-V] [-n] [depay [count]] -V : 打印出版本信息,可选参数 -n : 在周期性循环输出时,头部信息仅显示一次 delay : 两次输 ...
- 一文掌握 Linux 性能分析之 CPU 篇
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 平常工作会涉及 ...
- 深挖计算机基础:Linux性能优化学习笔记
参考极客时间专栏<Linux性能优化实战>学习笔记 一.CPU性能:13讲 Linux性能优化实战学习笔记:第二讲 Linux性能优化实战学习笔记:第三讲 Linux性能优化实战学习笔记: ...
- 测网速 fping Linux查看网络即时网速 linux性能问题(CPU,内存,磁盘I/O,网络)
Linux查看网络即时网速 fping 是ping 工具的加强版本 例出局域网中存活的主机 (Ubuntu apt-get装上 cnetos装不上) zzx@zzx11:~$ fping -a 19 ...
- Linux性能优化实战CPU篇之总结(四)
一.分析CPU瓶颈 1,性能指标 a>CPU使用率 CPU使用率描述了非空闲时间占总CPU时间的百分比,根据CPU上运行任务的不同可以分为:用户CPU.系统CPU.等待I/O CPU.软中断和硬 ...
- Linux性能监测:CPU篇(转)
http://os.51cto.com/art/201012/239880.htm CPU 的占用主要取决于什么样的资源正在 CPU 上面运行,比如拷贝一个文件通常占用较少 CPU,因为大部分工作是由 ...
随机推荐
- Java //输入两个正整数m和n,求其最大的公约数和最小公倍数//12和20的最大公约数是4,最小公倍数是60
1 //输入两个正整数m和n,求其最大的公约数和最小公倍数 2 //12和20的最大公约数是4,最小公倍数是60 3 4 Scanner scan = new Scanner(System.in); ...
- MySQL面经总结
MySQL日志 MySQL日志系统 MySQL查询 菜鸟教程SQL内连接 exist和in区别 sql语句优化 MySQL索引 覆盖索引 索引类型:主键索引,二级索引(辅助索引):唯一索引,普通索引, ...
- TLS原理与实践(二)
主页 个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/ 引言 在上一篇博客中,我们通过<一文读懂TLS1.2协议](ht ...
- win10 vscode 设置 快捷键 ctrl + , ctrl + COMMA 与搜狗输入法 切换方法快捷键 冲突
win10 vscode 快捷键 ctrl + , ctrl + COMMA 与搜狗输入法 切换方法快捷键 冲突 没想到是在系统里面 Step. 1: 选择切换语音 Step. 2: 选择 键盘 St ...
- gyroflow.xyz - 视频防抖 支持相机 gopro 不支持手机视频 - 软件推荐
gyroflow.xyz - 视频防抖 支持相机 gopro 不支持手机视频 - 软件推荐 https://gyroflow.xyz/ https://github.com/gyroflow/gyro ...
- Pod的优先级(priorityClass)和抢占策略(preemptionPolicy)
Pod优先级 Pod优先级是一个用于指示Pod相对重要程度的整数值.优先级高的Pod在调度时会优先被考虑,并且在资源不足时,优先级较低的Pod可能会被驱逐以释放资源给优先级较高的Pod.Pod优先级的 ...
- 06_Qt开发基础
.pro文件的配置 跨平台配置 之前我们分别在Windows.Mac环境的Qt项目中集成了FFmpeg. 可以发现在.pro文件的配置中,FFmpeg库在Mac.Windows上的位置是有所差异的.这 ...
- C#进阶篇
ArrayList 1.Arraylist本质上是一个可以自动扩容的object数组 2.由于用万物之父来存储数据,自然存在装箱拆箱 3.当往其中进行值类型存储时就是在装箱,当将值类型对象取出来转换使 ...
- Women forum两周年有感
今天是个高兴的日子,Women forum两周年庆. 当Nicole上台分享了她当妈妈的经历时,我感动得要哭了,导致轮到我上台演讲的时候,还沉浸在那种情绪中,导致我脱稿演讲了,于是我就超时了,实在是抱 ...
- 使用SpringBatch读取csv文件
目录 1.需求 2.解决方案 3.注意事项 1.文件路径的获取 2.各个Step如果获取到ExecutionContext中的值 3.FlatFileItemReader使用注意 4.实现步骤 1.导 ...