本发明涉及跨架构的操作系统性能对比测试领域,具体涉及不同架构下的操作系统中内核相关的系统调用的表现的细粒度对比,并深度挖掘不同架构下的性能异常。
背景技术:
1、近年来,risc-v芯片架构发展如火如荼,其灵活、简洁、开源、拓展性强的特性受到广大开发者的喜爱。risc-v也入选了2023年mit科技评论十大突破性技术,认为“risc-v有望成为改变一切的芯片设计”。与此同时,不可否认的是,risc-v的发展还有很大的上升空间,其开发生态环境也尚未成熟。risc-v架构最早起源于2010年的加州伯克利分校,而同为精简指令集的arm架构,于1991年已经成立了公司进行芯片技术的商业化使用。risc-v芯片板卡的性能和arm板卡还是有一定的差距,这其中既有硬件的影响,也有基础软件适配的影响。要想取得整体性能的提升,软硬件的改善需要同步进行。硬件规格提升的同时,可能也会产生软件的适配问题导致没能达到预期的性能提升。基础软件是计算机系统的重要组成部分,承担管理底层硬件为用户提供服务的作用,而操作系统正是基础软件中的重要一环。
2、目前risc-v和arm的跨架构性能对比测试主要集中在一些三方库和工具的整体表现,通过整体的性能表现进行分析评估。但是在操作系统这一基础软件上的跨架构测试,还存在一些挑战:1)不同架构之间存在硬件差异,如何区分性能差异的来源;2)操作系统功能复杂体量大,如何细粒度地进行跨架构性能对比;3)如何对性能数据点进行异常的裁定,筛选出某架构下具有明显性能缺陷的部分。尽管操作系统在不同架构下会有不同的性能表现,但是当运行相同的测试程序时,操作系统会对其有相似的响应,在保证相同的内核版本以及内核选项的前提下,实现相同响应功能的内核态函数上下文也是相似的,可以以此为性能表现单元,进行跨架构的对比测试。
技术实现思路
1、本发明提供一种新的方法,通过perf工具细粒度的信息采集,来完成对操作系统的跨架构性能对比异常挖掘,通过可跨架构评估指标的选择,对操作系统的跨架构性能表现进行综合评估。该评估方法基于黑盒模型的思想,通过性能指标进行整体评估,利用已有的较为成熟的异常检测方法,自动检测出超出硬件差距正常范围的性能对比异常。
2、本发明采用的技术方案如下:
3、一种跨架构的细粒度操作系统性能异常挖掘方法,包括以下步骤:
4、在数据获取阶段,进行测试用例的多次运行,利用工具进行操作系统中性能相关数据的采集,得到不同架构下的原始性能数据;
5、在数据处理阶段,对原始性能数据进行细粒度的划分,并进行跨架构的对比评估,筛选出其中性能表现异常的缺陷点。
6、进一步地,上述方法还包括在前期准备阶段,该阶段进行测试环境、测试用例以及测试工具的确定,检测条件是否满足后续进展的需要。
7、进一步地,所述前期准备阶段包括:
8、芯片板卡的选择,尽量选择硬件规格相近的芯片板卡,例如cpu数、cpu主频、cache大小等硬件规格尽可能一致,降低硬件规格差异带来的性能影响;
9、测试用例的选择,尽量选择会引起系统调用,并且涉及内核态函数执行的测试集,以此来进行操作系统相关的数据采集与性能测试;
10、软件环境的选择,选择相同版本的基础软件,例如内核版本、内核选项、编译器版本以及编译优化选项均保持一致,避免基础软件版本差异带来不同架构下的性能差异;
11、采集工具的测试,确定实验环境之后,需要进行采集工具的预实验,确保采集工具能够采集到性能数据以及相应的上下文调用栈。
12、进一步地,所述数据获取阶段是进行实验的阶段,利用工具进行测试用例运行时的细粒度性能数据采集,以具体的函数执行调用栈为单位进行数据点的划分,以此作为后续对比匹配和异常检测的数据基础。同时,为了减少实验误差,每个测试用例都运行多次,最后一并进行后续的数据处理。
13、进一步地,所述数据获取阶段在不同架构上运行相同的测试用例,使用perf等工具进行细粒度的架构无关的性能指标的采集,并记录对应的上下文函数栈,以此作为性能分析单位。
14、进一步地,所述数据处理阶段对不同架构之间的上下文集合进行匹配,获取在不同架构下实现相同功能的上下文对,并且计算该上下文对在不同架构间的相对性能差异,之后利用异常检测算法,从性能差异的集合中筛选出可能由于架构适配原因导致的性能缺陷异常点;根据异常检测算法给出的可能的性能缺陷异常点,通过上下文函数栈的内容进行深入代码的查看,确定引起性能缺陷的原因。
15、进一步地,所述数据处理阶段包括:
16、同一架构下的上下文合并:由于在数据采集阶段进行了多次相同用例的运行,首先进行单独架构下的重复上下文的合并,并将其数据的平均值作为上下文的相应性能指标;
17、跨架构的上下文匹配:对不同架构下的上下文进行调用栈的匹配,当函数调用栈完成匹配时,视为这二者上下文在不同架构下完成了相同的功能,对其性能数据进行对比,即可获得上下文跨架构的性能相对差异;
18、异常检测:上下文跨架构匹配之后,得到了许多不同上下文的跨架构性能相对差异,这些差异之中会有部分是架构之间的正常差异,而有一部分则是超出了正常范围的异常差异,通过异常检测算法,将这部分异常差异筛选出来,作为后续的待验证的操作系统性能缺陷;
19、结果分析:对异常检测的结果进行分析,以性能异常上下文的函数调用栈为依据,深入内核代码中进行查看,确认函数在不同架构的实现是否有差异,或者发现函数的相同实现在不同架构下的执行是否有性能差异,最终确定操作系统在某一架构下的性能缺陷所在,为后续的移植适配优化提供方向。
20、进一步地,所述跨架构的上下文匹配包括:
21、用户态和内核态的划分:通过系统调用或者中断处理接口,将函数栈的内核态和用户态区分开;
22、用户态函数栈匹配:当尝试匹配两个用户态调用栈时,以长度较小的用户态调用栈为基准,对其中每一项函数尝试去另一架构用户态调用栈中寻找匹配,只有所有函数均匹配上才称该对上下文的用户态调用栈匹配成功。
23、内核态函数栈匹配:从内核态栈底开始进行跨机构的依次匹配,当匹配项的数目超过70%并且内核态调用栈长度相差不超过1时,视为内核态匹配成功;
24、只有当用户态和内核态函数调用栈均匹配成功时,才视作跨架构上下文匹配成功。
25、进一步地,所述跨架构的上下文匹配还包括函数名匹配,所述函数名匹配的方式包括:
26、跨架构的函数名称接近,调用python的fuzzywuzzy库中fuzz.ratio函数进行模糊匹配,得分超过一定数值时视为函数名匹配成功。
27、在调用栈中的前两项和后两项均匹配成功,可能是由于架构差异使得函数名相差较大,但二者很有可能实现了相同的功能,也视作函数匹配成功。
28、进一步地,所述结果分析包括:对于已经被识别为异常项的上下文,去尝试进行和正常项的匹配,并统计某一上下文被识别为正常和异常的次数,计算被识别为异常的百分比;该百分比越高且异常次数越多,说明该性能缺陷被误识别的概率越低,发生得越频繁,越具有深入挖掘性能差异的可能性。
29、一种跨架构的细粒度操作系统性能异常挖掘装置,其包括:
30、数据获取模块,用于进行测试用例的多次运行,利用工具进行操作系统中性能相关数据的采集,得到不同架构下的原始性能数据;
31、数据处理模块,用于对原始性能数据进行细粒度的划分,并进行跨架构的对比评估,筛选出其中性能表现异常的缺陷点。
32、与现有技术相比,本发明的积极效果为:
33、1)现有工作集中在跨架构的工具和三方库性能对比上,然而操作系统这类庞杂的基础软件对计算机系统的整体性能会有更全面的影响。采用本发明方法挖掘操作系统的性能缺陷所在,有利于提升系统整体的性能,提高操作系统对不同架构的适配性,也能帮助理解不同架构之间的区别。
34、2)现有工作对操作系统的测试,更多是集中在测试用例的整体表现上,而本发明则是对操作系统内核本身的性能进行细粒度的划分提取,高精度地定位性能缺陷所在。本发明利用内核态更深更复杂的调用栈,进行高精度地上下文区分和匹配,化整为零地完成对操作系统的性能分析。
35、3)本发明提出了一种跨架构评估性能的方法,将微架构等硬件规格差异考虑在内,以黑盒模型的方式进行全面而细粒度的异常检测。不同软件特征在相同硬件上也会有不同的对比表现,通过黑盒模型的指标检测,反向定位软件(即操作系统内核部分)的实现性能缺陷。