LINUX常用工具之性能分析工具推荐

一、CPU性能分析工具

性能指标

工具

说明

用法举例:

平均负载

Top

Uptime

Uptime:最简单;

Top:提供了更全的指标(平均负载、运行队列、整体的CPU使用率以及每个进程状态和CPU使用率)

Top:

M:根据驻留内存大小进行排序

P:根据CPU使用百分比大小进行排序

H:显示线程

c:显示正在运行的进程的绝对路径

1:显示每个cpu性能指标

系统整体CPU使用率

vmstat

mpstat

sar

top

Top;

Vmstat: 系统整体的CPU使用率、上下文切换次数、中断次数,还包括处于运行和不可中断状态的进程数;

Mpstat: 每个CPU的使用率和软硬中断CPU使用率;

Sar: 系统整体的CPU使用率,包括可配置的历史数据;

top、 vmstat、 mpstat 只可以动态杳看,而 sar还可以记录历史数据。

# vmstat  -w  1

刷新间隔1秒,-w 扩大显示长度。

# mpstat  -P  ALL  1

显示所有CPU性能指标,刷新间隔1秒

# sar  -P  ALL  1  

显示所有CPU性能指标,刷新间隔1秒

进程CPU使用率

Top

Pidstat

Ps

pstree

Pidstat:进程和线程的CPU使用率、中断上下文切换次数;

Top和ps可以按CPU使用率给进程排序,而pidstat只显示实际用了CPU的进程。

Pstree:显示父子进程关系

# ps  -aux  --sort  -pmem

根据 内存使用 来升序排序

#ps  -aux  --sort  -pcpu

根据 CPU使用 来升序排序

# pidstat  1

显示各活动进程的cpu使用统计,刷新间隔1秒

# pidstat  -p  4324  1  

显示指定进程的CPU使用统计,刷新间隔1秒

#pstree  -g

显示带PID父子进程关系

系统上下文切换

vmstat

除了上下文切换次数,还提供运行状态和不可中断状态进程的数量。

 # vmstat  -w  1

进程上下文切换

pidstat

加上 -w选项,线程加上 -t 选项

# pidstat  -w  1  

-w 显示进程上下文切换次数,重点关注自愿上下文切换和非自愿上下文切换数。

# pidstat  -w  -p  778  1

显示指定进程778的上下文切换次数,刷新间隔1秒

# pidstat  -wt  1  

-t 显示线程上下文切换次数。刷新间隔1秒

软中断

Top

mpstat

Top、mpsta提供软硬中断CPU使用率;

#mpstat  -P  ALL  1

硬中断

vmstat

vmstat提供每秒硬中断次数,

#vmstat  -w  1

网络

dstat

sar

tcpdump

dstat和sar提供总的网络接收和发送情况,而tcpdump则是动态抓取正在进行的网络通讯

# dstat   1

显示总的网络接受和发送情况,刷新间隔1秒

# sar  -n  DEV  1

显示详细网络性能,刷新间隔1秒

#tcpdump  -i  ens33  -vnn  port 22

抓取指定接口和端口的数据包

I/O

dstat

sar

dstat和sar提供了I/O的整体情况

# dstat   1

显示全部I/O

# sar  -d  1

显示全部磁盘IO情况,刷新间隔1秒

事件剖析

Perf

Execsnoop

Perf:可以用来分析CPU的缓存以及内核调用链,CPU调度等

Execsnoop:用来监控短时进程追踪。

用法:

https://github.com/brendangregg/perf-tools/blob/master/execsnoop

脚本下载+x权限。

# perf  top

显示占用CPU时钟最多的的函数或者指令,可以用来查找热点函数。

perf top  -g  -p  10277

-g 开启调用关系分析,-p指定进程号

# perf  record  -g  -p 10277

保存性能事件

# perf  report

查看性能事件

#./ Execsnoop

追踪短时进程(瞬时进程),top或ps不容易发现。

二、内存性能分析

性能指标

工具

说明

用法举例:

系统已用、可用、剩余内存

free

vmstat

sar

Free:系统已用、可用、剩余内存以及缓存和缓冲区用量。

Vmstat:系统剩余内存、缓存、缓冲区、换入、换出

Sar:系统内存换页情况、内存使用率、缓存和缓冲区用量以及swap使用情况。

# vmstat  -w  1

# free  -mt

# sar  -r  1

显示内存利用率,刷新间隔1秒

进程虚拟内存、常驻内存、共享内存

Ps

Top

Top、ps:进程虚拟、常驻、共享内存以及缺页异常

Top:

M:根据驻留内存大小进行排序

# ps  -aux  --sort  -pmem

根据 内存使用 来升序排序

进程内存分布

Pmap

Pmap:进程地址空间和内存状态

