超级精加工! Linux性能分析工具摘要集合

电脑杂谈  发布时间:2020-07-03 17:12:51  来源:网络整理

linux 性能测试软件_linux 测试软件_测试电脑性能软件

发件人:

出于对Linux操作系统的兴趣以及对底层知识的强烈需求,本文进行了整理. 本文还可以用作测试基础知识的指标. 此外,本文涵盖了系统的所有方面. 没有完善的计算机系统知识,网络知识和操作系统知识,就无法完全掌握文档中的工具. 此外,系统性能分析和优化是一个长期的系列.

本文是一个博客文章,结合了Linux Daniel和Netflix高级性能架构师Brendan Gregg来更新Linux性能调整工具,收集了由Linux系统性能优化相关文章组织的综合文章,主要结合了博客文章原理和性能测试工具已扩展.

背景知识: 拥有背景知识是分析性能问题时需要了解的知识. 如硬件缓存;另一个例子是操作系统内核. 应用程序行为的详细信息通常与这些事情有关. 这些低级的事情将以意想不到的方式影响应用程序的性能. 例如,某些程序无法充分利用缓存,从而导致性能下降. 例如,不必要地调用过多的系统调用,从而导致频繁的内核/用户切换. 这里只是为准备本文的后续内容,有很多关于调优的知识,我所了解的不多linux 性能测试软件,我希望每个人都能一起学习和进步.

【性能分析工具】

先看一张照片:

上图是Brendan Gregg分享的性能分析. 可以通过人工获得其中的所有工具. 其帮助文档中,以下问题简要介绍了一般用法:

▲vmstat-虚拟内存统计信息

vmstat(VirtualMeomoryStatistics,虚拟内存统计信息)是用于监视Linux中的内存的常用工具,可以监视虚拟内存,操作系统的进程,CPU等的总体情况.

vmstat的正常用法: vmstat interval times表示每间隔秒采样一次,总共采样一次. 如果省略时间,将收集数据,直到用户手动停止为止.

简单的例子:

您可以使用ctrl + c停止vmstat收集数据.

第一行显示自系统启动以来的平均值,第二行显示当前发生的情况,下一行显示每5秒发生的情况,每列的含义在标题中,如下所示:

■procs: r列显示等待CPU的进程数,b列显示不中断睡眠(等待IO)的进程.

内存: swapped列显示从磁盘上交换了多少块(页面交换),其余列显示有多少块空闲(未使用),有多少块被用作缓冲区以及有多少块正在被使用用作操作系统的缓存.

交换: 显示交换活动: 每秒(从磁盘)交换和每秒(磁盘)交换多少块.

•io: 显示从块设备读取(bi)和写出(bo)多少块,通常反映硬盘I / O.

系统: 显示每秒的中断数(in)和上下文切换(cs).

■CPU: 显示在各种操作上花费的所有CPU时间的百分比linux 性能测试软件,包括执行用户代码(非内核),执行系统代码(内核),空闲和等待IO.

内存性能不足: 可用内存大大减少,并且缓冲区和缓存的恢复无用. 大量的交换分区(swpd),频繁的页面交换(swap),增加的读写磁盘(io)和页面错误(in)增加,上下文切换(cs)数量增加,进程数量等待IO(b)增加,并且花费大量CPU时间等待IO(wa)

▲iostat-用于报告中央处理器统计信息

测试电脑性能软件_linux 测试软件_linux 性能测试软件

iostat用于报告中央处理器(CPU)统计信息以及整个系统,适配器,tty设备,磁盘和CD-ROM的输入/输出统计信息. 默认情况下,它显示与vmstat相同的cpu使用情况信息. 使用以下命令显示扩展的设备统计信息:

第一行显示自系统启动以来的平均值,然后显示增量平均值,每台设备一行.

常见Linux磁盘IO指标的缩写: rq是请求,r是读,w是写,qu是队列,sz是大小,a是平均值,tm是时间,svc是服务.

rrqm / s和wrqm / s: 每秒组合的读取和写入请求,“合并”表示操作系统从队列中获取多个逻辑请求,并将它们合并为一个请求到实际磁盘.

