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

发布时间:2024年01月21日

一、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

文章来源:https://blog.csdn.net/vincent0920/article/details/135725719
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。