A.3. 使用 Systemtap Flight Recorder 在 Constant Basis 上捕获 Trace 数据
您可以使用 qemu-kvm 软件包中提供的 systemtap initscript 来捕获 QEMU 跟踪数据。这个软件包使用 SystemTap 的航班记录器模式跟踪所有正在运行的客户端虚拟机,并将结果保存到主机上的固定大小缓冲中。填充缓冲区时新条目将覆盖旧的 trace 条目。
过程 A.1. 配置并运行 systemtap
安装软件包
运行以下命令安装 systemtap-initscript 软件包:yum install systemtap-initscript
# yum install systemtap-initscript
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 复制配置文件
运行以下命令,将 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/
# 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/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要启用的追踪事件集合在 qemu_kvm.stp 中给出。可以自定义此 SystemTap 脚本来添加或删除/usr/share/systemtap/tapset/qemu-kvm-simpletrace.stp
中提供的 trace 事件。可以对qemu_kvm.conf
进行 SystemTap 自定义,以控制动态记录器缓冲区的大小,以及是否要将 trace 存储到内存中,或在磁盘中。启动服务
运行以下命令启动 systemtap 服务:systemctl start systemtap qemu_kvm
# systemctl start systemtap qemu_kvm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使 systemtap 已启用在系统引导时运行
运行以下命令,启用 systemtap 服务以在引导时运行:systemctl enable systemtap qemu_kvm
# systemctl enable systemtap qemu_kvm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认服务正在运行
运行以下命令确认该服务是否正常工作:systemctl status systemtap qemu_kvm
# systemctl status systemtap qemu_kvm qemu_kvm is running...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
过程 A.2. 检查 trace 缓冲
创建 trace 缓冲转储文件
运行以下命令,创建一个名为 trace.log 的 trace 缓冲转储文件,并将其放置在 tmp 目录中:staprun -A qemu_kvm >/tmp/trace.log
# staprun -A qemu_kvm >/tmp/trace.log
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以将文件名和位置更改为其他内容。启动服务
当上一步停止该服务时,运行以下命令再次启动该服务:systemctl start systemtap qemu_kvm
# systemctl start systemtap qemu_kvm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 trace 内容转换为可读的格式
要将 trace 文件内容转换为更易读的格式,请输入以下命令:/usr/share/qemu-kvm/simpletrace.py --no-header /usr/share/qemu-kvm/trace-events /tmp/trace.log
# /usr/share/qemu-kvm/simpletrace.py --no-header /usr/share/qemu-kvm/trace-events /tmp/trace.log
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
注意
应该注意以下几点和限制:
- systemtap 服务默认为禁用。
- 启用此服务时,性能较小,但它取决于启用了哪些事件。
/usr/share/doc/qemu-kvm-*/README.systemtap
中有一个 README 文件。