【LTTng】LTTNG 内核模块手册

涉及到需要支持的内核裁剪选项之类的信息。

转载方便阅读。

LTTng-modules

by Mathieu Desnoyers

LTTng kernel modules are Linux kernel modules which make
LTTng kernel tracing possible. They include
essential control modules and many probes which instrument numerous
interesting parts of Linux. LTTng-modules builds against a vanilla or
distribution kernel, with no need for additional patches.

Other notable features:

  • Produces CTF
    (Common Trace Format) natively,
  • Tracepoints, function tracer, CPU Performance Monitoring Unit (PMU)
    counters, kprobes, and kretprobes support,
  • Have the ability to attach context information to events in the
    trace (e.g., any PMU counter, PID, PPID, TID, command name, etc).
    All the extra information fields to be collected with events are
    optional, specified on a per-tracing-session basis (except for
    timestamp and event ID, which are mandatory).

Building

To build and install LTTng-modules, you will need to have your kernel
headers available (or access to your full kernel source tree), and do:

make
sudo make modules_install
sudo depmod -a

The above commands will build LTTng-modules against your
current kernel. If you need to build LTTng-modules against a custom
kernel, do:

make KERNELDIR=/path/to/custom/kernel
sudo make KERNELDIR=/path/to/custom/kernel modules_install
sudo depmod -a kernel_version

Kernel built-in support

It is also possible to build these modules as part of a kernel image. Simply
run the scripts/built-in.sh script with the path to
your kernel source directory as an argument. It will symlink the
lttng-modules directory in the kernel sources and add an include in the kernel
Makefile.

Then configure your kernel as usual and enable the CONFIG_LTTNG option.

Required kernel config options

Make sure your target kernel has the following config options enabled:

  • CONFIG_MODULES: loadable module support (not strictly required
    when built into the kernel),
  • CONFIG_KALLSYMS: see files in wrapper; this is
    necessary until the few required missing symbols are exported to GPL
    modules from mainline,
  • CONFIG_HIGH_RES_TIMERS: needed for LTTng 2.x clock source,
  • CONFIG_TRACEPOINTS: kernel tracepoint instrumentation
    (enabled as a side-effect of any of the perf/ftrace/blktrace
    instrumentation features).
  • CONFIG_KPROBES (5.7+): use kallsyms for kernel 5.7 and newer.

Supported (optional) kernel config options

The following kernel configuration options will affect the features
available from LTTng:

  • CONFIG_HAVE_SYSCALL_TRACEPOINTS: system call tracing:

    lttng enable-event -k --syscall
    lttng enable-event -k -a
    
  • CONFIG_PERF_EVENTS: performance counters:

    lttng add-context -t perf:*
    
  • CONFIG_EVENT_TRACING: needed to allow block layer tracing

  • CONFIG_KPROBES: dynamic probes:

    lttng enable-event -k --probe ...
    
  • CONFIG_KRETPROBES: dynamic function entry/return probes:

    lttng enable-event -k --function ...
    
  • CONFIG_KALLSYMS_ALL: state dump of mapping between block device
    number and name

LTTng specific kernel config options

The following kernel configuration options are provided by LTTng:

  • CONFIG_LTTNG: Build LTTng (Defaults to ‘m’).

  • CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM: Enable the experimental bitwise
    enumerations (Defaults to ‘n’). This can be enabled by building with:

     make CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM=y
    
  • CONFIG_LTTNG_CLOCK_PLUGIN_TEST: Build the test clock plugin (Defaults to
    ‘m’). This plugin overrides the trace clock and should always be built as a
    module for testing.

Customization/Extension

The lttng-modules source includes definitions for the actual callback
functions that will be attached to the kernel tracepoints by lttng.
The lttng-modules project implements its own macros generating these
callbacks: the LTTNG_TRACEPOINT_EVENT macro family found in
instrumentation/events/lttng-module/. In order to show up in a
lttng-modules trace, a kernel tracepoint must be defined within the
kernel tree, and also defined within lttng-modules with the
LTTNG_TRACEPOINT_EVENT macro family. Customizations or extensions must
be done by modifying instances of these macros within the lttng-modules
source.

Usage

Use LTTng-tools to control the tracer.
The session daemon of LTTng-tools should automatically load the LTTng
kernel modules when needed. Use Babeltrace
to print traces as a human-readable text log.

Support

Linux kernels >= 3.0 are supported.

Notes

About perf PMU counters support

Each PMU counter has its zero value set when it is attached to a context with
add-context. Therefore, it is normal that the same counters attached to both the
stream context and event context show different values for a given event; what
matters is that they increment at the same rate.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要启动 LTTngLinux Trace Toolkit Next Generation)跟踪会话,你需要执行以下步骤: 1. 安装 LTTng:首先,你需要安装 LTTng 软件包。具体安装方法因操作系统而异。在 Ubuntu 上,你可以使用以下命令进行安装: ``` sudo apt-get install lttng-tools lttng-modules-dkms liblttng-ust-dev ``` 2. 创建 LTTng 跟踪会话:使用 `lttng create` 命令创建一个新的 LTTng 跟踪会话。你可以指定一个名称来标识该会话。例如,以下命令将创建一个名为 "my_session" 的跟踪会话: ``` lttng create my_session ``` 3. 添加要跟踪的事件:使用 `lttng enable-event` 命令添加要跟踪的事件。你可以指定要跟踪的事件名称、通配符或者事件组。例如,以下命令将启用所有系统调用事件的跟踪: ``` lttng enable-event -a -k syscalls ``` 4. 启动 LTTng 跟踪会话:使用 `lttng start` 命令启动 LTTng 跟踪会话,开始收集跟踪数据。 ``` lttng start ``` 5. 运行应用程序:在启动 LTTng 跟踪会话后,运行你想要跟踪的应用程序。 6. 停止 LTTng 跟踪会话:使用 `lttng stop` 命令停止 LTTng 跟踪会话。这将停止收集跟踪数据。 ``` lttng stop ``` 7. 销毁 LTTng 跟踪会话:使用 `lttng destroy` 命令销毁 LTTng 跟踪会话,并删除相关的跟踪数据文件。 ``` lttng destroy ``` 通过执行上述步骤,你就可以启动一个 LTTng 跟踪会话,并开始收集跟踪数据。你可以根据需要自定义要跟踪的事件和配置。 希望这个解释对你有帮助!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值