欧意交易所资讯

uncategorized
首页 > 欧意交易所资讯 > 正文内容

Linux 内核追踪工具相关论文总结:LTTng 实现用户空间追踪并与内核空间关联分析

qer1231年前 (2024-07-21)欧意交易所资讯784

其实这篇文章更像是一篇论文总结博客,而不是纯粹的翻译!所以它并不严格遵循原文的标点符号。你只需要学习知识就可以了。

--------------------------------华丽的分割线---------------------------------------------------------

零、相关知识介绍(跟踪器时间线):

● 1999 年:LTT

● 2005 年:LTTng

● 2005年:

● 2008年:

2009 年:Perf

● 2012 年:LTTng 2.0

LTT:(Linux Trace)是Linux下追踪系统详细运行状态和进程的重要工具,可以追踪和记录系统中特定的事件,这些事件包括:

* 系统调用的进入和退出

* 陷阱/中断(Trap/Irq)的进入和退出

*进程调度事件

* 内核定时器

*进程管理相关事件:创建,唤醒,信号处理等。

* 文件系统相关事件:Open / Read / Write / Seek / Ioctl 等。

*内存管理相关事件:内存分配/释放等。

* 其他事件:IPC//网络等。

此外,Ltt还提供了函数接口用于自定义记录需要追踪的事件类型。

LTTng:(Linux Trace Next),它是一个用于跟踪 Linux 内核、应用程序和库的系统包。LTTng 主要由内核模块和动态链接库(用于跟踪应用程序和动态链接库)组成。它由一个会话守护进程控制,该守护进程接受来自命令行界面的命令。该项目允许将跟踪信息转换为用户可读的日志,并提供一个用于读取跟踪的库,即

LTTng 不仅使用 Linux 内核中的跟踪点 (),还使用各种其他信息源,例如和 Perf(Linux 中的性能监视工具)。这对于调试各种错误非常有用,否则这些错误将非常具有挑战性。例如,这包括并行和实时系统中的性能问题。此外,还可以添加用户定义的工具。LTTng 旨在最大限度地减少性能影响,在没有跟踪的情况下,对系统的影响应该几乎为零。

.0:使用简单的用户界面--lttng命令集成用户空间和内核空间跟踪。还有一些其他功能:

* 多架构和多架构

支持多种发行版和多种架构

* CTF(跟踪)()

有一种常见的跟踪格式

* ,(快速),,CPU单元(PMU)和,

支持探测点、详细的系统调用跟踪、函数跟踪器、CPU 性能监控以及

* 和

如上所述,它为用户空间和内核提供跟踪接口

* 在跟踪中将 添加到“” (例如任何 PMU、pid、ppid、tid、通信名称等)。所有额外的 都是 ,以每个为基础(对于 和 事件 ID,它们是 )。

可以将上下文信息附加到跟踪中的事件(例如 PMU 性能监控单元、pid、ppid、tid、通信名称等)。所有附加信息均收集并放置在跟踪组件中。

1.本文背景如今,多核、集群、嵌入式系统使得Linux系统变得越来越复杂,开发者面临的bug也越来越复杂。这些bug可能只在产品中出现,在调试过程中消失,或者很少出现,只会让系统变慢一点。这些特点使得传统的内核调试工具变得无效。因此需要调试工具来处理这些问题。这些工具必须对系统性能影响很小,这样才能在产品中使用。

内核跟踪就是这样一种工具,它提供了一种了解内核行为和调试用户空间程序和内核故障的有效方法。但是,在某些情况下,内核跟踪是不够的。例如,一个程序可能会发出大量请求,或者它可能有许多线程,这使得仅从内核空间角度进行跟踪非常困难。所以在这种情况下,应用程序空间程序也需要被跟踪。而且要跟踪的用户空间事件必须与内核事件相关。

本文介绍了一个名为 LTTng 的用户空间跟踪器,它可以实现上述功能——同时跟踪用户空间应用程序事件和内核事件。

什么是?跟踪是一种用于了解或监控系统运行情况的技术。跟踪器是用于跟踪的软件。跟踪可用于调试许多错误,包括复杂并行系统或实时系统中的性能问题。

跟踪与日志记录非常相似:它基本上记录系统中的事件。但是,与日志记录相比,它记录事件的级别较低且频率更高。因此,必须优化跟踪以处理大量数据而不会对系统产生重大影响。跟踪通常每秒生成数千个事件。它们通常处理数百万个事件和兆字节到数十千兆字节的数据。

跟踪可能包括操作系统内核的各种事件(例如中断请求处理函数的进入/退出、系统调用的进入/退出、调度情况、网络情况等),也可能包括应用程序的事件。

事件踪迹列表可以像日志文件一样手动读取,但是由于工作量太大,踪迹分析器或读取器需要根据这种大量的数据生成图形或统计数据。这些分析软件需要专门设计来快速处理这种大量的数据。

2. 相关研究*:提供原始用户空间跟踪的工具,可以跟踪系统调用和信号。但会造成较大的性能损耗。不过,它仅限于跟踪部分系统调用和信号,能够以较小的损耗获取跟踪信息。

*: 静态定义跟踪 (SDT) 可用于用户空间应用程序。它在运行时链接器中通过特殊支持实现。[6]

*:好像已经实施了SDT。【2】

* LTTng:多年来已经提供了几种不同的用户空间跟踪技术:

1)——该技术声明了两个新的系统调用,第一个用于注册事件类型并返回事件ID,第二个用于记录事件,它需要事件ID和有效载荷

2)——不需要内核支持,程序把事件写入自己的地址空间缓存中,跟踪器为每个共享缓存的线程创建一个伴随进程,伴随进程使用无锁算法来使用该缓存。

---- 这两种方法都被弃用了,并提出了一种新的替代方案,即一个简单的系统调用,以字符串作为参数。调用它将生成一个以字符串为参数的事件,... 此功能来自 (/debug/ltt/),向此文件写入一个字符将创建一个名为 user- 的事件,事件的参数是字符串。

* :具有类似的功能,称为 。

-----

引用:

【6】Frank. 适用于x86/x64的。

【2】

3.具体实现****重点这里主要介绍一下UST(LTTng,LTTng User Space )的结构,首先我们来看看UST的重要设计目标:

* 需要完全独立于内核空间跟踪器。分析时应关联用户空间跟踪和内核空间跟踪的结果。

* 需要可重入并支持多线程和信号处理事件的跟踪

* 快速路径中没有系统调用

* 追踪结果不可复制

* 需要能够跟踪共享库中的代码

* 检测点需要支持无限多个参数

* 不需要对链接器和编译器进行特殊支持

* 跟踪格式需要紧凑

3.1 跟踪库* - 跟踪库

* - 用于无锁操作数据结构的用户空间读取/复制/更新库 [4]

* - Linux内核提供用户空间API库(如码查看、连接表机制、kref类型机制等)[5]

-------

引用:

【4】与Paul E. Read-Copy- .

【5】—马克和简..

3.2 时间 LTTng 的用户空间跟踪器不依赖于内核,但为了合并内核跟踪和用户空间跟踪进行分析,所有跟踪器的时间戳必须一致(必须来自同一个时钟源)。

合适的时钟源必须具有较高的精度,以保证在核心之间保持一致;还必须保证从用户空间和内核空间访问它的开销很小(因为系统调用的代价很高)。

UST 中使用的时钟源由内核提供,使用 rdtsc 指令直接读取。内核跟踪器也使用此时钟源,读取速度非常快,并且可以在多个内核之间进行同步。

3.3 探测点探测点由内核LTTng使用的两个端口组成:和,它们的使用与内核中相同。

插入非常简单,只需在需要记录事件的地方插入一行代码即可。在下面的代码中我们可以看到 mark 的使用非常类似:

(主要,“%d%s”,v,st);

设计性比较好。从下面的代码可以看出,它基本不包含格式字符串,但是需要一些声明,这些声明一般分别放在C文件和头文件中。因此,它更适合放在永久代码中(需要时,只需修改头文件中的声明即可)。它更适合在调试过程中添加。(用于在调试过程中打印信息)

(v,st);

因此,所有包含探测点的库和可执行文件都需要向跟踪库注册自己的信息,并在可执行文件或动态对象中注册一个列出自身的特殊字段。这可以通过调用添加构造函数的宏来完成。

3.4 缓存机制 缓存机制是无锁 LTTng 算法的一个移植,其设计很大程度上受到 K42 操作系统和 Linux 内核中的 Relay 系统的启发 [8]。事件被写入一个循环的、每个进程的缓冲区,该缓冲区被分成多个子缓冲区。默认情况下,当某个子缓冲区已满时,刷新守护进程会刷新它。在另一种操作模式 () 下,循环缓冲区会被不断覆盖,直到被清除,这对于等待一些罕见的 bug 出现非常有帮助。

每个事件都与一个(通道?)相关联,并且每个进程都有一个显式缓冲区。每个缓冲区的子大小有多种选择。在模式下,它允许通过以较低的速率在缓冲区中放置一些时间来长时间保留这些事件的缓冲区。

缓冲区分配在 V 的共享内存字段中,因此 flush 守护进程可以将它们映射到自己的地址空间中。

写入缓冲区时采用经过形式化验证安全性的无锁算法,保证可重入、多线程、安全性。

-----

【8】Karim, R, R Moore, and M.: 数据从用户空间到用户空间的转换。在 Linux 中,,,,,2003 年。

3.5 跟踪控制用户空间跟踪器肯定需要一个控制方法,例如,我们需要启动/停止跟踪,启用/禁用/列出检测点,以及控制跟踪参数(例如子跟踪器的大小和数量)

一个名为 ust 的辅助应用程序专门用于完成这项工作。它通过 UNIX 与被跟踪程序进行通信,被跟踪进程中的特殊线程负责处理此通信。此线程不会在应用程序启动时启动,这使得 UST 看起来不那么具有侵入性。相反,当跟踪库构造函数为特定信号注册信号处理程序时,监听线程会在收到该信号时启动。此线程在预定义目录中创建,并以进程 ID 命名。

