eBPF、XDP 与性能追踪工具链

共 85 题
#

1. eBPF(extended BPF)的 verifier 与 JIT 编译

A verifier 只编译字节码
B verifier 静态校验程序安全,JIT 把字节码编译为原生指令 ✓ 正确答案
C JIT 负责安全检查
D eBPF 无需校验即可运行
#

2. TLS offload(kTLS)的"加密零拷贝"

A kTLS 与性能无关
B kTLS 在用户态完成加密
C kTLS 增加拷贝次数
D kTLS 把 TLS 记录处理下沉到内核,利用零拷贝路径减少拷贝 ✓ 正确答案
#

3. eBPF map 的类型,包括 hash、array、lru、lpm_trie、ringbuf 与 bpf_map_type

A lpm_trie 适合最长前缀匹配,ringbuf 适合按序事件流 ✓ 正确答案
B hash 只适合数组访问
C lru 用于无容量限制场景
D bpf_map_type 是单一类型
#

4. eBPF 的 helper 函数与"受限 C"子集

A helper 函数无白名单
B eBPF 可调用任意内核函数
C eBPF 允许无界循环
D eBPF 只能调用受限 helper 函数,且使用受限 C 子集保证可验证 ✓ 正确答案
#

5. eBPF 在 Cilium 中的应用,即 service mesh 数据平面

A Cilium 依赖 iptables 用户态代理
B Cilium 用 eBPF 实现内核数据平面,处理策略与负载均衡 ✓ 正确答案
C eBPF 数据平面拖慢网络
D Cilium 不使用 eBPF
#

6. eBPF 在 Katran 中的应用,即 L4 负载均衡

A Katran 不使用 eBPF
B Katran 经完整网络栈处理
C Katran 无负载均衡能力
D Katran 用 XDP/eBPF 在驱动层实现高性能 L4 负载均衡 ✓ 正确答案
#

7. eBPF 的安全性,包括 bounded loops 与 pointer 校验

A eBPF 只允许有界循环,并对指针做严格校验保证安全 ✓ 正确答案
B eBPF 允许无限循环
C eBPF 允许任意指针运算
D verifier 不检查指针
#

8. AF_XDP(XDP socket)的零拷贝网络接收

A AF_XDP 让用户态直接访问接收帧,实现零拷贝收包 ✓ 正确答案
B AF_XDP 需拷贝到内核网络栈
C AF_XDP 与 XDP 无关
D AF_XDP 增加拷贝开销
#

9. XDP 的 native、offloaded、generic 三种模式

A native 模式在网卡驱动层处理,offloaded 卸载到网卡硬件,generic 用软件回退 ✓ 正确答案
B generic 模式性能最高
C offloaded 需要软件模拟
D 三种模式性能相同
#

10. XDP_DROP、XDP_PASS、XDP_TX、XDP_REDIRECT、XDP_ABORTED 的动作

A XDP_DROP 丢弃报文,XDP_PASS 放行进入内核栈,XDP_REDIRECT 重定向 ✓ 正确答案
B XDP_PASS 丢弃报文
C XDP_TX 重定向到其他网卡
D XDP_REDIRECT 丢弃报文
#

11. XDP(eXpress Data Path)的网卡驱动层钩子

A XDP 在协议栈处理之后执行
B XDP 钩子在网卡驱动收包早期、skb 分配前执行 ✓ 正确答案
C XDP 需要先分配 skb
D XDP 钩子位于应用层
#

12. eBPF 程序类型,包括 XDP、tc、socket、kprobe、tracepoint、perf_event

A kprobe 挂载网卡驱动
B XDP/tc 挂载网络路径,kprobe/tracepoint 用于内核追踪 ✓ 正确答案
C XDP 用于用户态追踪
D perf_event 用于网络转发
#

13. tc(traffic control)的 ingress/egress qdisc 与 clsact

A clsact 无法挂载 eBPF
B tc 只能处理出站流量
C clsact 是轻量分类器,可同时挂载 ingress/egress 的 eBPF 程序 ✓ 正确答案
D tc eBPF 在 skb 分配前执行
#

14. BPF skeleton 与 libbpf 的高级封装

A skeleton 需手动写加载代码
B BPF skeleton 自动封装加载与初始化流程,简化 eBPF 开发 ✓ 正确答案
C libbpf 不管理 map
D skeleton 与 CO-RE 无关
#

15. XDP 与 AF_XDP 的吞吐边界

