linux 2.常用性能工具

2020/04/16 posted in  服务端
Tags:  #linux #手册

cpu性能工具

性能指标 性能工具 说明
平均负载 Uptime top /proc/loadavg uptime最简单;top提供了更全的指标;/proc/loadavg常用于监控系统
系统CPU使用率 Vmstat mpstat top sar /proc/stat Top vmstat mpstat只能动态查看,而sar还可以记录历史数据;/proc/stat是其他性能工具的数据来源,也常用于监控
进程CPU使用率 top ps pidstat htop atop top和ps可以按CPU使用率给进程排序,而pidstat只显示实际用了CPU的进程;htop和atop以不同颜色显示更直观
进程上下文切换 vmstat 除了上下文切换次数,还提供运行状态和不可中断状态进程的数量
进程上下文切换 pidstat 注意加上-w选项
软中断 top mpstat /proc/softirqs top提供软中断CPU使用率,而/proc/softirqs和mpstat提供了各种软中断在每个cpu上的运行次数
硬中断 Vmstat /proc/interrupts vmstat提供总的中断次数,而/proc/interrupts提供各种中断在每个cpu上运行的累积次数
网络 dstat sar tcpdump dstat sar提供总的网络接收和发送情况,而tcpdump则是动态抓取天上在进行的网络通讯
I/O dstat sar dstat和sar都提供了I/O的整体情况
CPU缓存 perf 使用perf stat子命令
CPU数 lscpu /proc/cpuinfo lscpu更直观
事件剖析 Perf \ 火焰图 execsnoop perf和火焰图用来分析热点函数以及调用栈,execsnoop用来监测短时进程
动态追踪 ftrace bcc systemtap ftrace用于跟踪内核函数调用栈,而bcc和systemtap则用于跟踪内核或应用程序的执行过程(注意bcc要求内核版本>=4.1)

内存性能工具

性能指标 性能工具 说明
系统已用、可用、剩余内存 free vmstat sar /proc/meminfo free最为简单,而vmstat sar更为全面;/proc/meminfo是其他工具的数据来源,也常用于监控系统中
进程虚拟内存、常驻内存、共享内存 ps top pidstat /proc/pid/stat /proc/pid/status ps和top最简单,而pidstat则需要加上-r选项;/proc/pid/stat和/proc/pid/status是其他工具的数据来源,也常用于监控系统中
进程内存分布 Pmap /proc/pid/maps /proc/pid/maps是pmap的数据来源
进程swap换出内存 top /proc/pid/status /proc/pid/status是top的数据来源
进程缺页异常 ps top pidstat 注意给pidstat 加上-r选项
系统换页情况 sar 注意加上-B选项
缓存 / 缓冲区使用量 free vmstat sar cachestat vmstat最常用,而cachestat需要安装bcc
缓存 / 缓冲区命中率 cachetop 需要安装bcc
SWAP已使用空间和剩余空间 Free sar free最为简单,而sar还可以记录历史
swap换入换出 vmsata sar vmstat最为简单,而sar还可以记录历史
内存泄露检测 Memleak valgrind memleak需要安装bcc,valgrind还可以在旧版本(如3.x)内核中使用
指定文件的缓存大小 pcstat 需要从源码下载安装

文件系统和磁盘I/O性能工具

性能指标 性能工具 说明
文件系统空间容量、使用量以及剩余空间 df 详细文档可以执行info coreutils ‘df invocation'命令查询
索引节点容量、使用量以及剩余量 df 注意加上-i选项
页缓存和可回收Slab缓存 /proc/meminfo  sar vmstat 注意sar需要加上-r选项,而/proc/meminfo是其他工具的数据来源,也常用于监控
缓冲区 同上 同上
目录项,索引节点以及文件系统的缓存 /proc/slabinfo  slabtop slabtop更直观,而/proc/slabinfo常用于监控
磁盘I/O使用率,iops,吞吐量,响应时间,I/O平均大小以有等待队列长度 iostat sar dstat /proc/diskstats iostat是常用,注意使用iostat -d -x或sar -d选项;/proc/diskstat则是其他工具数据来源,也常用于监控
进程I/O大小以及I/O延迟 pidstat iotop 注意使用pidstat -d选项
块设备I/O事件跟踪 bltrace 需要跟blkparse配合使用,比如bltrace -d /dev/sda -o bltrace -i
进程I/O系统调用跟踪 strace perf trace strace只可以跟踪单个进程,而perf trace还可以跟踪所有进程的系统调用
进程块设备I/O大小跟踪 biosnoop biotop 安装bcc
动态追踪 ftrace bcc systemtap ftrace用户跟踪内核函数调用栈,而bcc和systemtap则用于跟踪内核或应用程序的执行过程(注意bcc要求内核版本>=4.1)

网络性能工具

性能指标 性能工具 说明
吞吐量(BPS) sar nethogs iftop /proc/net/dev 分别可以查看网络接口,进程以及IP地址的网络吞吐量;/proc/net/dev常用于监控
吞吐量(PPS) sar /proc/net/dev 注意使用sar -n DEV选项
网络连接数 netstat ss ss速度更快
网络错误数 netsta sar 注意使用netstat -s或者sar -n EDEV/EIP选项
网络延迟 Ping hping3 ping基于ICMP 而hping3则基于TCP协议
连接跟踪数 conntrack /proc/sys/net/netfilter/nf_conntrack_count  /proc/sys/net/netfilter/nf_conntrack_max Conntrack可用来查看所有连接跟踪的相关信息 Nf_conntrack_count只是连接跟踪的数量,而nf_conntrack_max则限制了总的连接跟踪数量
路由 mtr traceroute route route用于查询路由表,而mtr和traceroute则用来排查和定位网络链路中的路由问题
DNS dig nslookup 用于排查DNS解析的问题
防火墙和NAT iptables 用于排查防火墙及NAT的问题
网卡选项 ethtool 用于查看和配置网络接口的项目选项
网络抓包 tcpdump wireshark 通常在服务器中使用tcpdump抓包后再复制出来用wireshark的图形界面分析
动态追踪 Ftrace bcc systemtap ftrace用于跟踪内核函数调用栈,而bcc和systemtap则用于跟踪或应用程序的执行过程(注意bcc要求内核>=4.1)

总结

记录一下常用的linux工具