Linux操作系统知识点整理

一、系统工具相关

1.1、CPU性能工具:

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

1.2、内存性能工具:

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

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

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

1.4、网络性能工具

  • 吞吐量(BPS):
    • sar:可以查看网络接口的网络吞吐量;
    • nethogs:可以查看进程的网络吞吐量;
    • iftop:可以查看IP地址的网络吞吐量;
    • /proc/net/dev:常用于监控;
  • 吞吐量(PPS):
    • sar:注意使用 sar -n DEV 选项;
    • /proc/net/dev
  • 网络连接数:
    • netstat
    • ss:速度更快;
  • 网络错误数:
    • netstat:注意使用 netstat -s 选项;
    • sar:注意使用 sar -n EDEV/EIP 选项;
  • 网络延迟:
    • ping:基于ICMP;
    • hping3:基于TCP协议;
  • 连接跟踪数:
    • conntrack:可用于查看所有连接跟踪数的详细信息;
    • /proc/sys/net/netfilter/nf_conntrack_count:显示连接跟踪的数量;
    • /proc/sys/net/netfilter/nf_conntrack_max:限制总的连接跟踪的数量;
  • 路由:
    • mtr:用于排查和定位网络链路中的路由问题;
    • traceroute:用于排查和定位网络链路中的路由问题;
    • route:用于查询路由表;
  • DNS:
    • dig:用于排查DNS的解析问题;
    • nslookup:用于排查DNS的解析问题;
  • 防火墙和NAT:
    • iptables:用于排查防火墙及NAT的问题;
  • 网卡选项:
    • ethtool:用于查看和配置网络接口的功能选项;
  • 网络抓包:
    • tcpdump:服务中使用tcpdump抓包;
    • wireshark:图形界面分析抓包的数据;
  • 动态追踪:
    • ftrace:用于跟踪内核函数的调用栈;
    • bcc:用于跟踪内核或应用程序的执行过程(要求内核版本>=4.1);
    • systemtap:用于跟踪内核或应用程序的执行过程;
Author: bugwz
Link: https://bugwz.com/2018/12/12/linux-tools-notes/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.