A AF_XDP 增加拷贝
B XDP 总是达到线速
C XDP 与 AF_XDP 结合可接近线速,但受硬件、核数与处理能力限制 ✓ 正确答案
D 吞吐与 CPU 无关
#

16. XDP 在驱动层、skb 分配之前处理报文,TC 在 skb 已构建后处理,两者在网卡加速路径上的位置与性能差异是什么?

A XDP 能访问全部网络栈信息
B TC 在 skb 分配前处理
C XDP 在 skb 分配前处理,更快;TC 在 skb 构建后处理,更通用 ✓ 正确答案
D 两者性能相同
#

17. BCC 工具目录 bcc/tools 下的 biolatency、biosnoop、tcpconnect、execsnoop 等工具

A biolatency 统计块 I/O 延迟,tcpconnect 追踪 TCP 连接 ✓ 正确答案
B biolatency 追踪进程执行
C execsnoop 统计磁盘延迟
D BCC 工具无法用于诊断
#

18. eBPF 程序的"受限 C"编译,即 BCC(BPF Compiler Collection)的 LLVM IR 编译

A BCC 不用编译直接运行
B BCC 用 LLVM 把受限 C 编译为 eBPF 字节码 ✓ 正确答案
C LLVM 与 eBPF 无关
D BCC 只能写汇编
#

19. BCC 在故障诊断(off-CPU 分析)的应用

A offcputime 无法聚合栈
B off-CPU 分析只关注 CPU 占用
C offcputime 追踪线程不在 CPU 上的时间与栈,定位阻塞原因 ✓ 正确答案
D off-CPU 分析与锁无关
#

20. bpftrace 的"One-Liner"工具,如 biolatency、tcplife、naptime

A biolatency 追踪 TCP 连接
B One-Liner 需编写完整脚本
C bpftrace One-Liner 用单行命令即可完成 eBPF 追踪 ✓ 正确答案
D One-Liner 无法快速诊断
#

21. bpftrace 的"单行命令"模式,如 bpftrace -e 'kprobe:tcp_connect { @start[tid] = nsecs; }'

A 单行模式必须创建脚本文件
B bpftrace -e 单行模式用"探针 { 动作 }"语法执行追踪 ✓ 正确答案
C @start 是内置变量
D nsecs 是固定值
#

22. bpftrace 的内置变量,包括 pid、tid、cpu、comm、nsecs、kstack、ustack

A pid 是进程 ID,tid 是线程 ID,kstack 是内核栈 ✓ 正确答案
B comm 是时间戳
C nsecs 是进程名
D ustack 是 CPU 编号
#

23. bpftrace 的聚合操作,包括 @count、@hist、@lquantize、@stats、@join

A @join 计算平均值
B @count 输出直方图
C @lquantize 计数
D @hist 输出对数直方图,@stats 输出统计值与分布 ✓ 正确答案
#

24. bpftrace 在性能诊断(off-CPU、syscall latency)的实战

A bpftrace 用 kprobe 追踪 syscall 延迟并能聚合 off-CPU 时间 ✓ 正确答案
B bpftrace 无法追踪系统调用
C off-CPU 分析定位 CPU 热点
D bpftrace 只能统计 CPU 占用
#

25. perf lock 的锁争用分析

A perf lock 与锁无关
B perf lock 只统计 CPU 占用
C perf lock 无法追踪锁
D perf lock 统计锁争用次数与等待时间,定位高争用锁 ✓ 正确答案
#

26. perf mem 的内存访问采样与 TLB miss

A perf mem 采样内存访问层级并分析 TLB miss ✓ 正确答案
B perf mem 只测 CPU 频率
C perf mem 无法分析缓存
D perf mem 与 TLB 无关
#

27. perf report 的符号解析(symbol resolution)与 --symfs 边界

A strip 不影响符号解析
B perf report 总能解析符号
C 符号解析与调试信息无关
D perf report 需符号表或调试信息解析符号,strip 后可用 --symfs 指定符号目录 ✓ 正确答案
#

28. perf script 的原始事件流输出与 Python 脚本扩展

A perf script 不支持脚本
B perf script 只能输出聚合报告
C perf script 输出原始事件流,并支持 Python 脚本扩展 ✓ 正确答案
D perf script 输出与 Python 无关
#

29. perf(Linux profiling tools)的 record、report、stat、script、top、lock、kmem 等子命令

