性能剖析与追踪工具(perf/ftrace/bpftrace/USDT)

共 17 题
#

1. perf record -g + FlameGraph 在 on-CPU profiling 的工程价值?

A -g 不采样栈
B FlameGraph 宽度代表调用栈深度
C 火焰图只显示 off-CPU
D -g 采样调用栈,FlameGraph 以宽度=CPU 时间可视化定位 CPU 热点 ✓ 正确答案
#

2. ftrace function_graph 在 off-CPU 自定义 tracepoint 工程的工程价值?

A function_graph 只记录用户态
B function_graph 记录内核函数调用图与耗时,tracepoint 是静态可开关埋点 ✓ 正确答案
C tracepoint 无法开关
D function_graph 不能显示调用链
#

3. BPF ringbuf 相对传统 perf event buffer 在内存共享、减少 per-CPU 数据丢失与唤醒效率上有何改进?各自适用什么场景?

A perf buffer 是共享内存
B ringbuf 共享内存、减少 per-CPU 丢失、高效唤醒,perf buffer 是 per-CPU 易丢失 ✓ 正确答案
C ringbuf 每 CPU 独立丢失
D 两者相同
#

4. Conprof(Linux kernel 6.x cycle-based)在 profiling overhead 的工程取舍?

A 用软件定时器采样开销大
B 用硬件周期采样,开销低、贴近实际 CPU 消耗,适合持续剖析 ✓ 正确答案
C 无需新内核
D 只能剖析用户态
#

5. bpftrace 'tracepoint:syscalls:sys_enter_openat { printf("%s %s\n", comm, str(arg0)); }' 的 syscall 追踪?

A 它打印内核调用栈
B 它在 openat 进入时打印进程名与路径名(arg0 转字符串),追踪文件访问 ✓ 正确答案
C comm 是被打开的文件名
D 它只能追踪 write
#

6. USDT(User Statically-Defined Tracing)在 dtrace-style static probes 的工程价值?

A USDT 是动态符号
B USDT 探针会随代码失效
C USDT 需重启启用
D USDT 是源码预埋的稳定探针,可动态启用、未启用时零开销 ✓ 正确答案
#

7. Pyroscope(Rust-based)在 flamegraph aggregation 的工程价值?

A 它只支持 CPU
B 它只能做单次剖析
C 它是 Rust 持续剖析平台,聚合多实例调用栈生成火焰图,跨语言支持 ✓ 正确答案
D 它不支持火焰图
#

8. uprobes 在 bpftrace / bcc 与 USDT 协同的 user-space function tracing 工程价值?

A uprobe 动态追踪任意用户函数,USDT 是稳定静态探针,有 USDT 优先用 USDT ✓ 正确答案
B uprobe 是源码预埋
C USDT 依赖符号易失效
D uprobe 只能追踪内核
#

9. Parca 在 eBPF-based profiling 的工程价值?

A 必须重编译应用
B 用 eBPF 内核采样栈,无侵入、低开销,适合生产持续剖析 ✓ 正确答案
C eBPF 开销极大
D 只支持单个语言
#

10. bpftrace 的 @hist 与 @lquantize 在 latency histogram 的工程价值?

A @lquantize 覆盖宽范围
B @hist 是线性分桶
C @hist 对数分桶覆盖宽范围,@lquantize 线性分桶细粒度,用于延迟直方图 ✓ 正确答案
D 两者不能做直方图
#

11. perf 与 ftrace 联合,perf 触发 tracepoint → ftrace 抓 latency 的工程价值如何?

A perf 做函数图
B 两者功能完全相同
C ftrace 做全局采样
D perf 全局定位事件,ftrace 深入追踪调用图与延迟,两者互补定位延迟根因 ✓ 正确答案
#

12. 实时信号在 systemtap / perf probe 的工程应用?

A 可追踪实时信号的发送/接收与处理,诊断信号丢失与延迟 ✓ 正确答案
B 实时信号不排队
C probe 无法追踪信号
D 实时信号无数据
#

13. USDT probe 在 libc、OpenSSL probe 数量与 overlap guard 的工程价值?

A 探针激活后固定失效
B 库内无 USDT 探针
C libc/OpenSSL 内置 USDT 探针可追踪关键路径,overlap guard 保证探针有效 ✓ 正确答案
D overlap guard 会放大开销
#

14. Datadog Continuous Profiler 在 AL2 hardware profiler 的工程价值?

A 只能手动触发
B 持续采样生产调用栈,硬件采样低开销,与 trace 关联定位热点 ✓ 正确答案
C 硬件采样开销极大
D 与 trace 无关
#

15. USDT 相对 dynamic uprobe 的 env overhead?

A uprobe 源码预埋
B USDT 启用后开销极大
C USDT 未启用零开销、启用低开销且稳定,uprobe 动态灵活但需断点处理 ✓ 正确答案
D USDT 无需预埋
#

16. perf 的采样模式,perf record/report 与硬件计数器(PMC)如何配合?

A perf 只能计数不能采样
B perf record 用 PMC 采样栈与事件,perf report 展示热点,采样开销低 ✓ 正确答案
C PMC 是软件计数器
D perf report 不展示调用栈
#

17. USDT 探针与动态追踪,bpftrace 的一行脚本如何定位问题?

A bpftrace 只能追踪内核
B bpftrace 用 usdt:/uprobe: 语法 attach 探针,一行脚本统计调用/延迟快速定位 ✓ 正确答案
C USDT 探针无法被 bpftrace attach
D 一行脚本不能打印参数