eBPF技术在操作系统动态跟踪中的应用研究.docx
《eBPF技术在操作系统动态跟踪中的应用研究.docx》由会员分享,可在线阅读,更多相关《eBPF技术在操作系统动态跟踪中的应用研究.docx(7页珍藏版)》请在第一文库网上搜索。
1、近年来,随着物联网、大数据、云计算等新技术的广泛落地,大量创新应用被构建在底层操作系统之上,而此类应用一旦出现需深入排查才能定位的复杂问题,往往要求技术人员深入了解系统的底层运行情况和技术原理,否则不仅难以精准定位问题根源,甚至还可能丧失对整个生产系统的掌控力。针对这一问题,业界研究人员多年来开展了各类尝试,包括设置断点、增加输出信息、实施静态插桩等,但上述静态跟踪技术大多需要执行停止服务、修改代码或重新编译等操作,从而耗费大量的时间和精力。对此,动态跟踪技术的出现成功克服了上述缺点,既不需要停止服务,也无需修改程序代码。一、动态跟踪技术概述本质上讲,动态跟踪技术是一种操作系统级别的调试技术,
2、旨在从操作系统的内核态及用户态实现深入跟踪和分析,从而方便、快捷地定位故障问题。1基本原理动态跟踪技术一般是基于操作系统内核实现,因此对整个操作系统拥有绝对的控制权限,而异常和事件机制则是动态跟踪技术的实现基础,即当操作系统运行过程中出现异常时,会产生特定事件,且不同异常对应着不同的处理方式。例如,操作系统中的常见异常包括中断、陷阱、故障等。其中,中断通常是由CPU外部设备引发的异常,因其并非由专门的指令产生,所以可以认为这是一种异步行为,从而使动态跟踪具备了技术可行性;陷阱是一种由程序主动发起的异常,比如进程从用户态切换到内核态时会执行系统调用,而这一过程如果产生错误即可能引发故障,此时处理
3、器会将控制权交给故障处理程序。实际上,不论处置哪种异常通常都会遵循一个基本的处理机制,即异常产生时首先会触发异常码,然后相关指令会从操作系统提供的异常码表中查询此异常码对应的处理程序并触发,最后再返回异常位置继续执行。操作系统异常事件处理机制如图1所示。6.继续执行5.返回产生中断处图1操作系统异常事件处理机制结合上述机制,动态跟踪技术实现系统运行情况跟踪即是借助了此类陷阱异常,而对陷阱的处理程序则通常被称为“探针”。例如,部分探针是在程序或操作系统内核代码中事先定义,只有在显示开启后才运行,因此被称为“静态探针”。静态探针主要包括在操作系统内核中使用的跟踪点,以及在应用程序中使用的用户静态定
4、义跟踪探针。此外,另有部分探针是在程序或操作系统内核运行时动态添加,不需要显示开启,因此被称为“动态探针”。动态探针的预定义位置通常位于程序的函数入口及出口处,以断点形式存在,当程序执行到断点位置时会自动转入动态跟踪处理函数,从而实现动态跟踪的目的。实际运行时,根据预定义断点的位置及处理机制,动态探针通常可分为KPrObe、KretprobeUPrObe以及UretPrObe等四类。其中,KPrObe跟踪的断点位置在操作系统内核代码的函数入口处,可实现对系统内核相关函数的动态跟踪(如函数名及传递给函数的参数、寄存器、堆栈等系统信息)。Kretprobe跟踪的断点位置在系统内核代码的函数出口处,
5、主要作用是探测内核函数的退出状态、函数执行耗时、性能统计等。UPrObe和UretProbe的原理分别类似于Kprobe以及Kretprobe,不同之处在于它们主要用于对用户态函数的动态跟踪,而不是跟踪操作系统的内核态函数。2.动态跟踪工具目前,在主流的1inUX操作系统中,最常用的动态跟踪工具主要有FtraC0、SyStemTaP以及eBPF技术等。其中,FtraCe提供了基本的静态、动态跟踪点,能够跟踪函数的入口及出口,其静态探针需要开启相关的内核配置选项,且Ftrace的动态探针利用Mcount机制,可在编译内核时预先在每个函数的入口处保留若干个字节,并在内核运行时动态地将这些保留字节替
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- eBPF 技术 操作系统 动态 跟踪 中的 应用 研究