A perf record 只输出报告
B perf record 采样,report 分析结果,stat 统计计数事件 ✓ 正确答案
C perf lock 分析 CPU 热点
D perf top 是静态报告
#

30. perf c2c 的 cache-to-cache(false sharing)分析

A perf c2c 检测 cache-to-cache 传输,定位 false sharing ✓ 正确答案
B perf c2c 只测 CPU 频率
C perf c2c 无法检测伪共享
D perf c2c 与缓存行无关
#

31. ftrace 的"trigger",包括 hist、snapshot、stacktrace、offcpu

A trigger 需重编译内核
B trigger 只能记录日志
C hist 无法聚合
D ftrace trigger 的 hist 生成直方图,snapshot 保存快照 ✓ 正确答案
#

32. BCC 工具的 USDT(User Statically-Defined Tracing)静态用户态探针

A USDT 需修改应用代码才能追踪
B USDT 是应用预埋的静态探针,BCC 可稳定追踪用户态事件 ✓ 正确答案
C USDT 只能用于内核
D USDT 不稳定
#

33. BCC 工具通过 kprobe 实现动态内核函数插桩

A kprobe 需重编译内核
B kprobe 可动态插桩内核函数入口,无需重编译内核 ✓ 正确答案
C kprobe 只能追踪用户态
D kprobe 无法追踪返回值
#

34. BCC 工具通过 tracepoint 采集静态内核事件

A tracepoint 需重编译内核
B tracepoint 依赖内核内部符号
C tracepoint 是内核预定义的静态追踪点,接口稳定 ✓ 正确答案
D tracepoint 不稳定
#

35. BCC 工具的 uprobes 用户态函数插桩

A uprobe 动态插桩用户态函数,无需修改应用源码 ✓ 正确答案
B uprobe 只能追踪内核函数
C uprobe 需修改源码
D uprobe 无开销
#

36. BCC 工具的"BPF map 输出",包括 hash、histogram、stack

A histogram 存储键值
B BCC 在用户态聚合所有数据
C BCC 用 BPF map 在内核聚合数据、用户态读取展示 ✓ 正确答案
D stack 存储直方图
#

37. BCC 的 Python/C++ 双前端中 BPF prog 与 perf event 的协同

A BCC 只有 Python 前端
B BCC 提供 Python/C++ 前端,加载 BPF prog 并经 perf event 获取数据 ✓ 正确答案
C BPF prog 在用户态采集
D perf event 与 BCC 无关
#

38. BCC 的 bpf_trace_printk、bpf_get_current_pid_tgid、bpf_probe_read

A bpf_probe_read 直接解引用任意指针
B bpf_trace_printk 返回 pid
C bpf_get_current_pid_tgid 用于打印
D bpf_probe_read 用于安全读取内存,bpf_trace_printk 用于打印日志 ✓ 正确答案
#

39. BCC 的 bpftrace 兼容语法与工具迁移

A bpftrace 用抽象简化 eBPF 追踪,与 BCC 工具功能等价 ✓ 正确答案
B bpftrace 与 BCC 完全无关
C bpftrace 无法与 BCC 迁移
D bpftrace 比 BCC 更底层
#

40. BCC 工具的"性能开销"与生产环境适用性

A BCC 工具对生产无影响
B 所有探针开销相同
C kprobe 最适合生产
D tracepoint/USDT 开销较低,适合生产;kprobe/uprobe 热路径开销大 ✓ 正确答案
#

41. BCC 的 bpf_override_return 修改返回值的能力

A bpf_override_return 可修改任意函数
B bpf_override_return 可修改被探测内核函数的返回值,但限制严格 ✓ 正确答案
C bpf_override_return 无限制
D bpf_override_return 只能用于用户态
#

42. bpftrace 与 eBPF map 通过 @map[k] = v 进行交互

A bpftrace 不输出 map
B bpftrace map 只能存单值
C @map 语法无法聚合
D bpftrace 用 @map[k] = v 聚合键值数据 ✓ 正确答案
#

43. bpftrace 的探针类型,包括 kprobe、kretprobe、uprobe、uretprobe、tracepoint、software、hardware

A kprobe 追踪用户态函数
B kprobe/kretprobe 追踪内核函数,uprobe/uretprobe 追踪用户态函数 ✓ 正确答案
C hardware 探针追踪软件事件
D tracepoint 追踪硬件事件
#

44. bpftrace 的控制流,包括 if/else、for、while、switch

