Linux Perf Analysis in 60s

 Copy from Brendan Gregg

 

 

1、uptime

作用:用于显示系统的负载平均值和运行时间。它提供了关于系统运行了多长时间以及系统在最近1分钟、5分钟和15分钟的平均负载的信息。

[root@VM-8-7-centos ~]# uptime
 15:02:48 up 35 days,  3:35,  2 users,  load average: 0.00, 0.04, 0.05

日志说明:

  • 15:02:48:当前时间是下午 3 点 02 分 48 秒。
  • up 35 days, 3:35:系统已经运行了 35 天零 3 小时 35 分钟。
  • 2 users:当前有 2 个用户登录到系统。
  • load average: 0.00, 0.04, 0.05:系统的平均负载情况,分别表示过去 1 分钟、5 分钟和 15 分钟内的平均负载。这里的负载平均值较低,说明系统目前的负载较轻。

 

2、dmesg -T | tail

作用:查看系统内核消息的最后几行,并以可读的时间格式显示。用于了解系统最近的一些事件和错误信息。

命令说明:

  • dmesg 命令用于查看系统的内核消息。
  • -T 选项用于以可读的时间格式显示消息。
  • | tail 表示将 dmesg -T 的输出通过管道传递给 tail 命令,tail 命令用于显示输出的最后几行(默认是最后 10 行)。

 

3、vmstat -1

作用:用于实时查看系统的虚拟内存统计信息,每秒钟输出一次统计结果。

日志说明:

  • procs:进程相关的统计信息,包括r(运行队列中的进程数)、b(等待资源的进程数)。
  • memory:内存相关的统计信息,包括swpd(使用的虚拟内存大小)、free(空闲的内存大小)、buff(用作缓冲区的内存大小)、cache(用作缓存的内存大小)。
  • swap:交换分区相关的统计信息,包括si(每秒从交换分区写入内存的大小)、so(每秒从内存写入交换分区的大小)。
  • io:磁盘 I/O 相关的统计信息,包括bi(每秒读取的块数)、bo(每秒写入的块数)。
  • system:系统相关的统计信息,包括in(每秒中断的次数)、cs(每秒上下文切换的次数)。
  • cpu:CPU 使用相关的统计信息,包括us(用户空间占用的 CPU 百分比)、sy(系统空间占用的 CPU 百分比)、id(空闲 CPU 百分比)、wa(等待 I/O 的 CPU 百分比)、st(被虚拟机占用的 CPU 百分比)。

4、mpstat -P ALL 1

作用:用于在 Linux 系统中每秒钟显示所有 CPU 核心的统计信息。

命令说明:

  • mpstat:是一个多核 CPU 性能分析工具。
  • -P ALL:表示显示所有 CPU 核心的信息。
  • 1:表示每 1 秒钟输出一次统计信息。

日志说明:

Linux 3.10.0-1160.108.1.el7.x86_64 (VM-8-7-centos)      09/21/2024      _x86_64_        (2 CPU)

03:15:47 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:15:48 PM  all    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.50
03:15:48 PM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:15:48 PM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

03:15:48 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:15:49 PM  all    1.00    0.00    1.00    1.50    0.00    0.00    0.00    0.00    0.00   96.50
03:15:49 PM    0    1.00    0.00    1.00    2.00    0.00    0.00    0.00    0.00    0.00   96.00
03:15:49 PM    1    1.00    0.00    1.00    2.00    0.00    0.00    0.00    0.00    0.00   96.00
具体含义如下:
  • Linux 3.10.0 - 1160.108.1.el7.x86_64 (VM - 8 - 7 - centos):系统信息,包括内核版本和主机名。
  • 09 / 21 / 2024:当前日期。
  • _x86_64_:系统架构。
  • (2 CPU):系统有两个 CPU 核心。

