SAR (System Activity Reporter)

在这里记录一下 sar 输出的解释,以及输出的指标有什么作用。
其实都在 mannual 中说的很清楚了,在这里记录只是加深自己的理解和分析这些参数可以知道什么。

  1. sar 功能:
  • sar 收集系统的性能数据,包括 CPU 使用率、内存使用情况、磁盘IO、网络流量等,并以可读的格式呈现。
  • sar 还可以生成历史数据报告,帮助管理员了解系统的负载、趋势和峰值。
  1. 常用参数:
  • -u:CPU使用情况
  • -r:内存使用情况
  • -b:磁盘IO情况
  • -n:网络流量情况
  • -q:负载情况

CPU

下面命令每隔 1 秒输出所有信息一次,总共输出 10 次。

1
sar -u ALL 1 10

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Linux 6.8.4-arch1-1 (xun) 	04/16/2024 	_x86_64_	(20 CPU)

10:21:16 AM CPU %usr %nice %sys %iowait %steal %irq %soft %guest %gnice %idle
10:21:17 AM all 0.75 0.00 0.60 0.00 0.00 0.15 0.05 0.00 0.00 98.45
10:21:18 AM all 0.61 0.00 0.35 0.00 0.00 0.10 0.05 0.00 0.00 98.89
10:21:19 AM all 2.31 0.00 0.70 0.00 0.00 0.25 0.05 0.00 0.00 96.69
10:21:20 AM all 0.85 0.00 0.55 0.05 0.00 0.15 0.05 0.00 0.00 98.35
10:21:21 AM all 0.55 0.00 0.55 0.00 0.00 0.00 0.15 0.00 0.00 98.75
10:21:22 AM all 0.70 0.00 0.30 0.00 0.00 0.15 0.15 0.00 0.00 98.69
10:21:23 AM all 0.50 0.00 0.25 0.00 0.00 0.05 0.00 0.00 0.00 99.19
10:21:24 AM all 0.55 0.00 0.30 0.00 0.00 0.10 0.00 0.00 0.00 99.05
10:21:25 AM all 0.35 0.00 0.30 0.00 0.00 0.10 0.10 0.00 0.00 99.15
10:21:26 AM all 0.65 0.00 0.30 0.00 0.00 0.15 0.05 0.00 0.00 98.85
Average: all 0.78 0.00 0.42 0.01 0.00 0.12 0.07 0.00 0.00 98.61
  1. %user / %usr

    • %user%usr 表示 CPU 在执行用户级别(应用程序)任务时的利用率。这包括处理运行在用户空间的应用程序和处理器等待其工作完成的时间。高的 %user 值可能表示系统上有许多用户级别任务在运行。
    • 示例:%user%usr 在 50% 以上,可能表示系统上有大量用户级别任务正在运行。

    这两个指标的区别在于是否包括运行虚拟处理器的时间。%user 包括,%usr 不包括。

  2. %nice

    • %nice 表示 CPU 在执行用户级别(应用程序)任务,并具有 nice 优先级的任务时的利用率。nice 值较高的任务具有较低的优先级。
    • 示例:%nice 在 10% 以上,可能表示有一些优先级较低的任务正在执行。
  3. %system / %sys

    • %system%sys 表示 CPU 在执行系统级别(内核)任务时的利用率。这包括内核运行的系统任务、处理中断和执行系统调用的时间。
    • 示例:%system%sys 在 20% 以上,可能表示系统内核在执行大量的系统级别任务或处理中断。

    %system 包括服务硬件和软件中断的时间,%sys 不包括。

  4. %iowait

    • %iowait 表示 CPU 在等待磁盘 IO 完成时的空闲时间百分比。如果此值较高,则表示系统中有较多的 IO 操作正在进行,可能存在 IO 瓶颈。
    • 示例:%iowait 在 30% 以上,可能表示系统中存在磁盘 IO 瓶颈。但只是可能,因为 iowait 是以一个 CPU 的角度的状态,而不是以进程的状态。

      参考 iowait 的含义

  5. %steal

    • %steal 表示在虚拟化环境中,CPU 被其他虚拟处理器占用时的时间百分比。这可能由于宿主系统或其他虚拟机的高 CPU 使用率导致。
    • 示例:%steal 在 5% 以上,可能表示虚拟化环境中 CPU 竞争较高。
  6. %irq / %soft

    • %irq 表示 CPU 用于处理硬件中断的时间百分比,而 %soft 表示 CPU 用于处理软件中断的时间百分比。高的值可能表示系统中有较多的中断发生。
    • 示例:%irq%soft 在 5% 以上,可能表示系统中有大量的中断发生。
  7. %guest / %gnice

    • %guest%gnice 表示 CPU 用于运行虚拟处理器的时间百分比,或者用于运行具有 nice 优先级的虚拟处理器的时间百分比。
    • 示例:%guest%gnice 在 10% 以上,可能表示虚拟化环境中的虚拟处理器占用较多 CPU 资源。
  8. %idle

    • %idle 表示 CPU 空闲且系统没有未完成的磁盘 IO 请求的时间百分比。较高的 %idle 值表示系统的 CPU 使用率较低。
    • 示例:%idle 在 60% 以上,表示系统中的 CPU 大部分时间处于空闲状态。

iostat 输出参数中关于 CPU 的差不多。

Memory

  1. kbmemused

    • 表示已使用的内存量(以千字节为单位),计算公式为总安装内存 - kbmemfree - kbbuffers - kbcached - kbslab。
  2. %memused

    • 表示已使用内存的百分比。
  3. kbbuffers

    • 表示内核用作缓冲区的内存量(以千字节为单位)。
  4. kbcached

    • 表示内核用作缓存的数据内存量(以千字节为单位)。
  5. kbcommit

    • 表示当前工作负载所需的内存量(以千字节为单位),是确保系统永远不会发生内存不足的估计值,包括 RAM 和 swap 需要的内存。
  6. %commit

    • 表示当前工作负载所需内存的百分比,相对于总内存(RAM+swap)。由于内核通常会过度承诺内存,因此此数字可能大于 100%。
  7. kbactive

    • 表示活跃内存量(以千字节为单位),最近使用且通常不会被回收的内存。
  8. kbinact

    • 表示非活跃内存量(以千字节为单位),较长时间未被使用,更容易被回收以用于其他目的的内存。
  9. kbdirty

    • 表示等待写回磁盘的内存量(以千字节为单位)。
  10. kbanonpg

    • 表示映射到用户空间页表中的非文件备份页面的内存量(以千字节为单位)。
  11. kbslab

    • 表示内核用于缓存数据结构的内存量(以千字节为单位)。
  12. kbkstack

    • 表示用于内核堆栈空间的内存量(以千字节为单位)。
  13. kbpgtbl

    • 表示用于最低级别页表的内存量(以千字节为单位)。
  14. kbvmused

    • 表示已使用的虚拟地址空间的内存量(以千字节为单位)。