A bpftrace 循环无界
B bpftrace 不支持任何控制流
C bpftrace 支持 if/else、for、while 等控制流实现复杂逻辑 ✓ 正确答案
D bpftrace 只能用顺序语句
#

45. bpftrace 的输出格式化,包括 printf、time、strftime

A printf 格式化输出、strftime 把时间格式化为可读日期串 ✓ 正确答案
B strftime 输出原始数字
C printf 只能输出整数
D time 用于格式化日期
#

46. bpftrace 的"脚本模式"(-f file.bt)的可复用工具

A 脚本模式只支持单行
B bpftrace 脚本模式把探针写入文件,便于复用与维护 ✓ 正确答案
C 脚本无法共享
D 脚本模式不便于工具化
#

47. bpftrace 与 BCC 的等价性,bpftrace 如何抽象简化

A bpftrace 无法表达 BCC 的逻辑
B bpftrace 比 BCC 更底层
C bpftrace 与 BCC 功能完全不同
D bpftrace 与 BCC 底层等价,bpftrace 用抽象简化追踪 ✓ 正确答案
#

48. bpftrace 在安全检测(可疑 syscall)的应用

A bpftrace 可追踪 syscall 检测可疑行为,用于安全审计 ✓ 正确答案
B bpftrace 无法追踪 syscall
C bpftrace 只用于性能
D bpftrace 无安全能力
#

49. bpftrace 的"安全限制",包括 bounded loops 与 cap 检查

A bpftrace 的 eBPF 程序受有界循环与权限检查限制,保证安全 ✓ 正确答案
B bpftrace 允许任意循环
C bpftrace 无需权限
D bpftrace 无安全限制
#

50. perf annotate 的指令级源码映射

A perf annotate 只显示函数名
B perf annotate 把采样映射到指令级,定位热点指令 ✓ 正确答案
C perf annotate 无法反汇编
D perf annotate 定位到进程级
#

51. perf record 的采样方式,周期采样(H/W)vs 事件采样(S/W)

A 周期采样只针对上下文切换
B 事件采样适合 CPU 热点
C 周期采样适合 CPU 热点,事件采样针对特定事件归因 ✓ 正确答案
D 两种采样方式相同
#

52. perf probe 的动态探针添加

A perf probe 需重编译内核
B perf probe 动态添加探针生成自定义事件,无需重编译内核 ✓ 正确答案
C perf probe 只能添加静态事件
D perf probe 无法追踪函数
#

53. perf 与 bpftrace 的协同,即 perf 提供硬件事件、bpftrace 提供探针

A 二者无法组合
B perf 与 bpftrace 功能重叠
C bpftrace 提供硬件事件
D perf 提供硬件事件、bpftrace 提供探针,二者互补形成完整分析链 ✓ 正确答案
#

54. perf 在容器内(cgroup-aware)的 events 边界

A cgroup 与 perf 无关
B perf 无法区分容器
C perf 采样总是跨容器
D perf 支持 cgroup 过滤,把采样限定在指定容器内 ✓ 正确答案
#

55. ftrace 的 filter(set_ftrace_filter)与 events 过滤

A filter 只用于输出
B filter 无法缩小范围
C events 不支持过滤
D set_ftrace_filter 限定追踪函数,events 支持按字段过滤 ✓ 正确答案
#

56. ftrace 的"events",即 sched、irq、timer、block、netfs 的子目录结构

A ftrace events 按子系统分类组织,如 sched、block、netfs ✓ 正确答案
B 所有事件集中在一个目录
C events 无法按子系统分类
D ftrace events 与 tracefs 无关
#

57. ftrace 的"function tracer"(function)与"function graph"(function_graph)模式

A function 模式记录调用图
B function_graph 记录调用关系图与嵌套深度,信息更丰富但开销更大 ✓ 正确答案
C function_graph 只记录入口
D 两种模式开销相同
#

58. ftrace 的"stack trace" 与 function_graph 的递归调用图

A stack trace 记录事件时的内核栈,function_graph 呈现递归调用树 ✓ 正确答案
B stack trace 呈现调用树
C function_graph 只记录单点
D 二者都不展示调用栈
#

59. ftrace 的"tracefs"(/sys/kernel/tracing)与 debugfs 历史

A ftrace 从 debugfs 迁移到专用 tracefs,权限与结构更安全规范 ✓ 正确答案
B ftrace 一直用 debugfs
C tracefs 与 debugfs 相同
D tracefs 无法挂载
#