接下来的表格中,每一行表示一个时间点的统计信息:

    • PM:时间,下午。
    • CPU:CPU 核心编号,all 表示所有核心的综合数据。
    • %usr:用户空间占用的 CPU 百分比。
    • %nice:改变过优先级的进程占用的 CPU 百分比。
    • %sys:系统空间占用的 CPU 百分比。
    • %iowait:等待 I / O 的 CPU 百分比。
    • %irq:处理硬件中断的 CPU 百分比。
    • %soft:处理软件中断的 CPU 百分比。
    • %steal:被虚拟机偷走的 CPU 百分比(如果在虚拟机环境中)。
    • %guest:运行虚拟 CPU 的 CPU 百分比。
    • %gnice:高优先级用户空间占用的 CPU 百分比。
    • %idle:空闲 CPU 百分比。

 

5、pidstat 1

作用:用于监控 Linux 系统中进程统计信息的工具。它可以提供关于进程的 CPU 使用情况、内存使用情况、I/O 情况以及上下文切换等信息。

日志说明:

[root@VM-8-7-centos ~]# pidstat 1
Linux 3.10.0-1160.108.1.el7.x86_64 (VM-8-7-centos)      09/21/2024      _x86_64_        (2 CPU)

03:17:53 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
03:17:54 PM     0      2344    0.99    0.00    0.00    0.99     1  barad_agent
03:17:54 PM     0     16424    0.99    0.00    0.00    0.99     0  YDService

03:17:54 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
03:17:55 PM     0     16424    0.00    1.00    0.00    1.00     0  YDService
具体解释如下:
  • Linux 3.10.0 - 1160.108.1.el7.x86_64 (VM - 8 - 7 - centos):系统信息,包括内核版本和主机名。
  • 09 / 21 / 2024:当前日期。
  • _x86_64_:系统架构。
  • (2 CPU):系统有两个 CPU。

接下来的表格中,每一行表示一个时间点的进程统计信息:

  • PM:时间,下午。
  • UID:进程所有者的用户 ID。
  • PID:进程 ID。
  • %usr:进程在用户空间占用的 CPU 百分比。
  • %system:进程在系统空间占用的 CPU 百分比。
  • %guest:进程在虚拟 CPU 上占用的 CPU 百分比(如果有)。
  • %CPU:进程总的 CPU 使用率。
  • CPU:进程运行所在的 CPU 核心编号。
  • Command:进程的命令名。

根据给出的数据,在 03 : 17 : 53 PM 这个时间点,有两个进程被显示:

  • UID 为 0 的进程 2344,命令名为 barad_agent,在用户空间占用了 0.99% 的 CPU。
  • UID 为 0 的进程 16424,命令名为 YDService,在用户空间占用了 0.99% 的 CPU。

在 03 : 17 : 54 PM 这个时间点,同样显示了这两个进程,barad_agent 在用户空间占用了 0.99% 的 CPU,YDService 在用户空间占用了 0.99% 的 CPU。在 03 : 17 : 55 PM 这个时间点,YDService 在系统空间占用了 1.00% 的 CPU,总的 CPU 使用率为 1.00%。总的来说,这段时间内,barad_agent 和 YDService 这两个进程在消耗 CPU 资源

 

6、iostat -xz 1

作用:用于监控系统输入/输出设备和 CPU 使用情况的命令,属于 sysstat 工具包的一部分。

日志说明:

[root@VM-8-7-centos ~]# iostat -xz 1
Linux 3.10.0-1160.108.1.el7.x86_64 (VM-8-7-centos)      09/21/2024      _x86_64_        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.49    0.00    0.58    0.20    0.00   98.73

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     7.24    0.01    6.81     0.36    62.33    18.37     0.01    1.01    5.30    1.00   0.79   0.54
scd0              0.00     0.00    0.00    0.00     0.03     0.00   163.80     0.00    0.72    0.72    0.00   0.35   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.51    0.00    1.53    0.00    0.00   97.96

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.50    0.00    2.01    0.00    0.00   97.49
具体解释如下:
  • Linux 3.10.0 - 1160.108.1.el7.x86_64 (VM - 8 - 7 - centos):系统信息,包括内核版本和主机名。
  • 09 / 21 / 2024:当前日期。
  • _x86_64_:系统架构。
  • (2 CPU):系统有两个 CPU。

