Linux性能分析
系统性能分析:
1、整体系统CPU利用率
2、内存利用率
3、磁盘I/O的利用率和延迟
4、网络利用率
1、CPU定位分析
在系统的CPU分析定位过程中,当系统的CPU利用率大于50%时,我们就需要注意了;当系统的CPU利用率大于70%的时候,就需要密切关注;当系统的CPU的利用率高于90%的时候,情况就比较严重了。通过这些监控分析情况,我们可以用命令有vmstat、sar、dstat、mpstat、top、ps等命令来进行统计分析。
模块 |
类型 |
度量方法 |
衡量标准 |
CPU |
使用情况 |
1、通过vmstat 统计1-id的计数 2、通过sar -u 统计1-%idle的计数 3、通过dstat命令 统计1-id1的计数 4、通过mpstat -P ALL统计1-%idle的计数 5、通过ps命令统计cpu的计数 |
注意>=50% 告警>=70% 严重>=90% |
CPU |
满载 |
6、vmstat的r的计数 > CPU逻辑数 7、sar -q, “runq-sz” >CPU逻辑数 8、dstat -p, “run” > CPU逻辑数 |
运行的队列大于1时,说明已经有一定的负载了,不过这个值也不绝对,需要进一步分析其他的资源情况来确定CPU是否已经满载符合运行 |
CPU |
错误 |
9、通过perf工具去捕获处理器的错误信息,需要处理器支持 |
需处理器支持 |
2、内存定位分析
在系统的内存分析定位过程中,当系统内存的利用率大于50%的时候,我们就需要注意了;当系统的内存大于70%的时候,就需要密切关注;当系统的内存利用率高于80%的时候,情况就比较严重。通过这些监控分析,可以用vmstat、sar、dstat、free、top、ps等命令来进行统计分析。
模块 |
类型 |
度量方法 |
衡量标准 |
内存 |
使用情况 |
1、free命令查看使用情况 2、vmstat命令查看使用情况 3、sar -r 命令查看使用情况 4、ps命令查看使用情况 |
注意>=50% 告警>=70% 严重>=80% |
内存 |
满载 |
5、vmstat的si/so比例辅助swpad和free利用 6、sar -W 查看次缺页数 7、查看内核日志有无OOM机制kill进程 8、dmesg | grep killed |
1、so数值大,且swpad已经占比很高,内存肯定已经饱和 2、sar命令缺页以为不停地和swap打交道,证明内存已经饱和 |
内存 |
错误 |
9、查看内核有无physical failures 10、通过工具如valgrind等进行检查 |
有计数 |
3、网络定位分析
衡量系统网络的使用情况,可以使用的命令有sar、ifconfig、netstat以及查看net的dev速率,通过查看收发包的吞吐率达到网卡的最大上限(问题:网络的最大上限怎么看呢?),网络数据报文有因为这类原因而引发的丢包、阻塞等现象都证明当前网络可能存在瓶颈。在进行性能测试时,为了减小网络的影响,一般我们都是在局域网中进行测执行。
模块 |
类型 |
度量方法 |
衡量标准 |
网络 |
使用情况 |
1、sar -n DEV 的收发计数大于网卡上限 2、ifconfig RX/TX 带宽超过网卡上限 3、cat /proc/net/dev 的速率超过上限 4、nicstat 的util基本满负载 |
1、收发包的吞吐率达到网卡上限 2、有延迟 3、有丢包 4、有阻塞 |
网络 |
满载 |
5、ifconfig dropped 有计数 6、netstat -s “segments restransmited”有计数 7、sar -n DEV rxdrop txdrop 有计数 |
统计的丢包有计数证明已经满载了 |
网络 |
错误 |
8、ifconfig, ‘errors’ 9、netstat -I, “RX-ERR”/”TX-ERR” 10、sar -n EDEV, “rxerr/s”,”txerr/s” 11、ip -s link, “errors” |
错误有计数 |
4、IO定位分析
衡量系统IO的使用情况,可以使用sar、iostat、iotop等命令进行系统级别的IO监控分析。当发现IO的利用率大于40%时候,就需要注意了;当使用率大于60%则处于告警阶段;大于80%时IO就会出现阻塞了。
模块 |
类型 |
度量方法 |
度量标准 |
IO |
使用情况 |
1、iostat -xz, “%util” 2、sar -d, “%util” 3、iotop 的利用率很高 4、cat /proc/pid/sched|grep iowait |
注意>=40% 告警>=60% 严重>=80% |
IO |
满载 |
5、iostat -xnz 1, “avgqu-sz”>1 6、iostat await>70 |
IO已经有满载嫌疑 |
IO |
错误 |
7、dmesg 查看io错误 8、smartctl /dev/sda |
有信息 |