■r / s和w / s: 每秒发送到设备的读写请求数.

■rsec / s和wsec / s: 每秒读取和写入的扇区数.

■avgrq –sz: 请求的扇区数.

■avgqu –sz: 设备队列中等待的请求数.

■等待: 在每个IO请求中花费的时间.

■svctm: 实际请求(服务)时间.

%util: 至少一个活动请求被占用的时间百分比.

▲dstat-系统监视工具

dstat显示cpu使用情况,磁盘io状态,网络数据包发送状态和页面馈送状态. 输出为彩色且可读. 它比vmstat和iostat的输入更为详细和直观. 使用时,只需直接输入命令,当然,您也可以使用特定的参数.

如下: dstat –cdlmnpsy

▲iotop-用于LINUX进程的实时监视工具

iotop命令是专门显示硬盘IO的命令. 接口样式类似于top命令,它可以显示导致IO负载的进程. 它是监视磁盘I / O使用情况的顶级工具. 它具有类似于top的UI,包括PID,用户,I / O,过程和其他相关信息.

可以以非交互方式使用: iotop -bod间隔,要查看每个进程的I / O,可以使用pidstat,pidstat -d instat.

▲pidstat-监视系统资源

pidstat主要用于监视所有或指定进程占用的系统资源,例如CPU,内存,设备IO,任务切换,线程等.

用法: pidstat –d间隔; pidstat还可以用于计算CPU使用率信息: pidstat -u interval;统计内存信息: Pidstat –r间隔.

▲顶部

linux 性能测试软件_linux 测试软件_测试电脑性能软件

top命令的摘要区域在五个区域显示系统性能信息:

1. 负载: 时间,登录用户数,系统平均负载;

2. 过程: 跑步,睡觉,停止,僵尸;

3.cpu: 用户模式,核心模式,NICE,空闲,等待IO,中断等;

4. 内存: 总,已使用,空闲(系统角度),缓冲区,缓存;

5. 交换分区: 总金额,已用,免费

默认情况下,任务区域显示: 进程ID,有效用户,进程优先级,NICE值,进程使用的虚拟内存,物理内存和共享内存,进程状态,CPU使用率,内存使用率,累计CPU时间,进程命令行信息. 线路信息.

▲htop

htop是Linux系统中的交互式进程查看器. 文本模式应用程序(在控制台或X终端中)需要ncurses.

Htop允许用户进行交互操作,支持颜色主题,水平或垂直滚动​​处理列表以及支持鼠标操作.

与top相比,htop具有以下优点:

▪您可以水平或垂直滚动​​进程列表以查看所有进程和完整的命令行.

在启动时,它比top快.

在终止进程的过程中,无需输入进程号.

■htop支持鼠标操作.

▲mpstat

mpstat是Multiprocessor Statistics的缩写,是一种实时系统监视工具. 该报告和CPU的一些统计信息存储在/ proc / stat文件中. 在多CP​​U系统中,它不仅可以查看所有CPU的平均状态信息,还可以查看特定的CPU信息. 常见用法: mpstat –P ALL间隔时间.

▲netstat

Netstat用于显示与IP,TCP,UDP和ICMP协议有关的统计数据,通常用于检查本机每个端口的网络连接.

▲常用用法:

netstat -npl可以检查您要打开的端口是否已经打开.

netstat -rn打印路由表信息.

测试电脑性能软件_linux 测试软件_linux 性能测试软件

netstat -in提供系统上的接口信息,打印每个接口的MTU,输入数据包号,输入错误,输出数据包号,输出错误,冲突和当前输出队列长度.

▲ps-显示当前进程的状态

ps参数太多. 有关特定用法,请参阅man ps. 常用方法: ps aux #hsserver; ps –ef | grep #hundsun

感觉要杀死程序: ps aux | grep mysqld | grep –v grep | awk‘{print $ 2}’xargs kill -9

■杀死僵尸进程: ps –eal | awk‘{if($ 2 ==“ Z”){print $ 4}}’” | xargs杀死-9

▲strace

跟踪程序执行期间收到的系统调用和信号,以帮助分析程序或命令执行期间遇到的异常情况.

