linux:使用sar诊断问题

使用sar诊断问题

      • [1. CPU 使用情况](#1. CPU 使用情况)
      • [2. 内存与交换](#2. 内存与交换)
      • [3. 磁盘 I/O 活动](#3. 磁盘 I/O 活动)
      • [4. 网络 I/O 活动](#4. 网络 I/O 活动)
      • [5. 进程与上下文切换](#5. 进程与上下文切换)
      • [6. 系统调用与文件活动](#6. 系统调用与文件活动)
      • [7. 电源管理](#7. 电源管理)
      • [8. 延迟分析](#8. 延迟分析)
      • [9. 系统全局统计](#9. 系统全局统计)
      • [10. 查看历史记录](#10. 查看历史记录)
      • [11. 特定时间段](#11. 特定时间段)
      • [12. 自动定时采样](#12. 自动定时采样)
      • 其他参数:
      • 使用实例:

sar(System Activity Reporter)是 sysstat 工具包中的命令,用于收集、报告和保存各种系统活动的统计信息。它可以监控 CPU、内存、磁盘 I/O、网络等多种资源的使用情况。你可以通过不同的参数来获取不同类型的系统活动统计。

以下是 sar 命令的常见参数及其详细解释:

1. CPU 使用情况

  • sar -u:报告 CPU 的整体使用情况,包括用户、系统、空闲等时间的百分比。
  • sar -u [间隔] [次数]:每隔一段时间采集一次 CPU 使用数据并报告多次。
  • sar -P:报告每个 CPU 的使用情况。
  • sar -P ALL:报告所有 CPU 的使用情况。
  • sar -P <CPU>:报告指定 CPU 的使用情况。

sar -u 输出内容解释:

[baichao@localhost linux-5.6]$ sar -u 1 3
Linux 3.10.0-1160.102.1.el7.x86_64 (localhost.localdomain)      10/11/2024      _x86_64_        (8 CPU)

03:32:22 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
03:32:23 AM     all     99.43      0.00      0.57      0.00      0.00      0.00
03:32:24 AM     all     99.42      0.00      0.58      0.00      0.00      0.00
03:32:25 AM     all     99.41      0.00      0.59      0.00      0.00      0.00
Average:        all     99.42      0.00      0.58      0.00      0.00      0.00

参数解释:

  • sar -u 1 3:表示每秒采样一次 CPU 数据,并输出 3 次。

各列的含义:

  • %user:用户空间进程的 CPU 使用率(执行应用程序的时间占用率)。
  • %nice :带有正优先级(nice 值)的用户进程的 CPU 使用率。
  • %system:内核空间(系统级)进程的 CPU 使用率(执行系统调用和内核操作的时间占用率)。
  • %iowait:等待 I/O 操作完成的时间占 CPU 总时间的百分比。值越高,说明系统可能有 I/O 瓶颈。
  • %steal:虚拟机管理程序(hypervisor)从该虚拟机"窃取"的 CPU 时间。
  • %idle :空闲时间,即 CPU 无事可做的时间。如果系统在繁忙的情况下有较高的 idle 值,可能有资源调度或系统瓶颈问题。

通过 sar -u,可以分析系统的 CPU 性能,了解 CPU 是处于忙碌状态还是有足够的空闲资源,以及是否有 I/O 或 CPU 相关的瓶颈。

2. 内存与交换

  • sar -r:报告内存的使用情况,包括物理内存和交换空间的统计数据。

    • 包括 kbmemfree(空闲物理内存)、kbmemused(已用物理内存)、%memused(已用内存百分比)、kbswpfree(空闲交换空间)等。
  • sar -S:报告交换空间的活动情况,包括交换入和交换出的数据量。

    • 包括 pswpin/s(每秒交换到内存中的页数)、pswpout/s(每秒交换到磁盘中的页数)。

你运行的 sar -r 命令用于显示 Linux 系统中的内存使用情况。它生成了一段时间内的内存使用统计,包括空闲内存、已使用内存、缓存和缓冲区等信息。

[baichao@localhost linux-5.6]$ sar -r
Linux 3.10.0-1160.102.1.el7.x86_64 (localhost.localdomain)      10/11/2024      _x86_64_        (8 CPU)

03:30:02 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
03:40:01 AM  11165664   5081720     31.28      2108   2923356   2114924      8.63   3930476    587340         0
03:50:01 AM  11160444   5086940     31.31      2108   2923364   2181620      8.90   3933536    587348         0
04:00:02 AM  11156368   5091016     31.33      2108   2923372   2181004      8.90   3936384    586940         4
Average:     11160825   5086559     31.31      2108   2923364   2159183      8.81   3933465    587209         1

04:00:40 AM       LINUX RESTART

各列的含义:

  1. kbmemfree:系统中空闲的内存,以 KB 为单位。

  2. kbmemused:系统中已使用的内存,以 KB 为单位。

  3. %memused:已使用内存占总内存的百分比。

  4. kbbuffers:用于存储硬盘数据的缓冲区大小(以 KB 为单位),这部分内存将用于硬盘 I/O 操作。

  5. kbcached:文件系统缓存的大小(以 KB 为单位),这部分内存用于缓存常用的文件数据,以提高访问速度。

  6. kbcommit:已提交的内存大小(以 KB 为单位),表示需要保证的内存大小,即使系统过度使用交换空间。这个数值包括所有正在使用或即将被使用的内存。

  7. %commit:已提交内存占系统内存的百分比。

  8. kbactive:处于活动状态的内存(以 KB 为单位),这些内存正在被频繁访问。

  9. kbinact:处于非活动状态的内存(以 KB 为单位),这些内存包含不经常使用的数据,但仍然保留在内存中以便快速访问。

  10. kbdirty:当前等待写入到磁盘的脏页(以 KB 为单位),表示修改过但尚未写入磁盘的数据。

    第一行的数据可以理解为:

    • 03:30:02 AM 时间点:
    • 系统有 11165664 KB 的空闲内存,已使用内存为 5081720 KB,已使用内存占 31.28%
    • 缓冲区大小为 2108 KB,文件缓存大小为 2923356 KB
    • 已提交的内存为 2114924 KB,提交率为 8.63%
    • 活动内存为 3930476 KB,非活动内存为 587340 KB,脏数据为 0 KB

重新启动信息

bash 复制代码
04:00:40 AM       LINUX RESTART

这个表示系统或 sysstat 服务在 04:00:40 AM 重新启动,所有统计从这个时间开始重新计算。

总结:

  • 该输出显示系统从 03:30 到 04:00 的内存使用情况。
  • 系统平均使用了大约 31.31% 的物理内存,空闲内存大约是 11160825 KB,文件缓存和缓冲区数据量稳定。
  • 系统的内存使用相对较低,kbdirty 数据很少,表示几乎没有脏数据等待写入磁盘。
  • 最后,系统在 04:00:40 进行了重启,可能是计划任务或手动重启的结果。

3. 磁盘 I/O 活动

  • sar -b:报告块设备的 I/O 传输情况。

    • 包括 tps(每秒传输数)、rtps(每秒读请求数)、wtps(每秒写请求数)、bread/s(每秒从设备读取的块数)等。
  • sar -d :报告每个设备的 I/O 活动情况(需要启用 sadf)。

    • 包括 tpsrd_sec/swr_sec/s 等设备读写统计。

      [baichao@localhost linux-5.6]$ sar -b
      Linux 3.10.0-1160.102.1.el7.x86_64 (localhost.localdomain) 10/11/2024 x86_64 (8 CPU)

      03:30:02 AM tps rtps wtps bread/s bwrtn/s
      03:40:01 AM 3.24 1.49 1.75 102.16 125.10
      03:50:01 AM 0.10 0.00 0.10 0.00 0.88
      04:00:02 AM 0.08 0.00 0.08 0.00 0.64
      Average: 1.14 0.50 0.64 34.00 42.15

      04:00:40 AM LINUX RESTART

      04:10:01 AM tps rtps wtps bread/s bwrtn/s
      04:20:01 AM 0.21 0.00 0.21 0.03 2.81
      Average: 0.21 0.00 0.21 0.03 2.81

每一列代表不同的块设备 I/O 指标:

  1. tps :每秒传输的块数(transactions per second),表示每秒进行的读写请求的总数。3.24 ,表示每秒进行约 3.24 次读写请求。
  2. rtps :每秒读取的块数(reads per second),表示每秒进行的读取请求的数量。1.49 ,表示每秒进行约 1.49 次读取请求。
  3. wtps :每秒写入的块数(writes per second),表示每秒进行的写入请求的数量。1.75 ,表示每秒进行约 1.75 次写入请求。
  4. bread/s :每秒读取的块数(bytes read per second),表示每秒从块设备读取的数据量,以字节为单位。 102.16 ,表示每秒读取的数据量约为 102.16 字节
  5. bwrtn/s :每秒写入的块数(bytes written per second),表示每秒写入到块设备的数据量,以字节为单位。125.10 ,表示每秒写入的数据量约为 125.10 字节

4. 网络 I/O 活动

  • sar -n:报告网络活动。

  • sar -n DEV:显示网络接口的统计数据,包括传输和接收的字节数、数据包数等。

  • sar -n EDEV:显示带有错误的网络设备统计信息。

  • sar -n SOCK:显示 TCP/IP 套接字的统计数据。

  • sar -n IP:显示 IP 协议的统计数据,如发送、接收、转发的 IP 数据包。

  • sar -n TCP:显示 TCP 连接的统计数据。

  • sar -n UDP:显示 UDP 统计数据。

    sar -n DEV -f /var/log/sa/sa01:查看本月 1 号的网卡流量情况
    sar -n SOCK -f /var/log/sa/sa01:查看本月 1 号的网络连接情况

5. 进程与上下文切换

  • sar -w:报告进程上下文切换的统计信息。

    • 包括 proc/s(每秒创建的进程数)、cswch/s(每秒上下文切换次数)。
  • sar -q:报告系统负载(包括运行队列和等待队列长度)。

6. 系统调用与文件活动

  • sar -v:报告文件表、inode 表、缓冲区和内核内部的相关信息。

    • 包括 dentunusd(未使用的目录项)、file-nr(文件表中的打开文件数量)等。
  • sar -y:报告 TTY 设备活动(终端设备)。

7. 电源管理

  • sar -m :报告电源状态统计信息,适用于带有电池的设备。
    • sar -m POWER:显示电源的消耗状态。

8. 延迟分析

  • sar -B :报告分页活动的统计信息。
    • 包括 pgpgin/s(每秒交换到内存中的页数)、pgpgout/s(每秒交换到磁盘中的页数)。

9. 系统全局统计

  • sar -A :报告所有可用的系统活动统计信息的综合报告。
    • 通常是最全面的报告方式,适合需要了解系统整体性能的情况。

10. 查看历史记录

  • sar -f <文件> :从指定的文件中读取历史数据(通常是 /var/log/sa/ 目录下的文件)。
    • 可用于查看过去的性能数据。

11. 特定时间段

  • sar -s <起始时间> -e <结束时间> :报告在特定时间段内的数据。
    • 格式为 HH:MM:SS,例如:sar -s 08:00:00 -e 12:00:00 会报告从 08:00 到 12:00 之间的系统活动。

12. 自动定时采样

  • crontab 配置sar 通常结合 crond,通过定时任务自动采集系统性能数据,配置文件一般在 /etc/cron.d/sysstat

其他参数:

  • -h:生成更易读的格式(例如将 kB 格式化为 MB)。
  • -o <文件>:将报告输出到指定的文件中,供以后分析。
  • -i <间隔>:设置采样间隔时间(单位:秒)。

使用实例:

  • 查看实时 CPU 使用率sar -u 1 5 (每秒采集一次,共采集 5 次)
  • 查看过去的网络流量情况sar -n DEV -f /var/log/sa/sa10
相关推荐
深圳安锐科技有限公司39 分钟前
首次接触结构安全自动化监测系统,价格高吗?后期维护?
运维·自动化
冬天vs不冷1 小时前
Linux用户与权限管理详解
linux·运维·chrome
凯子坚持 c2 小时前
深入Linux权限体系:守护系统安全的第一道防线
linux·运维·系统安全
✿ ༺ ོIT技术༻2 小时前
C++11:新特性&右值引用&移动语义
linux·数据结构·c++
摸鱼也很难5 小时前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
watermelonoops5 小时前
Deepin和Windows传文件(Xftp,WinSCP)
linux·ssh·deepin·winscp·xftp
woshilys5 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
疯狂飙车的蜗牛6 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程7 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
Michaelwubo8 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器