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工具