接前一篇文章:《BPF Performance Tools ------ 洞悉Linux系统和应用性能》学习笔记 ------ 第一章 介绍(1)
1.2 Tracing、Snooping、Sampling、Profiling和Observability是什么?
这些都是用于对分析技术和工具进行分类的术语。
- Tracing(跟踪、追踪)
Tracing是基于事件的记录------这些BPF工具使用的仪器类型。你可能已经使用了一些专用跟踪工具,例如Linux strace,记录并打印系统调用事件。有许多工具并不跟踪事件,而是使用固定的统计计数器度量事件,并在其后打印摘要,Linux top是其中一个例子。跟踪器的一个特点是其能够记录原始事件和事件元数据。此类数据可以是海量的,可能需要将其后处理成摘要。BPF使之成为可能的程序跟踪器,可以对事件运行小程序,以执行自定义的即时统计摘要或其他操作,从而避免昂贵的后处理。
- Snooping(窥探)
虽然strace的名字中有"trace",但并不是所有的tracers都是这样(指的是名字中带有"trace")。例如,tcpdump是网络数据包的另一个专用跟踪器。(也许它应该被命名为tcptrace?)。Solaris操作系统有其自己的tcpdump版叫做snoop,之所以如此命名,是因为它被用来窥探网络数据包。我是第一个开发和发布许多跟踪工具的人,而且是在Solaris上开发和发布的,在那里我对于我的早期工具(也许很遗憾地)使用了术语"窥探"。这就是为什么我们现在有execsnoop、opensnoop、biosnoop等等。Snooping、event dumping和tracing通常指的是同一件事。这些工具将在后面的章节中(逐一)介绍。
除了工具名称之外,"tracing"这一术语也被用来描述BPF,尤其是被内核开发人员,当用于可观测性时。
- Sampling(采样)
采样工具采用测量的子集来绘制目标的粗略画像;这也被称为创建配置文件或配置文件。有一个名为profile的BPF工具,它可以执行基于定时器的运行代码采样。例如,它可以每10毫秒采样一次,或者换句话说,它可以每秒采样100次(在每个CPU上)。采样器的一个优点是,它们的性能开销可以低于跟踪器,因为它们只测量一组大得多的事件集中的一个。缺点是采样只提供粗略的画像,并且可能会错过事件。
- Observability(可观测性)
可观察性是指通过观察来理解一个系统,并对实现此功能的工具进行分类。这些工具包括跟踪工具、采样工具和基于固定计数器的工具。它不包括基准测试工具,此类工具通过执行工作负载实验来修改系统的状态。本书中的BPF工具是可观测性工具,它们使用BPF进行程序跟踪。