示例: 要检查mysqld在Linux上加载的配置文件,可以运行以下命令: strace –e stat64 mysqld –print –defaults> / dev / null

▲正常运行时间

可以打印系统运行了多长时间以及系统的平均负载. uptime命令输出的最后三个数字分别表示系统在1分钟,5分钟和15分钟内的平均负载.

▲lsof

lsof(列出打开的文件)是列出当前系统的打开文件的工具. 通过lsof工具,您可以查看以下列表以进行系统检测和故障排除以及常见用法:

查看阻止lsof / boot的文件系统

检查哪个进程正在使用端口号lsof -i: 3306

检查用户打开lsof –u用户名的文件

检查lsof –p 4838进程打开了哪些文件

查看远程打开的网络链接lsof –i @ 192.168.34.128

▲完美

perf是Linux内核随附的系统性能优化工具. 优势在于与Linux内核的紧密集成. 它可以首先应用于内核的新功能,用于查看热点功能,检查兑现失败的比率,从而帮助开发人员优化程序性能.

性能调整工具(如perf,Oprofile等)的基本原理是对受监视对象进行采样. 最简单的情况是根据滴答中断进行采样,即在滴答中断内触发采样点,并在采样点当时的上下文中判断程序. 如果程序将其90%的时间花费在函数foo()上,则90%的采样点应落在函数foo()的上下文中. 运气是不可预测的,但是我认为只要采样频率足够高并且采样时间足够长,那么上述推断就更可靠. 因此,通过按刻度触发采样,我们可以了解程序中最耗时的位置,并专注于分析.

要对此工具有更深入的了解,可以参考:

摘要: 结合以上常用的性能测试命令并在本文开头联系性能分析工具,您可以初步了解性能分析过程的哪些方面使用哪些工具(命令).

[常用的性能测试工具]

linux 测试软件_linux 性能测试软件_测试电脑性能软件

熟练掌握性能分析命令工具的第二部分,介绍一些性能测试工具,然后简要介绍几种性能测试工具:

■perf_events: 一种性能诊断工具,由Linux内核代码发布和维护,由内核社区维护和开发. Perf不仅可以用于应用程序性能统计分析,还可以用于内核代码性能统计和分析.

更多参考: .

■eBPF工具: 使用密件抄送跟踪性能的工具. eBPF映射可以使用自定义的eBPF程序广泛用于内核调优,并且还可以读取用户级异步代码. 重要的是,可以在用户空间中管理这些外部数据. 通过在用户空间中调用bpf系统调用来创建,添加和删除操作来管理k-v格式的地图数据主体. 更多: .

■perf-tools: 一组基于perf_events(perf)和ftrace的Linux性能分析调整工具. Perf-Tools具有很少的依赖库,并且易于使用. 支持Linux 3.2及更高版本的内核. 更多: .

■bcc(BPF编译器集合): 使用eBPF的性能性能分析工具. 一个用于创建有效的内核跟踪和操作过程的工具包,其中包括一些有用的工具和示例. 使用扩展的BPF(伯克利数据包过滤器)(正式称为eBPF),新功能首次添加到Linux 3.15中. 需要Linux 4.1或更高版本的BCC.

更多参考资料: #tools.

•ktap: 一种新型的Linux脚本动态性能跟踪工具. 允许用户跟踪Linux内核动态. ktap设计为可互操作的,允许用户调整操作见解,对内核和应用程序进行故障排除和扩展. 它类似于Linux和Solaris DTrace SystemTap. 更多参考: .

Flame Graphs(火焰图): 是一种图形软件,使用了perf,系统点击和ktap可视化,可以快速,准确地识别最频繁的代码路径. 它可以是使用github.com/brendangregg/flamegraph generate中的开发源代码的程序.

更多参考: .

首先,Linux可观察性工具| Linux性能观察工具

第二,Linux性能静态,基准测试,调整工具| Linux静态,性能评估,调整工具(3个模型,带3张图片)

三,Linux可观察性工具: sar,perf-tools,bcc / BPF | Linux性能可观察性工具(sar,perf-tools,bcc / BPF)

四个,可观察性+静态+ perf-tools / bcc总结了上图

更多参考:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-267188-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...