60. ftrace 的"tracer",包括 function、function_graph、irqsoff、preemptoff、wakeup、wakeup_rt

A irqsoff 测量中断关闭延迟,wakeup_rt 测量实时任务唤醒延迟 ✓ 正确答案
B function 测量中断延迟
C irqsoff 追踪函数调用
D wakeup 只测量 CPU 占用
#

61. trace-cmd 的"录制-回放"模式,即 trace-cmd record / report

A trace-cmd 只有录制功能
B trace-cmd record 录制数据,report 回放分析 ✓ 正确答案
C trace-cmd 无法回放
D trace-cmd 与 ftrace 无关
#

62. ftrace 的"trace_printk" 内核内嵌打印

A trace_printk 无法追踪
B trace_printk 输出到内核日志
C trace_printk 与 printk 相同
D trace_printk 输出到 ftrace 追踪缓冲区,便于内核调试 ✓ 正确答案
#

63. ftrace 在实时系统(PREEMPT_RT)的延迟测量

A 实时系统不用 ftrace
B ftrace 无法测延迟
C ftrace 用延迟 tracer 测量中断/抢占/唤醒延迟,评估实时性 ✓ 正确答案
D ftrace 只测吞吐
#

64. ftrace 的"dynamic events"(dynamic_debug)

A dynamic events 是静态的
B dynamic events 需重编译内核
C dynamic events 无法添加事件
D dynamic events 允许运行时动态添加/删除追踪事件 ✓ 正确答案
#

65. eBPF verifier 的基本校验流程涵盖寄存器状态、指针边界、内存访问范围与循环限制等哪些检查?

A verifier 允许越界访问
B verifier 只检查循环
C verifier 不检查指针
D verifier 检查寄存器状态、指针边界、内存访问范围与循环有界性 ✓ 正确答案
#

66. eBPF 程序从编译、验证、JIT 到挂载执行的完整生命周期包含哪些步骤?

A eBPF 不经过编译
B eBPF 无需验证即可执行
C JIT 发生在挂载之后
D eBPF 生命周期为编译、加载、验证、JIT、挂载、执行 ✓ 正确答案
#

67. ftrace ring buffer 的 per-CPU buffer 与 cross-CPU 同步的工程价值?

A per-CPU buffer 与性能无关
B per-CPU buffer 增加锁竞争
C ring buffer 是单 CPU 共享
D per-CPU buffer 让写入免跨 CPU 锁,降低追踪开销 ✓ 正确答案
#

68. BPF ELF 的 BPF_PROG / BPF_MAP 在 libbpf CO-RE 的工程价值?

A BPF ELF 的节标注程序与 map,libbpf 据此加载并支持 CO-RE ✓ 正确答案
B BPF ELF 无节结构
C libbpf 不解析 ELF
D CO-RE 与 ELF 无关
#

69. ringbuf 相比 perf event buffer 在内存共享与多 CPU 事件有序性上做了哪些改进?

A ringbuf 与 perf event buffer 相同
B ringbuf 需要额外拷贝
C ringbuf 无法保证有序
D ringbuf 支持共享内存读取并保证多 CPU 事件有序性 ✓ 正确答案
#

70. 如何用 eBPF 编写一个统计 TCP 重传或调度延迟分布的工具,数据如何从 map 暴露给用户态?

A map 无法被用户态读取
B eBPF 无法统计分布
C 数据只能在内核显示
D eBPF 用 tracepoint 采集事件、map 聚合分布,用户态读取 map 输出 ✓ 正确答案
#

71. BTF(BPF Type Format)与 CO-RE(Compile Once – Run Everywhere)如何支撑 eBPF 程序跨内核版本可移植?

A CO-RE 需为每个内核重编译
B CO-RE 硬编码结构偏移
C BTF 与可移植无关
D CO-RE 利用 BTF 在加载时重定位内核结构偏移,实现跨内核可移植 ✓ 正确答案
#

72. tracepoint 与 kprobe 在稳定性与开销上有何差异,为何生产可观测性更偏好 tracepoint 与 USDT?

A kprobe 开销可预测
B kprobe 比 tracepoint 更稳定
C tracepoint 依赖内核内部符号
D tracepoint 稳定、开销可控,生产可观测性更偏好 tracepoint 与 USDT ✓ 正确答案
#

