[发明专利]一种基于动态插桩技术的数据包处理时延分析方法有效
申请号: | 201110309258.6 | 申请日: | 2011-10-13 |
公开(公告)号: | CN102346710A | 公开(公告)日: | 2012-02-08 |
发明(设计)人: | 刘家军;郝沁汾;张伟 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F15/163 |
代理公司: | 北京慧泉知识产权代理有限公司 11232 | 代理人: | 王顺荣;唐爱华 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 动态 技术 数据包 处理 分析 方法 | ||
(一)技术领域
本发明涉及一种基于动态插桩技术的数据包处理时延分析方法,具体涉及到一种运用基于动态插桩技术对数据包处理过程中操作系统内核的各个函数的处理时延进行分析的方法,属于计算机技术领域。
(二)背景技术
近年来随着网络应用的不断丰富,网络分布越来越广,网络流量也越来越大,对于数据中心的网络性能提出了新的需求和挑战。为了应对这种挑战,数据中心有必要对网络结构进行调整,提高服务器的处理能力。然而,目前许多数据中心为了提高服务器的利用率、简化服务器的管理和维护、提高应用程序的可用性、降低成本,大多开始采用虚拟化技术。虚拟化技术有很多的优势,但也会引入额外的开销,尤其是在I/O虚拟化方面。在虚拟化环境下,数据包的处理过程更加复杂,传输路径更长,使得总体的网络性能很差。
为了对网络性能进行优化,就必须知道系统的瓶颈在哪儿,系统的哪些环节开销最大,然后有针对性的进行改进。目前有许多人在研究如何提高虚拟化环境下的网络性能,这些研究大多是从虚拟化的原理出发,试图降低虚拟化的开销,提高网络带宽,降低网络时延。然而,这些研究并没有对数据包的处理时延进行量化的分析,目前也没有工具能够自动的分析数据包从接收到发送整个处理过程中的各个函数的时延。本发明基于动态插桩技术,设计了一种能够自动分析操作系统内核各个函数在数据包发送和接收过程中的时延的方法。
插桩技术是一种在软件测试中有广泛的运用,GCC编译器也提供相应的功能用于测试代码覆盖率,有些操作系统也支持插桩技术,如Solaris的DTrace、Linux的Kprobe等。动态插桩技术则更近一步,能够在程序运行的时候动态的将一段代码插入到程序的某个位置用于收集信息或改变程序的行为,而不需要对原程序作任何修改。本发明就是基于动态插桩技术对操作系统数据包处理时延进行分析的。
(三)发明内容
1、目的
本发明的目的是提供一种基于动态插桩技术的数据包处理时延分析方法,它能够统计出数据包处理过程中操作系统内核的每个函数所消耗的时间以及在队列中排队等待的时间,为进一步的网络优化提供了强有力的依据。
2、技术方案
本发明的技术方案如下:一种基于动态插桩技术的数据包处理时延分析方法,其总体的框架如图1所示,图1中的机器可以是真实的计算机,也可以是通过虚拟化软件虚拟出来的虚拟计算机,图1中的机器1和机器2主要是从功能的角度来划分的,它们可以同时部署在同一个物理机上。机器1的主要功能是提供控制界面,分析并输出结果,机器1上部署了发包模块和统计模块,机器2的主要功能是收集信息,并将收集到的信息反馈给机器1,机器2上部署了插桩模块和收包模块。具体流程如图2所示,本发明一种基于动态插桩技术的数据包处理时延分析方法,该方法包括以下步骤:
步骤201.在机器2上收集内核符号表,获取内核函数与地址的对应关系,输出可以进行插桩的函数列表,并传递给机器1。
步骤202.在机器1上根据优化的目标,确定需要分析的函数,输出需要插桩的函数列表,并传递给机器2。
步骤203.将步骤202所确定的函数列表传递到机器2上,机器2运用动态插桩技术在需要监控的函数的头部插入一段代码,该代码会将函数的地址和当前的时间戳写入数据包。
步骤204.启动收包模块和发包模块。机器1开始发送数据包,数据包传递到机器2的内核之后,若检测到数据包的目的地是机器2的收包模块的话,就将当前正在执行的函数的地址和时间戳写入数据包。当数据包到达机器2的收包模块时,收包模块将数据包返还给机器1,机器1的发包模块将来自机器2的数据包以文件的形式存储起来。
步骤205.机器1统计所有来自机器2接收模块的数据包,计算并输出统计结果。
其中,步骤201在机器2上收集内核符号表是要收集正在运行的内核的符号表,内核符号表中记录了内核函数和变量在内存中的地址,在Linux系统下,通过读取/boot目录下与内核版本相对应的System.map或直接读取/proc/ksyms就可以获取到内核符号表了,此外,还可以通过分析内核文件或内核调试信息来获得的内核符号表。由于内核符号表中不仅记录了内核函数的在内存中的地址,还记录了内核变量的地址,因此需要对读取到的内核符号表进行分析,过滤掉那些非函数的内核符号,输出所有内核函数的符号表,这些函数就是可以进行插桩的函数列表,确定之后,将其传递给机器1。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110309258.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:注射器芯杆
- 下一篇:电路板零配件整理装置