【性能剖析工具】
首先来看一张图:
上图是BrendanGregg的一次性能剖析的分享,这儿面的所有工具都可以通过man来获得它的帮助文档,下问简单介绍介绍一下常规的用法:
vmstat--虚拟显存统计
vmstat(VirtualMeomoryStatistics,虚拟显存统计)是Linux中监控显存的常用工具,可对操作系统的虚拟显存、进程、CPU等的整体情况进行监视。
vmstat的常规用法:vmstatintervaltimes即每隔interval秒取样一次,共取样times次,假如省略times,则仍然采集数据,直至用户自动停止为止。简单举个反例:
可以使用ctrl+c停止vmstat采集数据。
第一行显示了系统自启动以来的平均值,第二行开始显示现今正在发生的情况,接出来的行会显示每5秒间隔发生了哪些,每一列的含意在腰部,如下所示:
procs:r这一列显示了多少进程在等待cpu,b列显示多少进程正在不可中断的休眠(等待IO)。
memory:swapd列显示了多少块被换出了c盘(页面交换),剩下的列显示了多少块是空闲的(未被使用),多少块正在被用作缓冲区,以及多少正在被用作操作系统的缓存。
swap:显示交换活动:每秒有多少块正在被换入(从c盘)和换出(到c盘)。
io:显示了多少块从块设备读取(bi)和写出(bo),一般反映了硬碟I/O。
system:显示每秒中断(in)和上下文切换(cs)的数目。
cpu:显示所有的cpu时间耗费在各种操作的比率,包括执行用户代码(非内核),执行系统代码(内核),空闲以及等待IO。
显存不足的表现:freememory随之降低,回收buffer和cacher也无济于事,大量使用交换分区(swpd),页面交换(swap)频繁,读写c盘数目(io)增多,缺页中断(in)增多,上下文切换(cs)次数增多,等待IO的进程数(b)增多,大量CPU时间用于等待IO(wa)
iostat--用于报告中央处理器统计信息
iostat用于报告中央处理器(CPU)统计信息和整个系统、适配器、tty设备、磁盘和CD-ROM的输入/输出统计信息,默认显示了与vmstat相同的cpu使用信息,使用以下命令显示扩充的设备统计:
第一行显示的是自系统启动以来的平均值,之后显示增量的平均值,每位设备一行。
常见linux的c盘IO指标的简写习惯:rq是request,r是read,w是write,qu是queue,sz是size,a是verage,tm是time,svc是service。
rrqm/s和wrqm/s:每秒合并的读和写恳求,“合并的”意味着操作系统从队列中掏出多个逻辑恳求合并为一个恳求到实际c盘。
r/s和w/s:每秒发送到设备的读和写恳求数。
rsec/s和wsec/s:每秒读和写的磁道数。
avgrq–sz:恳求的磁道数。
avgqu–sz:在设备队列中等待的恳求数。
await:每位IO恳求耗费的时间。
svctm:实际恳求(服务)时间。
%util:起码有一个活跃恳求所占时间的比率。
dstat--系统监控工具
dstat显示了cpu使用情况,c盘io情况,网路分包情况和换页情况,输出是彩色的,可读性较强,相对于vmstat和iostat的输入愈发详尽且较为直观。在使用时,直接输入命令即可,其实也可以使用特定参数。
如下:dstat–cdlmnpsy
iotop--LINUX进程实时监控工具
iotop命令是专门显示硬碟IO的命令,界面风格类似top命令,可以显示IO负载具体是由那个进程形成的。是一个拿来监视c盘I/O使用状况的top类工具,具有与top相像的UI,其中包括PID、用户、I/O、进程等相关信息。
可以以非交互的形式使用:iotop–bodinterval,查看每位进程的I/O,可以使用pidstat,pidstat–dinstat。
pidstat--监控系统资源情况
pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,显存、设备IO、任务切换、线程等。
使用方式:pidstat–dinterval;pidstat还可以用以统计CPU使用信息:pidstat–uinterval;统计显存信息:Pidstat–rinterval。
top
top命令的汇总区域显示了五个方面的系统性能信息:
1.负载:时间,登录用户数,系统平均负载;
2.进程:运行,睡眠,停止,僵尸;
3.cpu:用户态,核态度,NICE,空闲,等待IO,中断等;
4.显存:总数,已用,空闲(系统角度)linux内核源代码分析工具,缓冲,缓存;
5.交换分区:总数,已用,空闲
任务区域默认显示:进程ID,有效用户,进程优先级,NICE值,进程使用的虚拟显存,化学显存和共享显存,进程状态,CPU占用率,显存占用率,累计CPU时间,进程命令行信息。
htop
htop是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或则X终端中),须要ncurses。
Htop可让用户交互式操作,支持颜色主题,可纵向或横向滚动浏览进程列表,并支持键盘操作。
与top相比,htop有以下优点:
可以纵向或则横向滚动浏览进程列表,便于见到所有的进程和完整的命令行。
在启动上,比top更快。
杀进程时不须要输入进程号。
htop支持键盘操作。
mpstatmpstat是MultiprocessorStatistics的简写,是实时系统监控工具。其报告与CPU的一些统计信息,这种信息储存在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,但是才能查看特定CPU的信息。常见用法:mpstat–PALLintervaltimes。
netstat
Netstat用于显示与IP、TCP、UDP和ICMP合同相关的统计数据,通常用于检验本机各端口的网路联接情况。
常见用法:
netstat–npl可以查看你要打开的端口是否早已打开。
netstat–rn复印路由表信息。
netstat–in提供系统上的插口信息,复印每位插口的MTU,输入分组数,输入错误wps for linux,输出分组数,输出错误,冲突以及当前的输出队列的宽度。
ps--显示当前进程的状态
ps参数太多,具体使用方式可以参考manps,常用的方式:psaux#hsserver;ps–ef|grep#hundsun
杀掉某一程序的方式:psaux|grepmysqld|grep–vgrep|awk‘{print$2}’xargskill-9
杀掉僵尸进程:ps–eal|awk‘{if($2==“Z”){print$4}}’|xargskill-9
strace
跟踪程序执行过程中形成的系统调用及接收到的讯号,帮助剖析程序或命令执行中遇见的异常情况。
举例:查看mysqld在linux上加载哪种配置文件,可以通过运行下边的命令:strace–estat64mysqld–print–defaults>/dev/null
uptime
才能复印系统总共运行了多长时间和系统的平均负载,uptime命令最后输出的三个数字的含意分别是1分钟,5分钟linux格式化命令,15分钟内系统的平均负荷。
lsof
lsof(listopenfiles)是一个列举当前系统打开文件的工具。通过lsof工具才能查看这个列表对系统检查及排错,常见的用法:
查看文件系统阻塞lsof/boot
查看端标语被那个进程占用lsof-i:3306
查看用户打开什么文件lsof–uusername
查看进程打开什么文件lsof–p4838
查看远程已打开的网路链接lsof–i@192.168.34.128
perf
perf是Linuxkernel自带的系统性能优化工具。优势在于与LinuxKernel的紧密结合,它可以最先应用到加入Kernel的newfeature,用于查看热点函数linux内核源代码分析工具,查看cashemiss的百分比,因而帮助开发者来优化程序性能。
性能调优工具如perf,Oprofile等的基本原理都是对被检测对象进行取样,最简单的情形是依据tick中断进行取样,即在tick中断内触发取样点,在取样点里判定程序当时的上下文。如果一个程序90%的时间都耗费在函数foo()上,这么90%的取样点都应当落在函数foo()的上下文中。运气不可飘忽,但我想只要取样频度足够高,取样时间足够长,这么以上结论就比较可靠。因而,通过tick触发取样,我们便可以了解程序中什么地方最历时间,因而重点剖析。
想要更深的了解本工具可以参考:/trochiluses/article/details/10261339
汇总:结合以上常用的性能测试命令并联系文初的性能剖析工具的图,就可以初步了解到性能剖析过程中那个方面的性能使用哪方面的工具(命令)。
【常用的性能测试工具】
熟练并精通了第二部份的性能剖析命令工具,引入几个性能测试的工具,介绍之前先简单了解几个性能测试工具:
perf_events:一款随Linux内核代码一齐发布和维护的性能确诊工具,由内核社区维护和发展。Perf除了可以用于应用程序的性能统计剖析,也可以应用于内核代码的性能统计和剖析。
更多参考:/s/blog_98822316010122ex.html。
eBPFtools:一款使用bcc进行的性能追踪的工具,eBPFmap可以使用订制的eBPF程序被广泛应用于内核调优方面,也可以读取用户级的异步代码。重要的是这个外部的数据可以在用户空间管理。这个k-v格式的map数据体是通过在用户空间调用bpf系统调用创建、添加、删除等操作管理的。more:/ljy1988123/article/details/50444693。
perf-tools:一款基于perf_events(perf)和ftrace的Linux性能剖析调优工具集。Perf-Tools依赖库少,使用简单。支持Linux3.2及以上内核版本。more:/brendangregg/perf-tools。
bcc(BPFCompilerCollection):一款使用eBPF的perf性能剖析工具。一个用于创建高效的内核跟踪和操作程序的工具包,包括几个有用的工具和示例。借助扩充的BPF(伯克利数据包过滤器),即将称为eBPF,一个新的功能,首先被添加到Linux3.15。多用途须要Linux4.1以上BCC。
更多参考:/iovisor/bcc#tools。
ktap:一种新型的linux脚本动态性能跟踪工具。容许用户跟踪Linux内核动态。ktap是设计给具有互操作性,容许用户调整操作的看法,排除故障和延长内核和应用程序。它类似于Linux和SolarisDTraceSystemTap。更多参考:/ktap/ktap。
FlameGraphs:是一款使用perf,systemtap,ktap可视化的图形软件,容许最频繁的代码路径快速确切地辨识,可以是使用/brendangregg/flamegraph中的开发源代码的程序生成。
更多参考:/flamegraphs.html。一、Linuxobservabilitytools|Linux性能观测工具
首先学习的BasicTool有如下:uptime、top(htop)、mpstat、isstat、vmstat、free、ping、nicstat、dstat。
中级的命令如下:sar、netstat、pidstat、strace、tcpdump、blktrace、iotop、slabtop、sysctl、/proc。
更多参考:/lib/view/open73.html,详尽的命令使用方式可以参考man二、Linuxbenchmarkingtools|Linux性能测评工具
是一款性能测评工具,对于不同模块的性能测试可以使用相应的工具,想要深入了解,可以参考最下文的附件文档。
三、Linuxtuningtools|Linux性能调优工具
是一款性能调优工具,主要是从linux内核源码层进行的调优,想要深入了解,可以参考下文附件文档。
四、Linuxobservabilitysar|linux性能观测工具
sar(SystemActivityReporter系统活动情况报告)是目前LINUX上最为全面的系统性能剖析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等方面。
sar的常归使用方法:sar[options][-A][-ofile]t[n]其中:t为取样间隔,n为取样次数,默认值是1;-ofile表示将命令结果以二补码格式储存在文件中,file是文件名。options为命令行选项
更多参考:/mig_davidli/article/details/52149993