28.3. 使用所选 bcc-tools 进行性能调整


使用 BPF Compiler Collection (BCC)库中的某些预先创建的程序来在每个事件基础上高效、安全地分析系统性能。BCC 库中预创建的程序集可作为创建其他程序的示例。

先决条件

流程

  • 使用 execsnoop 检查新系统进程。

    1. 在一个终端中运行 execsnoop 程序:

      # /usr/share/bcc/tools/execsnoop
      Copy to Clipboard Toggle word wrap
    2. 要创建 ls 命令的短期进程,请在另一个终端中输入:

      $ ls /usr/share/bcc/tools/doc/
      Copy to Clipboard Toggle word wrap
    3. 运行 execsnoop 的终端显示类似如下的输出:

      PCOMM	PID    PPID   RET ARGS
      ls   	8382   8287     0 /usr/bin/ls --color=auto /usr/share/bcc/tools/doc/
      ...
      Copy to Clipboard Toggle word wrap

      execsnoop 程序为每个消耗系统资源的新进程的打印一行输出。它甚至会检测很快运行的程序(如 ls )的进程,大多数监控工具也不会进行注册。

      execsnoop 输出显示以下字段:

      PCOMM
      进程名称。(ls)
      PID
      进程 ID。(8382)
      PPID
      父进程 ID。(8287)
      RET
      exec() 系统调用的返回值(0),其将程序代码加载到新进程中。
      ARGS
      启动的程序的参数的位置。

      要查看 execsnoop 的详情、示例和选项,请参阅 /usr/share/bcc/tools/doc/execsnoop_example.txt 文件。有关 exec () 的详情,请查看 exec (3) 手册页。

  • 使用 opensnoop 跟踪命令打开的文件。

    1. 在一个终端中,运行 opensnoop 程序,来打印仅由 uname 命令的进程打开的文件的输出:

      # /usr/share/bcc/tools/opensnoop -n uname
      Copy to Clipboard Toggle word wrap
    2. 在另一个终端中,输入以下命令来打开某些文件:

      $ uname
      Copy to Clipboard Toggle word wrap
    3. 运行 opensnoop 的终端显示类似如下的输出:

      PID    COMM 	FD ERR PATH
      8596   uname 	3  0   /etc/ld.so.cache
      8596   uname 	3  0   /lib64/libc.so.6
      8596   uname 	3  0   /usr/lib/locale/locale-archive
      ...
      Copy to Clipboard Toggle word wrap

      opensnoop 程序在整个系统中监视 open () 系统调用,并为 uname 尝试打开的每个文件打印一行输出。

      opensnoop 输出显示以下字段:

      PID
      进程 ID。(8596)
      COMM
      进程名称。(uname)
      FD
      文件描述符 - open() 返回的值,以指向打开的文件。(3)
      ERR
      任何错误。
      PATH
      open() 试图打开的文件的位置。

      如果命令尝试读取不存在的文件,则 FD 列返回 -1ERR 列将打印与相关错误对应的值。因此,Opennoop 可以帮助您识别行为不正确的应用程序。

      要查看 opensnoop 的更多详细信息、示例和选项,请参阅 /usr/share/bcc/tools/doc/opensnoop_example.txt 文件。有关 open () 的更多信息,请参阅 open (2) 手册页。

  • 使用 biotop 监控磁盘上执行 I/O 操作的主要进程。

    1. 在一个终端中使用参数 30 运行 biotop 程序,来生成 30 秒概述:

      # /usr/share/bcc/tools/biotop 30
      Copy to Clipboard Toggle word wrap
      注意

      如果未提供任何参数,则默认情况下输出屏幕会每 1 秒刷新一次。

    2. 在另一个终端中,输入命令来从本地硬盘设备读取内容,并将输出写到 /dev/zero 文件中:

      # dd if=/dev/vda of=/dev/zero
      Copy to Clipboard Toggle word wrap

      此步骤会生成特定的 I/O 流量来演示 biotop

    3. 运行 biotop 的终端显示类似如下的输出:

      PID    COMM             D MAJ MIN DISK       I/O  Kbytes     AVGms
      9568   dd               R 252 0   vda      16294 14440636.0  3.69
      48     kswapd0          W 252 0   vda       1763 120696.0    1.65
      7571   gnome-shell      R 252 0   vda        834 83612.0     0.33
      1891   gnome-shell      R 252 0   vda       1379 19792.0     0.15
      7515   Xorg             R 252 0   vda        280  9940.0     0.28
      7579   llvmpipe-1       R 252 0   vda        228  6928.0     0.19
      9515   gnome-control-c  R 252 0   vda         62  6444.0     0.43
      8112   gnome-terminal-  R 252 0   vda         67  2572.0     1.54
      7807   gnome-software   R 252 0   vda         31  2336.0     0.73
      9578   awk              R 252 0   vda         17  2228.0     0.66
      7578   llvmpipe-0       R 252 0   vda        156  2204.0     0.07
      9581   pgrep            R 252 0   vda         58  1748.0     0.42
      7531   InputThread      R 252 0   vda         30  1200.0     0.48
      7504   gdbus            R 252 0   vda          3  1164.0     0.30
      1983   llvmpipe-1       R 252 0   vda         39   724.0     0.08
      1982   llvmpipe-0       R 252 0   vda         36   652.0     0.06
      ...
      Copy to Clipboard Toggle word wrap

      biotop 输出显示以下字段:

      PID
      进程 ID。(9568)
      COMM
      进程名称。(dd)
      DISK
      执行读操作的磁盘。(vda)
      I/O
      执行的读操作的数量。(16294)
      Kbytes
      读操作达到的 Kbytes 量。(14,440,636)
      AVGms
      读操作的平均 I/O 时间。(3.69)

      有关 biotop 的详情、示例和选项,请查看 /usr/share/bcc/tools/doc/biotop_example.txt 文件。有关 dd 的更多信息,请参阅 dd (1) 手册页。

  • 使用 xfsslower 来公开意外慢的文件系统操作。

    xfsslower 测量 XFS 文件系统执行读、写、打开或同步(fsync)操作所花费的时间。1 参数可确保程序仅显示比 1 ms 较慢的操作。

    1. 在一个终端中运行 xfsslower 程序:

      # /usr/share/bcc/tools/xfsslower 1
      Copy to Clipboard Toggle word wrap
      注意

      如果未提供任何参数,xfsslower 默认会显示比 10 ms 慢的操作。

    2. 在另一个终端中,输入以下命令在 vim 编辑器中创建一个文本文件,来开始与 XFS 文件系统进行交互:

      $ vim text
      Copy to Clipboard Toggle word wrap
    3. 运行 xfsslower 的终端显示在保存上一步中的文件时:

      TIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
      13:07:14 b'bash'        4754   R 256     0           7.11 b'vim'
      13:07:14 b'vim'         4754   R 832     0           4.03 b'libgpm.so.2.1.0'
      13:07:14 b'vim'         4754   R 32      20          1.04 b'libgpm.so.2.1.0'
      13:07:14 b'vim'         4754   R 1982    0           2.30 b'vimrc'
      13:07:14 b'vim'         4754   R 1393    0           2.52 b'getscriptPlugin.vim'
      13:07:45 b'vim'         4754   S 0       0           6.71 b'text'
      13:07:45 b'pool'        2588   R 16      0           5.58 b'text'
      ...
      Copy to Clipboard Toggle word wrap

      每行代表文件系统中的一个操作,它花费的时间超过特定阈值。xfsslower 检测可能的文件系统问题,其表现为意外的慢操作。

      xfsslower 输出显示以下字段:

      COMM
      进程名称。(b'bash')
      T

      操作类型。(R)

      • Read
      • Write
      • Sync
      OFF_KB
      KB 为单位的文件偏移。(0)
      FILENAME
      读、写或同步的文件。

      要查看 xfsslower 的详情、示例和选项,请参阅 /usr/share/bcc/tools/doc/xfsslower_example.txt 文件。有关 fsync 的详情,请参考 fsync (2) 手册页。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat