问题标签 [lttng]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1482 浏览

lttng - Raspbian 上的 Linux 跟踪工具 lttng:内核跟踪器不可用

我已经在运行在 Raspberry Pi 3 Model B+ 上的 Raspbian 上安装了 lttng。

从网站(以 root 身份)进行第一个演示时,我收到以下错误:

我假设一个进程正确启动:

以下命令返回错误:

请注意,以下命令未列出任何内容:

lttng 内核模块是否未加载?这是问题的原因吗?

顺便说一句,我可以按照https://lttng.org/docs/v2.9/#doc-tracing-your-own-user-application中的说明跟踪应用程序。

我在 Debian 安装之后安装了 lttng:

并安装了以下内容:

有关我的 Linux 发行版的更多信息:

和:

我是否错误地安装了 lttng,是否与我的 Linux 发行版不匹配,是否未正确加载 lttng 内核模块,还是有其他问题?

谢谢,

巴特

0 投票
0 回答
236 浏览

lttng - 如何找出谁在注册 lttng 跟踪点探测?

我在运行我的应用程序时收到如下错误:

LTTng-UST:注册跟踪点探测时出错 (-17)。不允许重复注册具有相同名称的跟踪点探测器。

基于错误,看起来多个组件正在尝试注册相同的跟踪点探测器。我试图找出哪些是那些组件。有没有办法查看谁都在注册跟踪点探针?

谢谢,凯拉斯

0 投票
0 回答
138 浏览

c++ - 如何在不使用 tcp 套接字的情况下从我的 c++ 应用程序中的 lttng 以实时模式获取跟踪?

我在我的 c++ 应用程序中使用 lttng api 来获取跟踪,但我发现的唯一解决方案是使用 tcp 套接字。我可以在不使用网络的情况下执行此操作吗?

0 投票
0 回答
188 浏览

performance - 实时收集 Linux 上运行的 .Net Core 2.1 应用程序的 GC 指标

我想实时收集生产环境中在 Linux 上运行的应用程序的 GC 指标。我假设无法获得有关从 docker 或 kubernetes 运行的应用程序内存状态(所有内存类型)的可靠数据。因此,从GC接收的数据也可能不是不可靠的或完全不可靠的。

也许有人遇到过类似的问题,可以分享经验非常感谢任何答案。

0 投票
1 回答
154 浏览

python - 使用 python 绑定在“Trace Compass”中生成表现良好的跟踪

我正在使用 babeltrace python 绑定从我拥有的一些数据中创建一个跟踪文件:数据表示系统执行信息,因此有正在创建和运行的任务。

我可以在 Trace Compass 中显示跟踪文件:直方图面板中会弹出信息。

我希望它在控制流面板中正确显示。

我转储了一个用 lttng 获取的跟踪文件,我可以看到线程信息在这些标签内

Trace Compass 不显示这些行,另一方面,“控制流”面板显示系统中的所有线程

示例行:

我试图在我的 python 中创建一个类似的 stream_class,但是你看到 cpu_id 是空的,这些行显示在 Trace compass 但控制流面板中没有弹出任何内容

  • 如何设置 cpu_id?
  • 我是否走上了让它运行的好道路?
0 投票
0 回答
252 浏览

c - Babeltrace 2.0 C API 使用

我使用 lttng 来跟踪程序的执行并计算某些函数的平均执行时间。由于生成了数百万个跟踪,babeltrace 的 Python 绑定导致分析它们的速度非常慢。

我想知道是否可以在 C 程序上使用 libbabeltrace 库读取跟踪以进行更快的分析,因为我无法找到有关 API 及其用法的大量文档。我有兴趣提取每个事件的时间戳和两个字段。我使用 Babeltrace 2.0.0-pre4。

此外,我对 libbabeltrace 的发现是http://mcs.une.edu.au/doc/libbabeltrace/API.txt

考虑到这一点,我编写了一个简单的程序来开始并创建跟踪的上下文:

但是,我收到以下错误:

有人可以帮我弄这个吗?

提前致谢

0 投票
1 回答
273 浏览

c# - 在 .NET Core 应用程序中使用 LTTng 事件

我有一个 .NET Core 应用程序,我想设置它来侦听LTTng事件,但我几乎没有找到任何关于如何在 C# / .NET Core 代码中实际执行此操作的文档。我已经读过很多关于CoreCLR 团队如何押注 LTTng 作为他们在 Linux 上的主要跟踪解决方案(而 ETW 是 Windows 上自然现存的解决方案)的文章,但在任何方向上都没有这可能在代码中采用的任何方向。另一方面,将应用程序设置为代码中的 ETW 侦听器非常容易(并且有充分的文档记录)(例如,只是无数示例之一)。

有没有人有这样做的经验,或者看过任何好的文档?相同的库/包/nugets 是否仍然适用于 .NET Core 上的 Linux 世界(即,我是否需要像在 Windows 中一样设置一个与TraceEventSessions 相关联的操作,或者是否需要不同的方向/包集? Linux)?TraceEventParsersTraceEvent

任何帮助将不胜感激!

注意:我不想使用该lttng工具本身进行跟踪,但想将侦听构建到 .NET Core 应用程序本身中。

