---
title: Workload trace采集工具使用方法分享-官方技术文章-鲲鹏社区
description: Workload trace采集工具（xtrace-qemu）是基于Qemu开源软件实现的指令流、数据流采集工具，主要应用于鲲鹏通算主流业务场景。本文分享xtrace-qemu的基本原理与使用方式，并通过一个简单的demo程序，介绍了如何采集一款应用的指令流和数据流
keywords: Workload,采集工具使用,方法分享,官方技术文章,鲲鹏社区,内核镜像,启动,的通用命令
url: https://www.hikunpeng.com/developer/techArticles/20250605-2?envFlag=1
section: (其他)
---

# Workload trace采集工具使用方法分享-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20250605-2?envFlag=1
描述: Workload trace采集工具（xtrace-qemu）是基于Qemu开源软件实现的指令流、数据流采集工具，主要应用于鲲鹏通算主流业务场景。本文分享xtrace-qemu的基本原理与使用方式，并通过一个简单的demo程序，介绍了如何采集一款应用的指令流和数据流
关键词: Workload,采集工具使用,方法分享,官方技术文章,鲲鹏社区,内核镜像,启动,的通用命令

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

Workload trace采集工具使用方法分享

Workload trace采集工具使用方法分享

安装部署

发表于 2025/06/05

0

xtrace-qemu是鲲鹏workload团队基于Qemu开源软件开发的指令流、数据流采集工具，由于Qemu是一个仿真器，因此我们可以将业务按照基线配置部署在Qemu虚拟机中。xtrace-qemu利用了Qemu的tcg翻译机制，在翻译期添加指令流和寄存器数据记录的逻辑，因此，原业务在虚拟机中压测执行时即可同步采集指令流、数据流信息。

工具获取请联系SA，以静态编译二进制文件提供，无需进行本地部署

## 内核镜像

qemu的本质是一个虚拟机，需要通过镜像来进行创建，切片交付常用的是arm架构的OpenEuler镜像，可以通过官方网站获取

```
$ wget https://repo.openeuler.org/openEuler-20.03-LTS-SP1/virtual_machine_img/aarch64/openEuler-20.03-LTS-SP1.aarch64.qcow2.xz
$ xz -d openEuler-20.03-LTS-SP1-aarch64.qcow2.xz
```

## 启动qemu的通用命令

`$ qemu-system-aarch64 -m 16384 -cpu max,sve=on,sve512=on,sme=on,sme512=on -M virt -bios edk2-aarch64-code.fd -hda openEuler-20.03-LTS-SP1.aarch64.qcow2 -nographic -net nic,model=virtio -net user,hostfwd=tcp::2205-:22 -smp 4`

命令中设置了网络端口为2205，用来通过scp进行文件传输

### 重要通用参数含义：

-m: 设置虚拟机的内存大小，默认单位MB

-cpu：指定cpu类型和特性，sve、sme等表示是否启用armv9的向量扩展、安全内存扩展特性-hda：指定虚拟机使用的镜像文件通过端口映射启动时，使用 -net nic,model=virtio -net user,hostfwd=tcp::2205-:22  （tcp::2205-:22中，2205指主机本地端口号，22指虚拟机映射端口号）通过虚拟网卡启动时，使用 -net nic,model=virtio,macaddr=52:54:00:AA:31:65 -net tap,ifname=tap7,script=no,downscript=no （macaddr可随意指定，不要和其他虚拟机重复，-net tap表示使用虚拟网卡，需要搭网桥）通过设备直通启动时，使用-device vfio-pci,host=7d:00.2,multifunction=on (host中填入的是设备号）-smp：指定虚拟机使用的核数，虚拟机中的核是通过线程模拟，不代表对应物理机的核

### 重要新特性参数含义：

-xtrace-mt：标识访存指令是否携带时间戳，开启访存指令加解锁机制

-xtrace-core：启用核指令流采集

-xtrace-slowdown：设置虚拟机采集时放慢倍数，例-xtrace-slowdown 8000000，用于降低时钟中断触发频率，降低上下文被动切换频率

## qemu

ctrl+A  然后按x

## 文件传输

通过scp的方式进行传输，例如在qemu中获取服务器中文件

`$ scp your_user_name@server_ip:/path/to/file .`

从服务器向qemu中传输文件，如果使用了端口启动，需要通过-P指定端口

`$ scp -P 2205 sth root@server_ip:/path/to/file`

## 插桩采集简单案例

xtrace-qemu中添加了对特殊汇编指令的识别，我们用汇编指令中的hint 9来开启采集，用hint 11结束采集

对于一个简单的C语言程序：

```
#include <stdio.h>

int main()
{
    for (int i = 0; i < 100; i++) {
        //do something
    }
    return 0;
}
```

如果我们想采集第20次循环和第80次循环之间的内容，可以按照如下方法：

```
#include <stdio.h>

int main()
{
    for (int i = 0; i < 100; i++) {
        if (i == 20) {
            __asm__ volatile("hint 9");
        }
        //do something
        if (i == 79) {
           __asm__ volatile("hint 11");
        }
    }
    return 0;
}
```

插桩结束后编译程序为二进制可执行文件，拷贝到xtrace-qemu启动的虚拟机中，执行，即可得到trace文件

本页内容
