• 认真地记录技术中遇到的坑!
  • 能摸鱼真是太好啦!嘿嘿嘿!

系统性能分析工具-sar

Linux 悠悠 3年前 (2022-03-30) 2565次浏览 0个评论

概述

sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一。

可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。

格式:sar [options] [-A] [-o file] t [n]

追溯过去的统计数据

默认情况下,sar从最近的0点0分开始显示数据;如果想继续查看一天前的报告;可以查看保存在/var/log/sysstat/下的sa日志; 使用sar工具查看:

sar -f /var/log/sysstat/sa20191217
  • n为采样次数,是可选的,默认值是1
  • t为采样间隔,是必须有的参数
  • -o file表示将命令结果以二进制格式存放在文件中

常用命令

下面列出一些常用命令,可以修改1为相应的采样时间间隔或次数,如果值不稳定可以增加采样次数和间隔。如果没有指定采样次数,会不断将采样的结果打印。

  • sar 1 // CPU和IOWAIT统计状态
  • sar -b 1 // IO传送速率
  • sar -B 1 // 页交换速率
  • sar -C 1 // 进程创建的速率
  • sar -d 1 // 块设备的活跃信息
  • sar -n DEV 1 // 网路设备的状态信息
  • sar -n DEV 5 5 // 五秒五次查看设备状态
  • sar -n SOCK 1 // SOCK的使用情况
  • sar -n ALL 1 // 所有的网络状态信息
  • sar -P ALL 1 // 每颗CPU的使用状态信息和IOWAIT统计状态
  • sar -q 1 // 队列的长度(等待运行的进程数)和负载的状态
  • sar -r 1 // 内存和swap空间使用情况
  • sar -u 1 // CPU的使用情况和IOWAIT信息(同默认监控)
  • sar -v 1 // inode, file and other kernel tablesd的状态信息
  • sar -w 1 // 每秒上下文交换的数目
  • sar -W 1 // SWAP交换的统计信息(监控状态同iostat 的si so)
  • sar -y 1 // TTY设备的活动状态

sar -u 1 0 -e 16:00:00 > data.txt: 每隔1秒记录CPU的使用情况,直到15点,数据将保存到data.txt文件中

统计各种指标

  • 怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
  • 怀疑内存存在瓶颈,可用sar -B、sar -r 和 sar -W 等来查看
  • 怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看

命令详解(按照选项字母升序排序),可能部分选项某些系统不支持。

  • -A: 报告所有性能指标
  • -b: 报告IO传送速率
    • tps: 每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的.
    • rtps: 每秒的读请求数
    • wtps: 每秒的写请求数
    • bread/s: 每秒读磁盘的数据块数(in blocks 1 block = 512B, 2.4以后内核)
    • bwrtn/s: 每秒写磁盘的数据块数(in blocks 1 block = 512B, 2.4以后内核)
    • 一般情况下tps=(rtps+wtps)
  • B: 报告页交换速率
    • pgpgin/s: 表示每秒从磁盘或SWAP置换到内存的字节数(KB)
    • pgpgout/s: 表示每秒从内存置换到磁盘或SWAP的字节数(KB)
    • fault/s: 每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
    • majflt/s: 每秒钟产生的主缺页数.
    • pgfree/s: 每秒被放入空闲队列中的页个数
    • pgscank/s: 每秒被kswapd扫描的页个数
    • pgscand/s: 每秒直接被扫描的页个数
    • pgsteal/s: 每秒钟从cache中被清除来满足内存需要的页个数
    • %vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比
  • -c:报告系统调用情况
  • -d: 报告磁盘的使用情况
    • tps: 每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的
    • rd_sec/s: 每秒读扇区的次数.
    • wr_sec/s: 每秒写扇区的次数.
    • avgrq-sz: 平均每次设备I/O操作的数据大小(扇区).
    • avgqu-sz: 磁盘请求队列的平均长度.
    • await: 从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒).
    • svctm: 系统处理每次请求的平均时间,不包括在请求队列中消耗的时间.
    • %util: I/O请求占CPU的百分比,比率越大,说明越饱
  • -g: 报告串口的使用情况
  • -r: 报告内存使用状况
    • kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
    • kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.
    • %memused:物理内存使用率,这个值是kbmemused和内存总量(不包括swap)的一个百分比.
    • kbbufferskbcached:这两个值就是free命令中的buffer和cache.
    • kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
    • %commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.
  • -q: 报告队列的长度(等待运行的进程数)和负载的状态
    runq-sz:处于运行或就绪的进程数量
    plist-sz:现在进程的总数(包括线程).
    ldavg-1:最近一分钟的负载.
    ldavg-5:最近五分钟的负载.
    ldavg-15:最近十分钟的负载.
  • -R: 报告进程的活动情况
  • -n: 报告网络使用情况
    • 常用选项
    • DEV显示网络接口信 息,EDEV显示关于网络错误的统计数据,SOCK显示套接字信息
    • FULL显示所有三个开关。它们可以单独或者一起使用
    • 各列的含义
    • IFACE LAN接口
    • rxpck/s 每秒钟接收的数据包
    • txpck/s 每秒钟发送的数据包
    • rxbyt/s 每秒钟接收的字节数
    • txbyt/s 每秒钟发送的字节数
    • rxcmp/s 每秒钟接收的压缩数据包
    • txcmp/s 每秒钟发送的压缩数据包
    • rxmcst/s 每秒钟接收的多播数据包
    • 选项列表
    • DEV Network interfaces
    • EDEV Network interfaces (errors)
    • NFS NFS client
    • NFSD NFS server
    • SOCK Sockets (v4)
    • IP IP traffic (v4)
    • EIP IP traffic (v4) (errors)
    • ICMP ICMP traffic (v4)
    • EICMP ICMP traffic (v4) (errors)
    • TCP TCP traffic (v4)
    • ETCP TCP traffic (v4) (errors)
    • UDP UDP traffic (v4)
    • SOCK6 Sockets (v6)
    • IP6 IP traffic (v6)
    • EIP6 IP traffic (v6) (errors)
    • ICMP6 ICMP traffic (v6)
    • EICMP6 ICMP traffic (v6) (errors)
    • UDP6 UDP traffic (v6)
    • FC Fibre channel HBAs
    • SOFT Software-based network processing
  • -u: 报告CPU使用率
    %user 用户模式下消耗的CPU时间的比例;
    %nice 通过nice改变了进程调度优先级的进程,在用户模式下消耗的CPU时间的比例
    %system 系统模式下消耗的CPU时间的比例;
    %iowait CPU等待磁盘I/O导致空闲状态消耗的时间比例;
    %steal 利用Xen等操作系统虚拟化技术,等待其它虚拟CPU计算占用的时间比例;
    %idle CPU空闲时间比例;
  • -v:报告进程、I节点、文件和锁表状态
  • -W: 报告页面交换发生状况,页面发生交换时,服务器的吞吐量会大幅下降
    pswpin/s:每秒系统换入的交换页面(swap page)数量
    pswpout/s:每秒系统换出的交换页面(swap page)数量

在不使用参数时默认查看CPU性能:

  • %user: CPU处在用户模式下的时间百分比。
  • %system: CPU处在系统模式下的时间百分比。
  • %iowait: CPU等待输入输出完成时间的百分比。
    %iowait的值过高,表示硬盘存在I/O瓶颈
  • %idle: CPU空闲时间百分比。
    %idle值高,表示CPU较空闲
    如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量
    %idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU

转载请注明出处 系统性能分析工具-sar
喜欢 (2)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址