0 投票
1 回答
277 浏览

c# - 如何使用 lttng 过滤 EventSource 事件

使用:Linux UST 跟踪/lttng 上的 .NET Core 2.2。

我试图只监听我在我的应用程序中生成的自定义 EventSource 事件(以及我特别感兴趣的一些其他事件,但它们不包含在此讨论中)。我正在将这些消息发送到一个 lttng-relayd 守护程序,并且我希望将事件数据的数量保持在我的控制范围内。打开 EventSource 提供程序会生成大量我不想要或不需要的信息,并且有时会淹没我的频道。

lttng enable-event --userspace --tracepoint DotNETRuntime:EventSource

当我查看正在推送的数据时,我看到了各种内置事件,我想完全避免采样:

=== DotNETRuntime:EventSource__System.Diagnostics.Eventing.FrameworkEventSource - ThreadTransferSend:11542 - ThreadTransferReceive:6480 - ThreadPoolEnqueueWork:21437 - ThreadPoolDequeueWork:21437 === DotNETRuntime:EventSource__Microsoft-System-Net-Sockets - Enter:22771 - Info:27463 - Exit :20145 - 已连接:1 - 已接受:1 === DotNETRuntime:EventSource__Microsoft-System-Net-NameResolution - 输入:41924 - 信息:41922 - 退出:27950

这些都是由 .NET 生成的,我对捕获这些事件几乎没有兴趣,只有我的应用程序特定的事件集。

我试图找出我可能用来过滤我的一组自定义事件的 --filter 语法:

--filter='$app.EventSourceName==MyEventSourceName'

我可以在网上找到的示例引用了静态事件:

$ctx.procname=='dotnet'

这不是那么有用。

或者使用 $app 的动态事件,但是我需要用来按 EventSourceName 过滤的语法不是很清楚。

有没有人有这方面 lttng 方面的经验

0 投票
0 回答
109 浏览

python - 是否可以使用 babeltrace Python API(或任何其他软件工具)来读取“实时”LTTng 跟踪?

我正在使用 LTTng 来跟踪应用程序。要读取 LTTng 跟踪数据,我使用的是 Python API babeltrace

我打开 LTTng 跟踪,跟踪数据存储在一个文件夹中。我使用 Python API babeltrace 来读取记录的跟踪数据。现在,是否可以在live模式下读取 LTTng 跟踪数据?使用 babeltrace 或任何其他软件工具(Python 绑定)。

0 投票
0 回答
69 浏览

c# - 使用 COMPlus_EnableEventLog=1 运行 .NET 二进制文件时没有获得 GCallocationTick 堆栈计数

背景

我想为我的 ASP.NET Core 2.1 应用程序监控哪些方法分配最多,为此我想使用 LTTng 事件以及其他一些工具来提供帮助。我基本上尝试过遵循本指南:http: //blogs.microsoft.co.il/sasha/2018/02/06/getting-stacks-for-lttng-events-with-net-core-on-linux/

(我在网上的几个地方看到了基本相同的内容,变化很少/很小。这篇文章是格式较好的文章之一,但由于其内容已被其他人重复,我没有理由相信不知何故,这将是不正确的。)

设置

我正在使用命令启动我的服务器应用程序

在后台安静地运行它。然后我通过发出 HTTP 请求并获得我期望的响应来验证它是否有效。

程序

然后我想做的是找出哪些方法做了很多堆分配,所以我stackcount从 BPF Compiler Collection (BCC) 运行该工具,如下所示:

我提出了一些在内存使用方面应该很昂贵的请求,然后我用 Ctrl-C 取消了 stackcount 命令。

问题

此时,allocticks.stacks文件是空的,就好像在记录期间没有分配一样。

我本来希望allocticks.stacks至少包含一些东西

我究竟做错了什么?

进一步诊断

我还尝试用 perf 做同样的事情,首先为 GCAllocationTick 事件定义一个探针:

然后开始为流程记录这些事件:

再次,执行一些我知道在内存使用方面很昂贵的请求,然后使用 Ctrl-C 取消录制命令。

然后当我尝试通过运行查看记录的数据时

我收到以下错误:

排除:拼写错误

起初我怀疑我只是拼错了一些东西。因此,我尝试在命令中故意拼错重要的标识符,但每次我这样做时,工具都非常擅长告诉我我做错了。因此,我没有理由怀疑这是现在的问题。

排除:缺少依赖

与拼写错误的情况类似,我曾尝试有意卸载我知道是必需的依赖项,然后工具是否对此发出警告。

排除(?):错误libcoreclr.so

我不太确定整个 .NET 是如何组合在一起的,但我开始认为TestServer可执行文件可能没有使用libcoreclr.so其工作目录中的文件,因为它使用了一些系统范围的二进制文件。但是,我还没有找到libcoreclr.so系统上命名的任何其他文件,尽管我也没有很努力地寻找。

但是,我开始认为这可能是那些自包含部署的东西之一,并且它libcoreclr.so以某种方式嵌入到二进制文件中,因此它不必依赖它作为外部文件。但是,即使我使用

我有同样的问题,让我认为这也是一个不太可能的原因。