73. eBPF 如何在不修改应用的前提下实现 L4/L7 流量统计、延迟直方图与丢包定位等可观测性能力?

A eBPF 无法观测流量
B eBPF 需修改应用埋点
C eBPF 内核探针在不修改应用时采集流量并聚合统计 ✓ 正确答案
D eBPF 可观测性需侵入应用
#

74. eBPF 辅助函数(helper)的调用约定与返回值语义是什么,为何不能随意调用任意内核函数?

A 任意内核函数在 eBPF 中安全
B eBPF 可调用任意内核函数
C helper 返回值无定义
D helper 是经 verifier 审查的白名单函数,返回语义明确,任意内核函数不安全 ✓ 正确答案
#

75. BPF 程序的尾调用(tail call)如何突破指令数限制,又在什么场景下使用?

A 尾调用只在单程序内循环
B 尾调用增加栈增长
C 尾调用无法分派逻辑
D bpf_tail_call 跳转到其他程序,突破单程序指令数限制 ✓ 正确答案
#

76. eBPF maps 的 HASH、ARRAY、RINGBUF、LRU_HASH、LPM_TRIE 等类型分别适合什么数据结构与查询模式?

A ARRAY 适合前缀匹配
B RINGBUF 适合键值查找
C LPM_TRIE 适合最长前缀匹配,LRU_HASH 适合有容量限制的缓存 ✓ 正确答案
D HASH 适合按序事件流
#

77. 为何 eBPF 程序默认禁止无界循环与任意指针运算,verifier 的这些限制如何保证内核安全与活性?

A 指针运算总是安全
B 无界循环不会影响内核
C 禁止无界循环保证活性,指针校验保证安全,防止越界 ✓ 正确答案
D verifier 不保证活性
#

78. eBPF 的 XDP、TC、kprobe、tracepoint、uprobe 等程序类型各自挂载在什么位置,适用场景如何区分?

A XDP 挂用户态函数
B XDP 挂驱动收包层、tc 挂流量控制、kprobe 挂内核函数、uprobe 挂用户态函数 ✓ 正确答案
C uprobe 挂内核函数
D tracepoint 挂网卡驱动
#

79. XDP redirect 配合 AF_XDP 如何实现零拷贝收包,相比传统 socket 收包路径省去了哪些开销?

A AF_XDP 无法零拷贝
B XDP 收包仍需拷贝到协议栈
C XDP_REDIRECT 到 AF_XDP 让用户态直接访问帧,省去 skb 分配与拷贝 ✓ 正确答案
D XDP 收包与 socket 相同
#

80. uprobe 挂载到用户态函数入口的开销来自哪里,为何在高频热路径上需谨慎使用?

A uprobe 在热路径上无影响
B uprobe 开销极小
C uprobe 每次调用触发内核处理,热路径上开销显著,需谨慎 ✓ 正确答案
D uprobe 不触发内核
#

81. XDP 的"early hook"零拷贝在网卡到 socket buffer

A XDP 只在 socket buffer 后处理
B XDP early hook 在协议栈后执行
C early hook 无法零拷贝
D XDP early hook 在收包早期处理帧,可零拷贝重定向到 AF_XDP ✓ 正确答案
#

82. ftrace 的"hist" 触发器,即基于事件的统计

A hist trigger 对事件字段聚合统计,生成直方图 ✓ 正确答案
B hist trigger 只能记录原始事件
C hist trigger 无法聚合
D hist trigger 需外部工具
#

83. 动态追踪(eBPF、bpftrace、BCC)与 perf、ftrace 的工具链分工

A perf 采样热点、bpftrace/BCC 动态追踪、ftrace 内核事件,分工互补 ✓ 正确答案
B 所有工具功能相同
C bpftrace 用于采样热点
D ftrace 用于动态追踪用户态
#

84. kernelshark 的 GUI 可视化与时间线分析

A kernelshark 无法可视化
B kernelshark 是文本工具
C kernelshark 用时间线 GUI 可视化 ftrace 追踪数据 ✓ 正确答案
D kernelshark 与 ftrace 无关
#

85. BPF CO-RE(Compile Once, Run Everywhere)通过 BTF 重定位 kernel struct 的工程价值?

A CO-RE 需为每个内核重编译
B CO-RE 用 BTF 重定位使程序编译一次即可跨内核运行 ✓ 正确答案
C CO-RE 硬编码结构偏移
D CO-RE 与可移植性无关