# pmap  -x  2028

-x 显示扩展格式,-d 显示设备格式

进程缺页异常

Pidstat

Pidstat:显示各活动进程的内存使用统计,缺页异常次数;注意加上-r选项。

# pidstat  -r  1 

显示各活动进程的内存使用统计,缺页异常次数,刷新间隔1秒

# pidstat  -r  -p  3334  1 

-p 显示指定进程内存使用情况,刷新间隔1秒

系统换页情况

Sar

Sar:系统内存换页情况、内存使用率、缓存和缓冲区用量以及swap使用情况;注意加上-B选项

# sar  -r - B  -S  1  

-r显示内存使用率、-B显示内存换页、-S显示swap  刷新间隔1秒

缓存/缓存区用量

Free

Vmstat

Sar

Slabtop

Cachestat:系统缓存和缓冲区的命中率;

Slabtop:系统slap缓存使用情况

# free  -mt

# vmstat  -w  1

# sar  -r  -1

# Slabtop

 实时显示内核slap缓存区的详细信息

缓存/缓存区命中率

Cachetop

Cachestat

Cachetop:进程缓存和缓冲区的命中率

Cachestat:系统缓存和缓冲区命中率

安装:bcc-tools

系统内核:4.1以上

# cachestat  1

# cachetop

Swap换入换出

Vmstat

Sar

# vmstat  -w  1

# sar  -W  1

 每秒从交换分区到系统的交换页面换入换出数量

内存泄露检查

Memleak

Valgrind

Valgrind:进程内存错误检测器,用来检测内存初始化、泄露、越界访问等各种内存错误, Valgrind不能指定PID进行分析,一般用在发现内存泄漏线下分析;

Memleak:内存泄漏检查。

memleak  -p  $(pidof app)  -a

-p 指定进程PID,-a 显示每个内存分配请求的大小以及地址;

#Valgrind --tool=memcheck --leak-check=full  执行程序名

 三、文件系统和磁盘I/O性能分析

性能指标

工具

说明

用法举例:

文件系统空间容量、使用量以及剩余空间

df

df:磁盘空间和索引节点使用量和剩余量

#df -Th

索引节点容量、使用量以及剩余量

df

df: 加 – i  选项

#df  -ih

页缓存和可回收Slab缓存

Sar

Vmstat

Sar : 加 – r  选项

#sar  -r  1

#vmstat  -w  1

缓冲区

Sar

Vmstat

Sar : 加 – r  选项

#sar  -r  1

#vmstat  -w  1

目录项、索引节点以及文件系统缓存

Slaptop

Slaptop:目录项、索引节点以及文件系统缓存

# slaptop

磁盘I/O使用率、IOPS、吞吐量、响应时间、I/O平均大小以及等待队列长度

iostat

sar

Dstat

Iostat:磁盘I/O使用率、IOPS、吞吐量、响应时间、I/O平均大小以及等待队列长度;

Sar:磁盘I/O使用率、IOPS、吞吐量以及响应时间;

Dstat:磁盘I/O使用率、IOPS、吞吐量;

# iostat  -d  -x  1

-d –x  表示显示所有磁盘I/O性能指标

# sar  -d  1  -p

显示所有磁盘I/O性能指标,刷新间隔1秒

#dstat  --top-mem  --top-io  --top-cpu

找出占用资源最高的进程和用户

进程I/O大小以及I/O延迟

Pidstat

Iotop

Pidstat:使用 –d 选项,显示进程I/O大小以及I/O延迟;

Iotop:按I/O大小对进程排序;

# pidstat  -d  1

显示活动进程I/0性能指标,刷新间隔1秒

# iotop

根据I/O大小对进程进程排序

块设备I/O事件追踪

Blktrace

blktrace:跟踪块设备I/O事件

# blktrace  -d  /dev/sda -o - | blkparse -i –

输出到终端用“-”表示,可是都是一堆二进制东西,没法看,所以需要实时blkparse来解析;

Blkparse 的“-i”后加文件名,blktrace输出为“-“代表终端,blkparse也用“-”来代表终端解析

进程I/O系统调用追踪

Strace

Perf

strace:通过系统调用跟踪进程的I/O

perf  trace:跟踪内核中的I/O事件。

Strace 只可以跟踪单个进程,而perf  trace可以跟踪所有进程的系统调用。

# strace  -p  32432

-p 指定跟踪PID号;配合lsof  -p  32432 分析;

# strace  -f  -T  -tt  -p  32432

-f 表示跟踪子进程和线程,-T 表示显示系统调用的时长,-tt 显示跟踪事件。

进程块设备I/O大小跟踪

Biosnoop

biotop

需要安装bcc工具包,内核大于4.1

动态追踪

Ftrace