3.6 数据收集 有一个进程负责收集系统中所有被跟踪进程的跟踪数据。这个进程叫做 ustd。收集数据使用一个命令,该命令调用 ustd 并将其定位在被跟踪程序的同一目录中。通过这个命令,ustd 可以接受指令并收集与给定 PID 对应的缓存跟踪数据。

ustd收到命令后会创建一个线程去连接被跟踪的进程,首先如果还没准备好就会发送SIGIO信号,然后会申请共享内存去映射缓存。

在能够使用被跟踪的应用程序后,线程将发送获取下一个子许可的请求。当下一个子许可已满时,将发送回复。收到回复后,线程会将其数据写入跟踪文件(从共享内存段读取)。

3.7 跟踪过早和过晚 UST 使用一种特殊机制来确保跟踪在程序执行时启动:程序运行时带有两个环境变量,这两个环境变量由跟踪库构造函数解析。设置这些环境变量是为了确保在程序进入其 main() 函数时跟踪已启动。

但是,在程序结束时结束跟踪会更加困难:程序可能会崩溃,然后无法通知 ustd 获取最后的子信息,或者更糟的是,程序在跟踪映射其缓存之前就结束了。在前一种情况下,跟踪的最后一部分会丢失;在后一种情况下,整个跟踪都会丢失,因为当用户断开连接时,内核会释放共享内存段。

当程序崩溃时,内核会关闭连接,但 ustd 可以检测到断开连接并在缓存上运行崩溃恢复程序。这个程序会识别哪些子进程有未记录的数据以及可以恢复多少数据。这些数据会被恢复程序附加到跟踪文件中。对于如何识别子进程中的数据是否有效,会用到映射缓存和共享内存段的原子算法中使用的一些计数器。

当程序生命周期太短以至于 ustd 无法映射内存时,就会出现新的问题。(UST 目前不支持这种情况下跟踪)但计划使用析构函数来处理此问题。如果跟踪库的析构函数检测到已记录跟踪但其缓冲区尚未映射,它将延长程序生命周期,以便 ustd 有足够的时间进行映射。

4. 性能测试及其他

在一篇论文里,你通常要测试自己的东西,证明它是有价值的,而且性能还是很不错的!所以这里就不翻译了!这篇文章的主要价值在于看第三节,也就是主要的设计与实现思路。

扫描二维码推送至手机访问。

版权声明:本文由本站发布,如需转载请注明出处。

转载请注明出处https://www.web-based-papers.com/post/714.html

标签: ustd
分享给朋友:

相关文章

实时监控比特币交易的客户端应用程序,多种服务支持,安全可靠

实时监控比特币交易的客户端应用程序,多种服务支持,安全可靠

支持多语言服务 安全存储我们将绝大多数数字资产存储在安全的离线存储中,并可以为您提供各种专业的服务咨询。 发送和接收数字货币的即时消息,存储在我们服务器上的数字货币的保险包括保险条款。 可以立即转换为...

OKEX全新更新版发布:期货交易功能与界面设计全面升级

随着数字货币市场的快速发展,出现了更多的交易平台。在许多平台中,Okex是一个始终因其稳定性,安全性和创新而受到用户喜爱的交易平台,最近推出了新的更新版本,为用户带来了新的体验。此更新中包含哪些新功能...

欧易OKX加密货币交易所全面介绍!服务5000万人,业务覆盖180多国

欧易OKX是一家加密货币交易所,其总部注册于塞席尔,由徐明星在2017年创办,是世界上最大的加密货币交易所之一,服务用户数量高达5000万人,服务范围多达180多个国家,下文将为大家全面介绍第二大加密...

2024年国内十大虚拟币交易APP推荐:安币等主流平台全解析

2024年国内十大虚拟币交易APP推荐:安币等主流平台全解析

广告x 所有主流交流都可以使用,立即下载并输入加密世界 立即下载以享受新的用户福利 立即下载 近年来,虚拟货币交易已成为一种新兴的投资方法,引起了许多投资者的关注。在我的国家,尽管虚拟货币交易市场...

OKK交易所欧意注册下载教程地址看视频交易

OKK交易所欧意注册下载教程地址看视频交易

OKK交易所欧洲注册下载教程地址观看视频 OKX,欧洲意大利交易所,是全球领先的加密生态系统构建者,成立于2017年5月31日。 OKC,拥有全球顶级的加密资产交易平台、Web3.0门户-Web3以及...

如何在ave.ai交易所进行交易及使用行情软件的详细指南

如何在ave.ai交易所进行交易及使用行情软件的详细指南

随着当今日益繁荣的数字货币市场,越来越多的投资者开始关注并参与加密货币交易。作为著名的数字货币交易平台,Ave.ai 吸引了许多投资者的注意。如何在Ave.ai交易所进行交易?如何使用AVE.AI市场...

加入欧意,探索元宇宙世界!

探索DeFi,DApps, NFTs 和GameFi的世界,和OKX一起创造未来!