# FAQ

### 使用 perf 或者 systemtap 的方式采集数据，会对后台服务有性能影响吗？

有，但是很小，可以基本忽略不计。

它们使用系统的探针或者使用一些自定义的动态探针进行数据采集，第一对代码无侵入性，它既不需要停止服务，也不需要修改应用程序的代码；第二，它们是以内核模块/内核原生的方式跟踪用户态和内核态的所有事件，并通过一系列优化措施，进行采样统计，对目标服务性能影响极小，大概在 5%左右或者更低的性能损耗。相较于将进程运行在沙箱的 valgrind 工具或静态调试工具 gdb 来说，动态追踪 perf 或者 systemtap 或者 ebpf 的性能损耗基本可以忽略不计。

### 如何在容器中绘制火焰图？

如果是 on-cpu 火焰图可以直接使用`perf record`命令绘制即可

如果是 off-cpu 之类的火焰图，则需要另外分析

若系统/容器支持 ebpf 可以使用 bcc 工具集，使用如下命令绘制 off-cpu 火焰图

```
/usr/share/bcc/tools/offcputime -df -p `pgrep -nx mysqld` 30 > out.stacks
```
