Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

A.3. 使用 Systemtap Flight Recorder 在 Constant Basis 上捕获 Trace 数据

您可以使用 qemu-kvm 软件包中提供的 systemtap initscript 来捕获 QEMU 跟踪数据。这个软件包使用 SystemTap 的航班记录器模式跟踪所有正在运行的客户端虚拟机,并将结果保存到主机上的固定大小缓冲中。填充缓冲区时新条目将覆盖旧的 trace 条目。

过程 A.1. 配置并运行 systemtap

  1. 安装软件包

    运行以下命令安装 systemtap-initscript 软件包:
    # yum install systemtap-initscript
  2. 复制配置文件

    运行以下命令,将 systemtap 脚本和配置文件复制到 systemtap 目录中:
    # cp /usr/share/qemu-kvm/systemtap/script.d/qemu_kvm.stp /etc/systemtap/script.d/
    # cp /usr/share/qemu-kvm/systemtap/conf.d/qemu_kvm.conf /etc/systemtap/conf.d/
    要启用的追踪事件集合在 qemu_kvm.stp 中给出。可以自定义此 SystemTap 脚本来添加或删除 /usr/share/systemtap/tapset/qemu-kvm-simpletrace.stp 中提供的 trace 事件。
    可以对 qemu_kvm.conf 进行 SystemTap 自定义,以控制动态记录器缓冲区的大小,以及是否要将 trace 存储到内存中,或在磁盘中。
  3. 启动服务

    运行以下命令启动 systemtap 服务:
    # systemctl start systemtap qemu_kvm
  4. 使 systemtap 已启用在系统引导时运行

    运行以下命令,启用 systemtap 服务以在引导时运行:
    # systemctl enable systemtap qemu_kvm
  5. 确认服务正在运行

    运行以下命令确认该服务是否正常工作:
    # systemctl status systemtap qemu_kvm
    qemu_kvm is running...
    

过程 A.2. 检查 trace 缓冲

  1. 创建 trace 缓冲转储文件

    运行以下命令,创建一个名为 trace.log 的 trace 缓冲转储文件,并将其放置在 tmp 目录中:
    # staprun -A qemu_kvm >/tmp/trace.log
    您可以将文件名和位置更改为其他内容。
  2. 启动服务

    当上一步停止该服务时,运行以下命令再次启动该服务:
    # systemctl start systemtap qemu_kvm
  3. 将 trace 内容转换为可读的格式

    要将 trace 文件内容转换为更易读的格式,请输入以下命令:
    # /usr/share/qemu-kvm/simpletrace.py --no-header /usr/share/qemu-kvm/trace-events /tmp/trace.log
注意
应该注意以下几点和限制:
  • systemtap 服务默认为禁用。
  • 启用此服务时,性能较小,但它取决于启用了哪些事件。
  • /usr/share/doc/qemu-kvm-*/README.systemtap 中有一个 README 文件。