接下来的部分分为两部分:

    1. avg - cpu:平均 CPU 统计信息。
      • %user:用户空间占用的 CPU 百分比。
      • %nice:改变过优先级的进程占用的 CPU 百分比。
      • %system:系统空间占用的 CPU 百分比。
      • %iowait:等待 I / O 的 CPU 百分比。
      • %steal:被虚拟机偷走的 CPU 百分比(如果在虚拟机环境中)。
      • %idle:空闲 CPU 百分比。
    2. Device:设备 I/O 统计信息。
      • rrqm / s:每秒合并的读请求数。
      • wrqm / s:每秒合并的写请求数。
      • r / s:每秒的读请求数。
      • w / s:每秒的写请求数。
      • rkB / s:每秒读取的千字节数。
      • wkB / s:每秒写入的千字节数。
      • avgrq - sz:平均每次请求的扇区数。
      • avgqu - sz:平均队列长度。
      • await:平均每次 I / O 等待时间(毫秒)。
      • r_await:平均每次读请求的等待时间(毫秒)。
      • w_await:平均每次写请求的等待时间(毫秒)。
      • svctm:平均每次 I / O 服务时间(毫秒)。
      • %util:设备的利用率。

 

7、free -m

作用:用于显示系统内存的使用情况,单位为兆字节(MB)。

日志说明:

[root@VM-8-7-centos ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1998         239         172           0        1586        1566
Swap:             0           0           0
具体解释如下:
    • total:总内存大小,这里是 1998MB。
    • used:已使用的内存大小,这里是 239MB。
    • free:空闲的内存大小,这里是 172MB。
    • shared:共享内存的大小,这里是 0MB。
    • buff/cache:用作缓冲区和缓存的内存大小,这里是 1586MB。
    • available:可用内存大小,这里是 1566MB。 

8、sar -n DEV 1

作用:每秒钟打印一次网络的统计信息。

日志说明:

[root@VM-8-7-centos ~]# sar -n DEV 1
Linux 3.10.0-1160.108.1.el7.x86_64 (VM-8-7-centos)      09/21/2024      _x86_64_        (2 CPU)

03:28:06 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:28:07 PM br-0e1f084cebba      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:28:07 PM      eth0      7.00      6.00      0.59      1.02      0.00      0.00      0.00
03:28:07 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:28:07 PM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

03:28:07 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:28:08 PM br-0e1f084cebba      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:28:08 PM      eth0      2.00      2.00      0.09      0.26      0.00      0.00      0.00
03:28:08 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:28:08 PM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
具体解释如下:
  • Linux 3.10.0 - 1160.108.1.el7.x86_64 (VM - 8 - 7 - centos):系统信息,包括内核版本和主机名。
  • 09 / 21 / 2024:当前日期。
  • _x86_64_:系统架构。
  • (2 CPU):系统有两个 CPU。

接下来的表格中,每一行表示一个时间点的网络设备统计信息:

  • PM:时间,下午。
  • IFACE:网络接口名称。
  • rxpck/s:每秒接收的数据包数量。
  • txpck/s:每秒发送的数据包数量。
  • rxkB/s:每秒接收的千字节数。
  • txkB/s:每秒发送的千字节数。
  • rxcmp/s:每秒接收的压缩数据包数量。
  • txcmp/s:每秒发送的压缩数据包数量。
  • rxmcst/s:每秒接收的多播数据包数量。

根据给出的数据,在 03 : 28 : 06 PM 这个时间点,网络接口 br - 0e1f084cebbaeth0lo 和 docker0 的统计信息如下:

  • br - 0e1f084cebba:接收和发送的数据包数量均为 0,接收和发送的千字节数也为 0,压缩数据包数量和多播数据包数量也都为 0。
  • eth0:每秒接收 7 个数据包,发送 6 个数据包,接收 0.59 千字节,发送 1.02 千字节,压缩数据包数量为 0。
  • lo:接收和发送的数据包数量均为 0,接收和发送的千字节数也为 0。
  • docker0:接收和发送的数据包数量均为 0,接收和发送的千字节数也为 0。

在 03 : 28 : 07 PM 这个时间点,各个网络接口的统计信息与上一个时间点类似。在 03 : 28 : 08 PM 这个时间点,eth0 每秒接收 2 个数据包,发送 2 个数据包,接收 0.09 千字节,发送 0.26 千字节,其他接口的统计信息仍为 0。总的来说,这段时间内这些网络接口的流量相对较低。

9、sar -n TCP,ETCP 1

作用:每秒钟显示一次 TCP 和 ETCP的统计信息。

日志说明:

[root@VM-8-7-centos ~]# sar -n TCP,ETCP 1
Linux 3.10.0-1160.108.1.el7.x86_64 (VM-8-7-centos)      09/21/2024      _x86_64_        (2 CPU)

03:30:53 PM  active/s passive/s    iseg/s    oseg/s
03:30:54 PM      1.00      0.00      7.00      6.00

03:30:53 PM  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
03:30:54 PM      0.00      0.00      0.00      0.00      0.00

03:30:54 PM  active/s passive/s    iseg/s    oseg/s
03:30:55 PM      0.00      0.00      1.00      1.00

03:30:54 PM  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
03:30:55 PM      0.00      0.00      1.00      0.00      0.00
具体解释如下:
  • active/s:每秒主动打开的 TCP 连接数。
  • passive/s:每秒被动打开的 TCP 连接数。
  • iseg/s:每秒接收的 TCP 段数。
  • oseg/s:每秒发送的 TCP 段数。
  • atmptf/s:每秒尝试的 TCP 连接数。
  • estres/s:每秒处于 ESTABLISHED 状态的 TCP 连接数。
  • retrans/s:每秒重传的 TCP 段数。
  • isegerr/s:每秒接收错误的 TCP 段数。
  • orsts/s:每秒发送 RST(重置)包的数量。

根据给出的数据,在 03:30:53 PM 这个时间点:

  • active/s 为 1.00,表示每秒主动打开 1 个 TCP 连接。
  • passive/s 为 0.00,表示每秒被动打开 0 个 TCP 连接。
  • iseg/s 为 7.00,表示每秒接收 7 个 TCP 段。
  • oseg/s 为 6.00,表示每秒发送 6 个 TCP 段。

在 03:30:54 PM 这个时间点:

  • atmptf/sestres/s 和 isegerr/s 均为 0.00,表示没有相关的活动。
  • retrans/s 为 0.00,表示没有重传的 TCP 段。
  • orsts/s 为 0.00,表示没有发送 RST 包。

 

总的来说,这段时间内 TCP 连接的活动相对较少,没有出现重传、错误或重置等异常情况。

10、top

作用:实时显示系统中各个进程的资源占用情况,包括 CPU 使用率、内存使用情况、进程状态等信息。

日志说明:

执行top命令后,会显示一个动态更新的界面,包含以下主要信息:
  1. 系统概要信息:
    • 当前时间、系统运行时间、登录用户数、系统负载平均值(分别为过去 1 分钟、5 分钟、15 分钟的平均负载)。
  2. 进程列表信息:
    • PID:进程 ID。
    • USER:进程所有者的用户名。
    • PR:进程的优先级。
    • NI:进程的 nice 值。
    • VIRT:进程使用的虚拟内存大小。
    • RES:进程使用的物理内存大小。
    • SHR:进程共享内存的大小。
    • S:进程的状态(如R表示运行中,S表示睡眠中,D表示不可中断的睡眠状态等)。
    • %CPU:进程占用的 CPU 百分比。
    • %MEM:进程占用的内存百分比。
    • TIME+:进程使用的 CPU 时间。
    • COMMAND:进程的命令名。

此外,top命令还提供了一些交互命令,可以用于排序、筛选进程、查看进程详细信息等操作。例如,按下P键可以按照 CPU 使用率对进程进行排序,按下M键可以按照内存使用率进行排序,按下K键可以杀死某个进程等。

posted on 2024-09-21 15:36  王.小辉  阅读(7)  评论(0编辑  收藏  举报

导航