Bcc

Systemtap

Ftrace 用于跟踪内核函数调用栈,而bcc和systemtap则用于跟踪内核或应用程序的执行过程

注意:内核大于4.1,需要从源码安装

四、网络性能分析

性能指标 

工具

说明

用法举例:

吞吐量(BPS)

Sar

Iftop

nethogs

Sar:查看网络接口的网络收发情况

Iftop:查看IP的网络收发情况

Nethogs:查看进程的网络收发情况

# sar -n DEV 1

显示所有网卡收发情况,刷新间隔1秒

# iftop -i eth1

监控eth1网卡收发情况

# nethogs -d 1  eth1  eth2

查看每个进程使用的带宽,刷新间隔1秒

吞吐量(PPS)

Sar

# sar  -n  DEV 1

网络连接数

Netstat

Ss

Netstat:显示与IP、TCP、UDP和ICMP协议相关的统计数据

Ss:获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快;

# ss –ltnpu

显示所有tcp/udp协议链接信息

#netstat  -ltnpu

显示所有tcp/udp协议链接信息

网络错误数

Netstat

Sar

#netstat  -i

显示数据链路层信息统计

#netstat  –i

显示网络层和传输层信息统计

# sar -n  EDEV  1

显示数据链路层网络信息统计

# sar -n  EIP  1

显示网络层信息统计

延迟

ping
hping3

Ping:基于icmp协议

hping3:基于tcp协议测试网络连通性。

ping  -c3  114.114.114.114

hping3 –c  3  -S  -p  8080  192.168.1.11

-c 表示发送3次请求、-S表示设置TCP  SYN 、-p 表示端口号为80

连接跟踪数

conntrack

Conntrack:查看和管理连接跟踪状况

# Conntrack  -L  -o  extended

-L  表示列表  -o 表示已扩展格式显示

查看链接追踪表内容

路由

mtr
route
traceroute

查看路由并测试链路信息

# mtr  134.64.57.129

详细记录主机间流量状况。

#Route  –n

显示本机路由表信息

#traceroute  --tcp  -p  80  -n  taobao.com

--tcp 使用tcp协议,-p 表示端口,-n 不对结果IP进行反向域名解析

追踪到目标主机的路由信息。

#traceroute  -p  8080  -n  taobao.com

使用UDP协议追踪。

DNS

dig
nslookup

dig、nslookup:排查DNS解析问题;

dig可动态追踪解析过程

# nslookup  www.baidu.com

查询主机DNS记录信息

#dig  +trace  +nodnssec   www.baidu.com

+trace 表示开启动态追踪,+nodnssec 表示禁止DNS安全扩展

动态追踪DNS解析过程

防火墙和NAT

iptables

Iptables:配置和管理防火墙及NAT规则

网卡功能

ethtool

ethtool:查看和配置网络接口

#ethtool -S eth0

查看网卡收发包统计

# ethtool  -l  eth0、

查看网卡是否支持多队列

抓包

Tcpdump

Wireshark

Tcpdump:网络抓包工具

Wireshark:网络抓包和图形界面分析工具

# tcpdump  -nn  tcp   port  80  -w  app.pcap

抓取80端口数据包保存为文件,用Wireshark分析;

内核协议栈跟踪

bcc
systemtap

perf

Perf:剖析内核协议栈的性能

Systemtap、bcc:动态追踪内核协议栈的行为。

# perf  record  -g  -p  13788

 五、推荐安装工具

工具

软件包

repo镜像源

mpstat

sysstat-9.0.4-22.el6.x86_64

Base

Sar

Base

Pidstat

base

pstree

psmisc-22.6-15.el6_0.1.x86_64

Base

dstat

dstat-0.7.0-1.el6.noarch

Base

tcpdump

tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64

Base

perf

2.6以上内核自带工具

base

vmstat

procps-3.2.8-25.el6.x86_64

Base

pmap

base

Slabtop

base

Cachetop

bcc-tools需要内核版本为4.1或者更新的版本

epel

Cachestat

epel

Memleak

epel

blktrace

blktrace-1.0.1-6.el6.x86_64

base

strace

strace-4.5.19-1.17.el6.x86_64

base

iftop

可源码安装

epel

nethogs

可源码安装

epel

netstat

net-tools-1.60-110.el6_2.x86_64

base

ss

iproute-2.6.32-31.el6.x86_64

base

conntrack

源码安装conntrack-tools 内核> = 2.6.18

epel

mtr

mtr-0.75-5.el6.x86_64

base

route

net-tools-1.60-110.el6_2.x86_64

base

traceroute

traceroute-2.0.14-2.el6.x86_64

base

dig

bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64

base

nslookup

base

ethtool

ethtool-3.5-1.el6.x86_64

base

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值