Mathieu Desnoyers mathieu.desnoyers at efficios.com Tue Aug 3 14:40:21 EDT 2021 大家好,今天正式发布 LTTng 2.13 - Nordicité!这是 EfficiOS 团队大部分人一年开发的结果。这个新版本最显着的特点是: - Event-rule 匹配条件触发器和新动作,允许内部动作或外部监控应用程序在内核或用户时快速做出反应- 空间检测被命中, - 通知负载捕获,允许外部监控应用程序在检测被命中时读取检测负载的元素。 - Instrumentation API:vtracef 和 vtracelog (LTTng-UST), - 用户空间时间命名空间上下文(LTTng-UST 和 LTTng-modules)。此版本以“Nordicité”命名,这是 Champ Libre 和 Boréale 合作的产物。这种农家 IPA 是用 Kveik 酵母和魁北克种植的大麦、燕麦和杜松枝酿造的。结果是一种非凡的果味朦胧的金色 IPA,提供了树脂和木质苦味的平衡感。基于 LTTng 项目记录的稳定版本生命周期,这个 2.13 版本与 LTTng 2.11 版本系列的生命周期结束 (EOL) 相吻合。阅读有关每个新功能的简短描述以及此版本的链接。此公告的美化版本将很快在 GitHub 上提供:https://github.com/lttng/lttng-tools/releases/tag/v2。 13.0关于 LTTng-UST 向后兼容性的注意事项---- soname 主要版本更改 此版本将 LTTng-UST soname 主要从 0 更改为 1。事件通知程序(使用事件规则匹配条件的触发器)功能需要对一开始就不应该公开的公共数据结构。将 soname 专业设置为 1,将需要针对更新的 LTTng-UST 重建应用程序和跟踪点提供程序以使用它。旧应用程序和跟踪点提供程序链接到具有主要 soname 0 的库应该能够在同一系统上共存。- 使用 C++ 编译器构建探针提供程序需要 C++11- API 命名空间 LTTng-UST API 现在系统地命名为`lttng_ust_*`(例如`tracepoint()` 变成`lttng_ust_tracepoint()`)。然而,非命名空间名称仍然暴露以保持 API 兼容性。事件规则匹配条件和新操作---扩展触发器基础结构并使其通过`lttng`客户端可用是此版本的核心重点。触发器是条件与一个或多个动作之间的关联。当满足与触发器关联的条件时,将执行与该触发器关联的操作。跟踪不必为满足条件而处于活动状态,并且触发器独立于跟踪会话。自从它们作为 LTTng 2.10 的一部分引入以来,添加了新的条件和操作以使这种鲜为人知的机制更加灵活。例如,之前此版本中,触发器支持以下条件类型: - 缓冲区使用量超过给定阈值, - 缓冲区使用量低于可配置阈值, - 发生会话轮换, - 会话轮换完成。 _notify_ 操作可用于向第三方应用程序只要满足这些条件。例如,如果跟踪缓冲区几乎已满,则可以禁用某些事件规则。它还可以用于等待 sessionrotations 完成以开始处理生成的跟踪块存档作为各种后处理跟踪分析的一部分。此版本引入了一种新的强大的条件类型:事件规则匹配。当满足这种条件时跟踪器遇到匹配给定偶数规则的事件。描述事件规则的参数与描述 `enable-event` 命令的事件规则的参数相同。虽然这不是作为现有高吞吐量跟踪工具的一般替代品,这使得应用程序可以等待非常特定的事件发生并在发生时采取行动。事件规则匹配触发器的目的是对事件做出快速反应,而没有缓冲引入的延迟。例如,以下命令将创建一个触发器,每当' openat' 系统调用使用'/etc/passwd' 文件名参数调用。$ lttng add-trigger --condition event-rule-matches --type=kernel:syscall --name='openat' --action notifyNew actions are还作为此版本的一部分引入: - 启动会话 此操作会导致 LTTng 会话守护程序开始跟踪具有给定名称的会话。如果在满足条件时不存在具有给定名称的会话,则不执行任何操作。 - 停止会话 此操作会导致 LTTng 会话守护程序停止跟踪具有给定名称的会话。如果在满足条件时不存在具有给定名称的会话,则不执行任何操作。 - 轮换会话 此操作会导致 LTTng 会话守护进程轮换具有给定名称的会话。有关会话轮换概念的更多信息,请参阅 lttng-rotate(1)。如果在满足条件时不存在具有给定名称的会话,则不执行任何操作。 - 快照会话 此操作会导致 LTTng 会话守护程序使用给定名称拍摄会话的快照。有关会话快照概念的更多信息,请参阅 lttng-snapshot(1)。如果在满足条件时不存在具有给定名称的会话,则不执行任何操作。这些新操作也可以组合在一起。例如,以下触发器将停止`my_session`,记录`my_session`的快照,并在'/etc/passwd'打开时通知任何监听应用程序:$ lttng add-trigger --condition event-rule-matches --type kernel :syscall --name 'openat' --filter 'filename == "/etc/passwd"' --action stop-session my_session --action snapshot-session my_session --action notify有关更多信息,请参阅以下手册页:- lttng-add-trigger(1), - lttng-remove-trigger(1), - lttng-list-triggers(1).Notification payload capture---新的事件规则匹配条件类型也允许'捕获'。这个允许在满足事件规则匹配条件时捕获事件记录和上下文字段。捕获的字段值在传输到侦听应用程序的通知的评估对象中可用。捕获描述符可以使用让人想起使用的语法来指定过滤器表达式。以下示例将捕获进程的名称和“fil”所有`openat()`系统调用的ename'参数:$ lttng add-trigger --condition event-rule-matches --type kernel:syscall --name 'openat' --capture 'filename' --capture '$ctx. procname' --action notify 有关更多信息,请参阅 lttng-add-trigger(1) 手册页。 vtracef 和 vtracelog (LTTng-UST)---`tracef()` 和 `tracelog()` 跟踪助手的新版本接受变量参数列表被引入为 `vtracef()` 和 `vtracelog()`。有关更多信息,请参阅 tracef(3) 和 tracelog(3) 手册页。添加时间命名空间上下文(LTTng-UST 和 LTTng-modules)---现在可以使用 `add-context` 命令将进程的时间命名空间作为上下文添加到通道(`time_ns`)。有关更多信息,请参阅 time_namespaces(7) 手册页。链接---项目网站:https ://lttng.org 下载链接: https://lttng.org/files/lttng-tools/lttng-tools-2.13.0.tar.bz2 https://lttng.org/files/lttng-ust/lttng-ust -2.13.0.tar.bz2 https://lttng.org/files/lttng-modules/lttng-modules-2.13.0.tar.bz2G PG 签名:https://lttng.org/files/lttng-tools/lttng-tools-2.13.0.tar.bz2.asc https://lttng.org/files/lttng-ust/lttng-ust-2.13。 0.tar.bz2.asc https://lttng.org/files/lttng-modules/lttng-modules-2.13.0.tar.bz2.asc-- Mathieu DesnoyersEfficiOS Inc. http://www.efficios.com