A.3. 使用 Systemtap Flight Recorder 在 Constant Basis 上捕获 Trace 数据
您可以使用 qemu-kvm 软件包中提供的 systemtap initscript 来捕获 QEMU 跟踪数据。这个软件包使用 SystemTap 的航班记录器模式跟踪所有正在运行的客户端虚拟机,并将结果保存到主机上的固定大小缓冲中。填充缓冲区时新条目将覆盖旧的 trace 条目。
过程 A.1. 配置并运行 systemtap
安装软件包
运行以下命令安装 systemtap-initscript 软件包:# yum install systemtap-initscript
复制配置文件
运行以下命令,将 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 存储到内存中,或在磁盘中。启动服务
运行以下命令启动 systemtap 服务:# systemctl start systemtap qemu_kvm
使 systemtap 已启用在系统引导时运行
运行以下命令,启用 systemtap 服务以在引导时运行:# systemctl enable systemtap qemu_kvm
确认服务正在运行
运行以下命令确认该服务是否正常工作:# systemctl status systemtap qemu_kvm qemu_kvm is running...
过程 A.2. 检查 trace 缓冲
创建 trace 缓冲转储文件
运行以下命令,创建一个名为 trace.log 的 trace 缓冲转储文件,并将其放置在 tmp 目录中:# staprun -A qemu_kvm >/tmp/trace.log
您可以将文件名和位置更改为其他内容。启动服务
当上一步停止该服务时,运行以下命令再次启动该服务:# systemctl start systemtap qemu_kvm
将 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 文件。