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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/639940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring+SprinMVC+MyBatis注解方式简易模板

SpringSprinMVCMyBatis注解方式简易模板代码Demo GitHub访问 ssm-tpl-anno 一、数据准备 创建数据库test,执行下方SQL创建表ssm-tpl-cfg /*Navicat Premium Data TransferSource Server : 127.0.0.1Source Server Type : MySQLSource Server Version :…

opendrive-经纬度投影坐标转横轴墨卡托投影坐标

xodr的geoReference标签介绍 经纬度投影 xodr文件projlatlong&#xff0c;说明需要使用经纬度投影代表x,y,z <geoReference>projlatlong ellpsWGS84 datumWGS84</geoReference>xodr文件projtmerc&#xff0c;说明需要使用横轴墨卡托投影(将经纬度投影转为墨卡托投…

【优化技术专题】「性能优化系列」针对Java对象压缩及序列化技术的探索之路

针对Java对象压缩及序列化技术的探索之路 序列化和反序列化为何需要有序列化呢&#xff1f;Java实现序列化的方式二进制格式 指定语言层级二进制格式 跨语言层级JSON 格式化类JSON格式化&#xff1a;XML文件格式化 序列化的分类在速度的对比上一般有如下规律&#xff1a;Java…

选择排序(二)——堆排序(性能)与直接选择排序

目录 一.前言 二.选择排序 2.1 堆排序 2.2选择排序 2.2.1 基本思想 2.2.2直接选择排序 三.结语 一.前言 本文给大家带来的是选择排序&#xff0c;其中选择排序中的堆排序在之前我们已经有过详解所以本次主要是对比排序性能&#xff0c;感兴趣的友友可移步观看堆排&#…

世微AP5179 60V高端电流采样降压恒流驱动器 LED车灯备用灯信号灯

产品描述 AP5179是一款连续电感电流导通模式的降压恒流源&#xff0c;用于驱动一颗或多颗串联LED输入电压范围从 5 V 到 60V&#xff0c;输出电流 可达 2.0A 。根据不同的输入电压和 外部器件&#xff0c; 可以驱动高达数十瓦的 LED。 内置功率开关&#xff0c;采用高端电流采样…

python实现带刷新的文本进度条

进度条已执行的部分使用“**”&#xff0c;未执行的部分使用“--”&#xff0c;用print&#xff08;&#xff09;来完成 使用到的函数&#xff1a; time.sleep(),作用是在程序执行过程中暂停一段时间&#xff0c;即会使程序暂停指定的秒数&#xff0c;然后再继续执行后面的代…

【Unity学习笔记】Unity TestRunner使用

转载请注明出处&#xff1a;&#x1f517;https://blog.csdn.net/weixin_44013533/article/details/135733479 作者&#xff1a;CSDN|Ringleader| 参考&#xff1a; Input testingGetting started with Unity Test FrameworkHowToRunUnityUnitTest如果对Unity的newInputSystem感…

C: CRC16,CRC32 计算代码

说明&#xff1a;CRC16/MODBUS ,CRC32 计算代码 推荐个在线CRC计算网站 http://www.ip33.com/crc.html 1&#xff1a;计算 CRC32 算法代码&#xff1a; //计算CRC32的算法代码&#xff1a; uint32_t crc32(uint8_t *data, uint32_t length) {uint32_t crc 0xFFFFFFFF;uint3…

HTML JavaScript 数字变化特效

效果 案例一&#xff1a;上下滚动 案例二&#xff1a;本身变化 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><met…

什么是JSX以及在React中的使用

1. 什么是JSX&#xff1f; JSX是一种JavaScript的语法扩展&#xff0c;它是一个看起来很像 XML 的 JavaScript 语法扩展。虽然它看起来像模板语言&#xff0c;但实际上它更接近于JavaScript的语法糖。JSX代码在运行时会被转译为普通的JavaScript对象。 以下是一个简单的JSX示…

初识 JVM

什么是JVM JVM 全称是 J ava V irtual M achine&#xff0c;中文译名 Java虚拟机 。 JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行 Java字节码文件 。 JVM的功能 Java语言如果不做任何优化&#xff0c;性能不如C、C等语言。 Java需要实时解释&…

【主题广范|见刊快】2024年生物信息学与智能系统国际学术会议(IACBIS 2024)

【主题广范|见刊快】2024年生物信息学与智能系统国际学术会议(IACBIS 2024) 2024 International Conference Bioinformatics and Intelligent Systems(IACBIS 2024) 一、【会议简介】 在2024年&#xff0c;一场全球瞩目的学术盛会将在某个繁华的都市中心举行。这次会议的主题是…

Android学习之路(22) ARouter原理解析

1.ARouter认知 首先我们从命名来看:ARouter翻译过来就是一个路由器。 官方定义&#xff1a; 一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦 那么什么是路由呢&#xff1f; 简单理解就是&#xff1a;一个公共平台转发系统 工作方式&…

Python——Requests库笔记①

简介 Requests是Python的一个第三方库&#xff0c;可以方便地向网站发送 HTTP 请求&#xff0c;并获取响应结果。 &#xff08;Requests is an elegant and simple HTTP library for Python, built for human beings.&#xff09; Requests库安装 启动cmd&#xff0c;输入以…

「回看 Milvus 的 2023」:AI 热潮中的非典型向量数据库

2023 年是 AI 应用开发领域的一个重要转折点。 在这一年里&#xff0c;大语言模型&#xff08;LLMs&#xff09;因其卓越的自然语言处理能力而广受赞誉&#xff0c;极大地拓宽了机器学习应用的场景。开发者们逐渐意识到&#xff0c;有了 LLMs&#xff0c;他们可以设计出更智能、…

软件系统测试方案-word

2. 测试策略 2.1. 测试完成标准 2.2. 测试类型 2.2.1. 功能测试 2.2.2. 性能测试 2.2.3. 安全性与访问控制测试 2.3. 测试工具 3. 测试技术 4. 测试资源 4.1. 人员安排 4.2. 测试环境 4.2.1. 硬件环境 4.2.2. 软件环境 4.3. 进度安排 5. 功能测试 6. 性能测试 7. 安全性与访问控…

[Unity] Tilemap瓦片左右翻转(上下翻转)

Tile&#xff08;瓦片&#xff09;左右翻转感觉是很常用的一个功能啊&#xff01;看了一些教程都没有提及&#xff0c;心想难道要把每张Sprite再做一张对称的、再做成瓦片吗&#xff1f; 图片量x2 、瓦片量x2、不现实&#xff01;一定有方法&#xff01; 搜索了了半天没找到方…

架构篇04:复杂度来源 - 高性能

文章目录 单机复杂度集群的复杂度小结 从本篇开始&#xff0c;我们一起深入分析架构设计复杂度的 6 个来源&#xff0c;先来聊聊复杂度的来源之一高性能。 对性能孜孜不倦的追求是整个人类技术不断发展的根本驱动力。例如计算机&#xff0c;从电子管计算机到晶体管计算机再到集…

springsecurity集成kaptcha功能

前端代码 本次采用简单的html静态页面作为演示&#xff0c;也可结合vue前后端分离开发&#xff0c;复制就可运行测试 项目目录 登录界面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</…

【设计模式-9】装饰模式的代码实现及使用场景

装饰器模式类比生活中房屋装修的场景&#xff0c;可以在毛坯房的基础上加以各种装饰&#xff0c;使得房屋的居住属性增强。装饰器模式能够在运行期间&#xff0c;动态地为原始对象增加一些额外的功能&#xff0c;使其功能更为丰富。 1. 概述 装饰模式 可以动态的为某些对象增…